当前位置: 首页 > 编程笔记 >

什么情况下可以不写PHP的闭合标签“?>”

吴和硕
2023-03-14
本文向大家介绍什么情况下可以不写PHP的闭合标签“?>”,包括了什么情况下可以不写PHP的闭合标签“?>”的使用技巧和注意事项,需要的朋友参考一下

在一些PHP项目里我们经常会看到有些PHP文件中的代码是只有开始标签,而没有结束标签的,那么什么情况下可以不写这个结束标签,而什么情况下又必须写?

对此我们先来看2个例子:

下面的代码可以正常运行:

<?php
  echo 123456;

下面的代码会报错:

<?php
  echo 123456;
  <p>abc</p>

原因分析:
前者是纯php代码,可以不写结束标签,也不推荐写结束标签;后者除了php代码,还有html代码,必须要写结束标签。
 
那么为什么不推荐前者写结束标签呢?
因为在不写php结束标签时,默认从开始标签往后都是php代码,如果有其他代码,那就会报错。php只能运行在php标签里面的脚本,在脚本之外的所有字符,包括你看不见的空格或者回车,制表符号,都是作为输出内容会response到客户端的,这样就有可能会产生意想不到的事情。例如文件里面使用了header函数,这个文件同时又包含了另外一个文件,并且被包含的文件的php标签外有空字符,这个时候会报header already send的错误。我们查看一些网页的源代码看到的开头部分有很多空格和换行,就是因为这个原因导致的。

解决方案建议:

库文件、或者一些class文件等只有纯php代码的文件不推荐加结束标签。

相信本文所述对大家的PHP程序设计有一定的参考价值。

 类似资料:
  • 我在java selenium上编写了一个try/catch块,我不明白为什么它不能工作。它应该在网页上检查一个web元素,如果没有找到,它应该抛出一个NoSuchElementException并转到catch块。真正发生的情况是,没有找到元素,执行也没有继续catch块,它通过测试(Selenium WebTest)并完全停止执行,我的测试也失败了。我还在main方法中包含了“throws N

  • 问题内容: 我正在学习CopyOnWriteArrayList类。 复制新阵列的目的是什么? 是其他线程读取数组吗? 因此,如果系统具有高并发性,并且大多数线程的操作都在读取而不是写入,那么最好使用。 问题答案: 如该链接所述: CopyOnWriteArrayList是Java 5并发API中引入的并发Collection类,以及它在Java中流行的表亲。 工具列表界面类似,并且但它的一个线程安

  • 本文向大家介绍在什么情况下选择webpack?在什么情况下选择rollup?相关面试题,主要包含被问及在什么情况下选择webpack?在什么情况下选择rollup?时的应答技巧和注意事项,需要的朋友参考一下 非要一句话区分的话 如果是用,如果是用其实界限并不是特别明显。在某些特殊情况下可以互用

  • 问题内容: 您是否知道在不关闭关联套接字的情况下中断Java读取的方法? 这是获取套接字输入流并转换为可中断的DataInputStream的当前构造策略: 这利用提供了对throwable的支持的方法的a 。 问题在于,在线程上调用中断再在原因上调用会导致底层套接字被关闭。 就我而言,我需要使套接字保持打开状态。该呼叫正在等待即将到来的用户输入,因此我正在使用中断将控制权传递回更高的组件,然后最

  • 问题内容: 我在使用Python模块时遇到了一些困难。我了解到,用C编写的内置模块就像Python解释器的一部分,因此它们属于内置命名空间,因此可供程序员轻松使用,因此不需要导入。那是否仅限于那些模块,意味着所有其他非内置的,用Python编写的标准库模块都需要导入才能使用? 谢谢。 问题答案: TLDR:使用前,您必须导入每个模块,除外。 就Python而言,有两种不同的“ builtin”: