繁体   English   中英

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我为什么要使用<?php而不是<? 在我的PHP脚本?

10 个回复

避免短开标签的两个主要原因是

  1. 最大可移植性 - <?php将适用于每个启用PHP的服务器,但<? 可以被禁用
  2. 它与XML前导码的开头相同 - 可能导致解析或执行问题

启动PHP有两种方法

<?php

<?

PHP还包括

<?=

但这将打印出它背后的变量,因为它是回声的简写。

您应该使用<?php,因为它与所有服务器类型兼容。 您可以将代码移动到新的托管解决方案或设置新的服务器默认值,并且可以禁用短序。

短标签<? (和<?= )可以被禁用。 长版<?php (和<?= = <?php echo )无处不在。

我们可以讨论PHP团队的这个决定的意义,使这样的事情可配置,但重要的是,你不能在便携式代码中使用短标签。

两者在语义上都是一样的。 <? 只是完整语法的快捷方式。

我个人更喜欢<? 被关闭有两个原因

  1. 许多大型PHP项目的PHP编码标准建议将其关闭
  2. 如果要生成XML文档,则会产生问题(xml文档以<?xml version="1.0" encoding="UTF-8" ?>开头<?xml version="1.0" encoding="UTF-8" ?>
  3. (奖金) <?php<?更具可读性和显着性

为了增加每个人的解释,不应该使用短标签,因为它们可能被禁用(或者甚至可能从未来的PHP版本中删除),不推荐使用短标签的主要原因是它们不是有效的XML“处理指令”,而<?php标签是。 因此,带有<?php ... ?>标签的PHP模板可以是有效的XML文档,而使用短标签的PHP模板则不是。

应该注意的是,PHP的某些服务器配置不支持开箱即用的一个或另一个。 例如,我的网络服务器不支持<? 但是支持<?php

可移植性的论点都很好,但是我会说是亵渎神明,并且如果你愿意的话,你应该继续使用短标签,除非你做的是广泛分发(来源) ,或正在制作非常注重xml的东西。

a)我从未遇到过无法启用短标签的情况。 通常他们默认开启。

b)在大多数情况下, <? 不会与<?xml混淆,因为它们在堆栈的不同级别被解析。

c)短标签不那么突兀,因此会减少你的代码。 我发现<?php echo vs. <?=尤其如此。 (你可以说你通常应该避免使用其中任何一个,因为它可能意味着你正在编写意大利面条代码,但是来吧 - 这是php!)

当然,这一切都取决于你正在做什么样的项目,但对于一个基本的网站,我认为短标签根本不会伤害你。

Wordpress编码标准说只使用<?php 他们没有解释原因。

这可能是一个宗教问题。

简短形式的支持<? / <?=语法基于php.ini中short_open_tag参数 如果您托管自己的代码库,则启用此功能非常简单。 但是,在共享/托管Web主机上,您可能无法控制此设置。

因此,为了获得最大的可移植性,您应该使用长格式语法。

1 如何使PHP读取数组中内容的JSON数组名称INSTEAD

我需要帮助以获取PHP以读取数组内容中的数组名称INSTEAD的信息。 我正在使用PHP解析来自API调用的JSON响应。 如果用户输入的内容不正确,则JSON将以array(1) { ["error"]=&gt; ...响应array(1) { ["error"]=&gt; ...如果 ...

2 特性:为什么使用“ as”时需要“ instead”?

PHP 7.1 得到: 致命错误:特性方法addFields尚未应用,因为与其他特征方法存在冲突 为什么? 我给他们起了不同的名字,再也没有冲突了。 为什么我必须添加无用的行? : 废话 ...

2017-07-16 13:31:04 0 23   php
4 逗号的空格分隔符 INSTEAD - 大量输出

您将在我的form标签中看到,我正在使用toLocaleString在我的最终输出中放置一个分隔符。 但是我想要一个空格而不是逗号。 我怎样才能做到这一点? 现在,第三个输出中有一个逗号。 但理想情况下,我希望所有三个输出中都有一个空格,以使大数字更具可读性。 示例:“5 000”、“400 0 ...

5 如何将onclick事件绑定到更改事件的INSTEAD复选框?

这是我的问题。 我正在为某些设备制作控制面板。 现在,用户可以启用/切换开/关开关(复选框),远程设备也可以。 这反映在数据库中。 但是,无论何时用户(不是设备)切换以启用设备(复选框==已选中),我都希望有一个确认框。 用户禁用(切换,复选框== false)设备时,不需要确认框 ...

6 如何使用Unity3D和PIN的INSTEAD授权发布到Twitter?

我的游戏完全使用JavaScript。 之所以糟透了,是因为我必须将C#插件推到我的插件文件夹中来更改它们,并使用JavaScript激活C#脚本中的命令。 我已经从Asset商店下载了“在Unity中的我们的推文”,它带有2个脚本。 一个脚本定义“ Twitter”及其可以代表的所有 ...

7 我可以在PowerPoint VBA中使用“ ActivePresentation”的INSTEAD的其他几种方法

我目前正在使用PowerPoint VBA并编写代码,以便能够复制第一张幻灯片并将其再次粘贴到同一演示文稿中。 但是,我不断收到错误消息“剪贴板为空或包含可能无法在此处发布的数据”,并且根据Microsoft页面,问题是使用了“ ActivePresentation” 我正在寻找另一种方 ...

8 VBA代码选择后3列的前3列INSTEAD

我正在编写一个代码,该代码应该从与我创建的表的最后三行相对应的列中获取值。 由于数字是随机的,因此必须采用这种形式。 我在第一个Excel工作表中有一个具有不同值的表。 我计算有多少行和列。 然后,我从第二张表中获得最后三个值,它们属于Index列。 我将使用这些索引来构造代码 ...

2013-05-06 16:53:45 1 151   vba/ range
10 EntityFramework 5使用dll版本4.4.0.instead 5.0

我有基于.NET 4.0的项目,但我需要在我的解决方案中使用EntityFramework 5。 所以我从NuGet安装它。 之后,我将目标框架更改为.NET 4.5(我正在使用VS 2012)并重建项目。 但在参考文件夹中,我看到该项目使用EntityFramework.dll版 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM