有点疑惑,经常在 php 文件里看到这样插入 html 代码块,请问这样是正确用法吗,有没有潜在的规范问题?
1
VKMEPR OP 或者有没有其他更好的 html 代码插入方法?
|
2
lichao 2018-07-31 15:59:52 +08:00
<?php include 'my_js.php'; ?>
|
4
580a388da131 2018-07-31 16:08:15 +08:00 via iPhone 1
定界符 <<<
|
5
helionzzz 2018-07-31 16:08:48 +08:00
混写倒是没什么 只是维护修改的时候可能会比较头疼
|
6
580a388da131 2018-07-31 16:12:40 +08:00 via iPhone
正文的方法是最常见的,没啥问题。
大量的话现在一般用模版引擎。 |
7
mhycy 2018-07-31 16:13:27 +08:00
PHP 支持这么做,只是 HTML 代码不是应该和 PHP 代码分离开来么?
至少放入到模板引擎才对 |
8
VKMEPR OP @580a388da131 知道<<<和 echo 可以插入。疑惑截图那种倒序闭合标签用法是否有副作用什么的
|
9
airdge 2018-07-31 16:14:42 +08:00
echo <<<EOT
xxxxxxxx EOT; |
10
VKMEPR OP |
11
airdge 2018-07-31 16:16:08 +08:00
echo <<<ABC
xxxxxxxx ABC; |
13
ben1024 2018-07-31 16:20:14 +08:00
可以,但不建议
用个模板引引擎吧[blade,smarty,twig] |
15
b821025551b 2018-07-31 16:22:08 +08:00
PHP 刚出来的时候就是这么用的,只是后来大伙越来越觉得难用,才拆分出来。只是目前来说,这种写法比较上古。
|
16
casztg 2018-07-31 16:24:16 +08:00
想当初大学里面作业就这样写·····
|
17
898601566 2018-07-31 16:57:26 +08:00
@580a388da131 EOF 这个思路我是认同的
|
18
1010011010 2018-07-31 17:03:32 +08:00
土味引用
|
19
nash 2018-07-31 17:35:13 +08:00
不推荐 感觉还停留在五年前 首选各种模板引擎 退一万步 echo <<<EOT
|
21
lookas2001 2018-07-31 17:54:45 +08:00 via Android
本来 php 就是这个样子的啊。只不过现在 php 越来越现代化这种用法慢慢变少了。
|
22
zjsxwc 2018-07-31 19:10:21 +08:00 via iPhone
本来就不符合现在的规范,看看 psr 规范去
|
23
SimbaPeng 2018-07-31 19:39:46 +08:00 via Android
没人发现这个标记写反了么?
|
25
Mac 2018-07-31 19:42:02 +08:00 via Android
有时候只是要输出一个简单的 html,那这种方法也没什么不可以的,没必要上升到的非用模板不可的地步
|
26
SimbaPeng 2018-07-31 19:42:59 +08:00 via Android
php 那个标记本来就是用来在 html 里插入 php 代码的
|
27
SimbaPeng 2018-07-31 19:48:42 +08:00 via Android
另外 php 本来就是一门没有规范的语言,那什么 psr 规范也不是官方的,官方的规范就是没有规范,随便你怎么写,233333
|
28
dawniii 2018-07-31 20:04:04 +08:00
php 本身就是模板引擎,用先进的模板引擎,感觉就是在模板引擎上又造一套模板语言。感觉把原生的 php 写工整点也还行吧,不过现在都是前后端分离比较多。
|
29
xhinliang 2018-07-31 22:59:51 +08:00
感觉回到了十年前。。。。
|
30
akira 2018-07-31 23:08:47 +08:00
规范不规范不知道,我就想知道这样的代码怎么维护
|
31
jswh 2018-07-31 23:28:55 +08:00
那些怎么维护的,你们都没用过 wordpress 嘛
|
32
edsgerlin 2018-08-01 01:51:34 +08:00
开发过 WordPress 插件的表示这种写法很常见啊。
|
33
caola 2018-08-01 02:10:58 +08:00
echo <<<'EOT' //如果以下内容中没有变量,请使用单引号才符合 psr 规范
xxxxxxxx EOT; 也可以写成变量: $add_my_js = <<<'EOT' xxxxxxxx EOT; echo $add_my_js; |
34
yangqi 2018-08-01 02:46:50 +08:00
@caola PSR 并没有规范这个,不加引号是 heredoc 语法,加引号是 nowdoc 的语法,php5.3 开始。两个都可以,没有本质区别。
|
35
msg7086 2018-08-01 05:10:21 +08:00
@nash 5 年前过分了。这差不多是 15 年前流行的写法。
10 年前就流行 Smarty 了,5 年前都已经过渡到框架了。 |
36
caola 2018-08-01 07:10:10 +08:00
@yangqi 加引单号不会解析内部的变量,不加或者加双引号是会解析的,在性能优化方面这点是要遵守的
证明你平时对单双引号的用法不注重, 然而在我们这里,对此严格要求,否则不给予提交到版本库里的代码通过 但凡你去看一些比较出名的,如 laravel,wordpress 等都会遵守 |
37
wulongqiu 2018-08-01 07:22:43 +08:00
这是 PHP 函数的基本结构和用法。
PHP 圣经里是这样写的“在一个函数中,花括号包括了完成所要求任务的代码。在花括号中,可以包含任何在 PHP 脚本的其他地方都合法的代码,其中包括函数调用、新变量或函数声明、require() 或者 include 语句、类声明以及 HTML 脚本”。 给出的示例是: ``` <?php function my_function() { ?> My Function was called <?php } ?> ``` |
38
hanxiV2EX 2018-08-01 07:24:26 +08:00 via Android
要么模板,要么前后端分开
|
39
wulongqiu 2018-08-01 07:26:16 +08:00
现在一般使用模板引擎来处理界面渲染,要么前后端分离开发模式。
|
40
supereric 2018-08-01 08:52:26 +08:00 via Android 1
本身就是模板引擎,所谓的第三方模板引擎除了接口不会 php 也可以做模板外还有啥?
<?=变量> 跟{变量} 没差别。 YII 了解一下 |
41
jrient 2018-08-01 09:04:52 +08:00
看着不舒服
|
42
imdong 2018-08-01 09:15:32 +08:00
PHP 原生支持语法,而且也是 PHP 的一个特色。
但是,由于太难用,也不好维护,这么写的人越来越少了。 |
43
sujin190 2018-08-01 09:34:32 +08:00
其实我觉得问题在于,在现在比较完善的框架比如 laravel 中,只有在渲染模板阶段才生成 html,之后才输出到网络,你这样写,很有可能 html 并不会出现在你想要的位置,甚至会破坏 html 的结构
如果是模板渲染是调用的函数,那么 return 返回字符串就可以了,干嘛要协成这样呢 |
44
KgM4gLtF0shViDH3 2018-08-01 10:11:34 +08:00
@imdong #39 特别小的项目我还是喜欢一把梭。写起来比模板还自由一点。
|
45
victoryss 2018-08-01 10:33:21 +08:00
根据实际情况来吧。单页、个人项目想怎么玩怎么玩,团队项目考虑可维护性。
|
46
zlhsvc 2018-08-01 11:10:40 +08:00
写法没有任何问题,只是不利于维护
|
47
killerv 2018-08-01 11:20:18 +08:00
PHP 本来就是这么用的,现在的模板引擎只不过在那个基础上做了一些看起来比较“美观”的做法,其实底层实现还是这样。当然如果项目比较大,还是用模板引擎比较好管理。如果小项目这样写没什么问题。
|
48
Clarencep 2018-08-01 11:22:27 +08:00
首先,从语法上是没有问题。但是,这样相当于直接 echo 了一小段 html 代码,即这个函数是有副作用的。
-- 有副作用的函数一定要谨慎使用。 我个人觉得最好使用 nowdoc/heredoc 的方式,然后通过 return 返回这段 HTML. 更灵活一些。当然 return 的话应该顺便改下函数名。 |
50
bdnet 2018-08-01 15:40:36 +08:00
不好维护 +1
MVC 了解下 |