进入和退出PHP模式
在看到这个小数字之前,我对PHP的理解还不错。我不明白这个逻辑在做什么进入和退出PHP模式,php,Php,在看到这个小数字之前,我对PHP的理解还不错。我不明白这个逻辑在做什么 strpos()必须返回非false 您正在使用Internet Explorer strpos()必须返回false 您没有使用Internet Explorer 什么时候需要在PHP模式中跳进和退出PHP模式,即使在PHP块的中间。 这个方法与仅仅使用PHP动态输出HTML有什么不同? 在我看来,这种风格与PHP不一致。建议这样做吗 就浏览器而言,这并没有什么不同。它更具语义,将显示代码排除在逻辑代码之外。一般来说,
strpos()必须返回非false
您正在使用Internet Explorer
strpos()必须返回false
您没有使用Internet Explorer
什么时候需要在PHP模式中跳进和退出PHP模式,即使在PHP块的中间。
这个方法与仅仅使用PHP动态输出HTML有什么不同?在我看来,这种风格与PHP不一致。建议这样做吗 就浏览器而言,这并没有什么不同。它更具语义,将显示代码排除在逻辑代码之外。一般来说,对于上述内容,您将拥有一个视图(MVC),并将尽可能多地从HTML中提取PHP,因此,如果团队中有不懂PHP的web设计师,他们将更容易修改HTML。这只是一种不同的样式。只要您习惯了以这种方式工作,就不会有性能差异(执行方面),生产方面也不会有性能差异 有些人这样编码是因为在编辑器中,当您在PHP中封装HTML时,编辑器不会像单独处理HTML时那样对HTML格式进行着色 话虽如此 当您必须使用这种格式进行重大设计更改时,您必须重写所有代码。 此样式的问题: 它也有它的缺点,例如,当你开始包含很多不同类型的文件时,因为你使用的是Javascript之类的东西,这使得追踪问题变得更加困难,而且它更像是一种新手编程风格
PHP
、Javascript
和HTML
,所有这些都是相互关联的。如果Javascript的DOM
中有错误,您需要在PHP的include()
中查找代码行(假设在前端编写并提供代码后,您正在使用PHP Include作为标题。这不会导致PHP错误,因此由于缺少代码文档,可能需要搜索x个包含。当您在所有代码上搜索for
或if
时,它将匹配多个相同的文件
如果Javascript
或HTML
中的格式出现错误,破坏了PHP
,你就必须在包含中寻找这些错误。这非常混乱,但从技术上讲,这一切都是功能性的。如果人们只按照自己知道的方式编程,可能会变得非常混乱。而且调试起来非常困难
如果您遇到了一个或多个类似问题,请将其提交给团队经理(如果您不是经理),并解释时间损失和预算增加的编程时间。当所有这些都转化为金钱时,他们会很快得到想法
注:所有屏幕截图均来自Dreamweaver,默认代码着色更可读的版本(尽管有单独的模板系统)为:
<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) : ?>
<h3>strpos() must have returned non-false</h3>
<p>You are using Internet Explorer</p>
<?php else : ?>
<h3>strpos() must have returned false</h3>
<p>You are not using Internet Explorer</p>
<?php endif; ?>
strpos()必须返回非false
您正在使用Internet Explorer
strpos()必须返回false
您没有使用Internet Explorer
但是是的,这是常用的。它很好,因为:
- 它很快,解析器直接跳过非PHP块,而不计算它们
- 很简单
- 没有乱七八糟的引语或不可读的反斜杠狂欢
- 即使在不太高级的编辑器中,语法高亮显示也很好
我不明白这个逻辑在做什么
一个重要的提示是,这里是PHP解释器,而不是浏览器
我觉得这种风格不太一致
你需要考虑一下。添加一些有风度的JavaScript和样式到这个愚蠢的HTML,并重新考虑结果代码。
对于PHP,建议这样做吗
当然可以。
这实际上是输出XHTML块以保持其外观、结构、突出显示和缩进的唯一明智的方法。这只是PHP的另一种风格——如果您正在处理一大块HTML,并且想要打印出一两个变量,在数组上循环或使用一些简单的if语句,那么这种方法可能非常适合您的应用程序目的。+1用于提及设计团队。在我看来,友好协作的代码是最好的:)这个答案有点偏离了一个完全不同的方向。你经常需要模板中的一些逻辑。这个问题只是关于跳入和跳出PHP块的风格,而不是这些块做什么。不同的方向是什么?我们都同意这是一个风格决定,而不是行为决定。我试图回答w为什么我认为人们选择这种风格,根据我的经验,这是因为他们通常担心前端开发人员会把事情搞砸。你在评论中提到了转义引号之类的东西。这是一种风险较小的方式。另外,还记得PHP最初是作为HTML预处理器的。跳过
<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) : ?>
<h3>strpos() must have returned non-false</h3>
<p>You are using Internet Explorer</p>
<?php else : ?>
<h3>strpos() must have returned false</h3>
<p>You are not using Internet Explorer</p>
<?php endif; ?>