Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP短标记是否可以使用?_Php_Coding Style_Php Shorttags - Fatal编程技术网

PHP短标记是否可以使用?

PHP短标记是否可以使用?,php,coding-style,php-shorttags,Php,Coding Style,Php Shorttags,以下是信息: 有四对不同的玩具 打开和关闭标签,可以 在PHP中使用。其中两个, 和, 总是有空的。另外两个 是短标记和ASP样式标记,以及 可以从中打开和关闭 php.ini配置文件。像这样的 而有些人发现短标签和 ASP样式标记很方便,它们是 便携性较差,通常不 推荐 根据我的经验,大多数服务器都启用了短标记。打字 <?= 因为它可能会与XML声明产生混淆。不过,很多人都喜欢你 另外一个问题是,如果用短标记对所有内容进行编码,最后却发现最终的托管服务器已将它们关闭,这将带来痛苦… 在

以下是信息:

有四对不同的玩具 打开和关闭标签,可以 在PHP中使用。其中两个,
, 总是有空的。另外两个 是短标记和ASP样式标记,以及 可以从中打开和关闭 php.ini配置文件。像这样的 而有些人发现短标签和 ASP样式标记很方便,它们是 便携性较差,通常不 推荐

根据我的经验,大多数服务器都启用了短标记。打字

<?=

因为它可能会与XML声明产生混淆。不过,很多人都喜欢你

另外一个问题是,如果用短标记对所有内容进行编码,最后却发现最终的托管服务器已将它们关闭,这将带来痛苦…

  • 在某些Web服务器(共享主机等)中,默认情况下不会打开短标记,因此如果需要移动到其中一个,代码的可移植性将成为一个问题


  • 可读性对某些人来说可能是个问题。许多开发人员可能会发现
    不推荐他们,因为如果您必须将代码移动到不支持它的服务器上(并且您无法启用它),这是一个PITA。正如你所说,很多共享主机都支持短标签,但“很多”并不是全部。如果要共享脚本,最好使用完整语法


    我同意
    有一点不同的情况是在开发应用程序时。CodeIgniter似乎在模板/视图中使用PHP时使用短标记,否则在模型和控制器中它总是使用长标记。在框架中,这不是一条硬性规定,但在大多数情况下,框架和许多其他用途的源代码都遵循这一约定

    我的两分钱?如果您从未计划在其他地方运行代码,那么如果您愿意,可以使用它们。当我意识到这是一个愚蠢的想法时,我宁愿不去做大量的搜索和替换。

    我太喜欢
    了,不能让它过去。从来没有问题。我会一直等到它咬我的屁股。说真的,85%的(我的)客户在罕见的关闭时都可以访问php.ini。另外15%使用主流主机提供商,并且几乎所有的主机提供商都启用了它们。我喜欢它们。

    不,如果你喜欢代码的长寿性,就不要使用它们或
    标记。

    如果你关心它们,那么大部分时间你都应该使用
    ,所以短标记不会有太大区别

    即使您将
    echo htmlspecialchars()
    缩短为
    h()
    ,您仍然需要记住几乎每次都要添加它(并且尝试跟踪哪些数据是预先转义的,这是未转义的,但无害的,只会更容易出错)


    默认情况下,我使用的是安全的,由于在它们的标签中按“”键,短标签将返回。我不明白这场辩论是关于什么的,你一生中生产的大多数软件都会在你或你的公司控制的服务器上运行。只要你保持一致,就不会有任何问题

    更新

    在用做了相当多的工作之后,它使用长形式。因此,我转向了长格式的:

    <?php and <?php echo
    
    • 如果您确信服务器将支持短标记,并且您的开发人员将理解它,则可以使用短标记
    • 许多服务器不支持它,许多开发人员在看到它一次后就会理解它
    • 我使用完整标签来确保可移植性,因为它真的没有那么糟糕

    说到这里,我的一个朋友说了这句话,为了支持替代的标准化asp样式标记,比如
    ,让我们面对现实吧。如果没有短标记,PHP非常难看

    如果无法访问
    php.ini
    ,可以在
    .htaccess
    文件中启用它们:

    php_flag short_open_tag on
    

    整个讨论的问题在于使用PHP作为模板语言。没有人认为标签应该在应用程序源文件中使用

    然而,PHP的可嵌入语法允许它作为一种强大的模板语言使用,模板应该尽可能简单易读。许多人发现使用像Smarty这样速度慢得多的附加模板引擎更容易,但对于我们当中那些要求快速渲染和纯代码库的纯粹主义者来说,PHP是编写模板的唯一方法

    反对使用短标记的唯一有效论点是,并非所有服务器都支持短标记。关于与XML文档冲突的评论是可笑的,因为您可能无论如何都不应该混合使用PHP和XML;如果是,则应该使用PHP输出文本字符串。安全性永远不应该是一个问题,因为如果您将敏感信息(如数据库访问凭据)放在模板文件中,那么,您就会遇到更大的问题

    现在,关于服务器支持的问题,无可否认,我们必须了解他们的目标平台。如果共享主机是一个可能的目标,那么应该避免使用短标记。但是对于许多专业开发人员(比如我自己),客户机承认(实际上,这取决于事实),我们将决定服务器需求。通常我自己负责设置服务器

    而且,我们从来不会与一家主机提供商合作,因为它不能让我们绝对控制服务器配置——在这种情况下,我们可能会遇到比丢失短标记支持更大的麻烦。这根本不会发生


    是的,我同意短标签的使用应该仔细权衡。但我也坚信,它应该始终是一种选择,了解其环境的开发人员应该可以自由地使用它们。

    我在查找有关该主题的信息后阅读了本页,我觉得其中一个主要问题是
    <? and <?=
    
    php_flag short_open_tag on
    
    {$myString|escape}
    
    <?= htmlspecialchars($myString) ?> 
    
    find . -name "*.php" -print0 | xargs -0 perl -pi -e 's/<\?(?!php|=|xml|mso| )/<\?php /g'
    
    find . -name "*.php" -print0 | xargs -0 perl -pi -e 's/<\? /<\?php /g'
    
        $a =10;
        <?= $a;//10 
        echo "Hellow";//
        echo "Hellow";
    
       ?>
    
    <html>
    <head>
    <title></title>
    </head>  
    <body>
    <p>hellow everybody<?= hi;?></p>
    <p>hellow everybody  </p> 
    <p>hellow everybody  </p>   
    </body>
    </html>
    
    <?php /* code goes here */ ?>
    
    <?= /* code goes here */ ?>