【问题标题】:Composer update and PHP short tagsComposer 更新和 PHP 短标签
【发布时间】:2017-06-12 10:51:17
【问题描述】:

我遇到了 composer 和 PHP 短标签 <? 的问题。

下面的代码。

<?

    namespace SPACENAME;

    class generic_class {

        private $class_name = 'this_is_a_test';

        /**
         * This function is used to return the class name property.
         */
        public function some_function() {
            return true;
        }

    }

?>

如果您注意到,我们有一个名为 generic_class 的类和一个包含单词 类名 的注释,并且使用 PHP 的短标签 &lt;?

当我更新作曲家时,我的自动加载类显示如下:

<?php

    // autoload_classmap.php @generated by Composer

    $vendorDir = dirname(dirname(__FILE__));
    $baseDir = dirname($vendorDir);

    return array(
        'SPACENAME\name' => $vendorDir . '/the/path/to/generic_class.php'
    );

?>

它似乎在评论中选择了 class name 并将其视为类定义,而不是使用 generic_class 的实际类定义。但是,如果我使用 PHP 的完整标签 &lt;?php,则不会发生此问题,并且我的自动加载类是正确的。

<?php

    // autoload_classmap.php @generated by Composer

    $vendorDir = dirname(dirname(__FILE__));
    $baseDir = dirname($vendorDir);

    return array(
        'SPACENAME\generic_class' => $vendorDir . '/the/path/to/generic_class.php'
    );

?>

因此,通过将短标签交换为完整标签,我以一种方式解决了这个问题。但是,我目前在一个相当大的团队中工作,他们都在同一个项目中使用作曲家,并且没有使用短标签来解决这个问题。我看不到我能够改变他们对短标签的使用/意见,所以我希望有人有一个解决方案,或者至少可以回答为什么这可能发生在我的机器上而不是其他人?

我确实尝试在谷歌上搜索答案,但什么也没找到,是否有一个作曲家设置阻止它将短标签识别为有效的 php,因此它无法知道什么是代码和什么是评论?

可能有用的信息

  • 我们都有相同的操作系统 (Windows)。

  • 我们都使用同一个版本的作曲家。

  • 我们都使用同一个代码库。

  • 目前我们有 8 人在从事该项目。

  • 我们的 PHP 服务器设置不同,我是唯一一个 使用 WAMPSERVER 3。

【问题讨论】:

  • 将短标签更改为长标签基本上是下载PHP-CS-Fixer并在代码库上运行一次以修复所有标签,然后提交。哦,是的:并且在团队中同意使用它们是一个坏主意,应该避免。可能是更难的部分。

标签: php composer-php wamp


【解决方案1】:

基本上你只需要在你的配置中禁用短标签。只需设置

short_open_tag=0

在您的php.ini 中。请注意:compose 使用的 php 解释器有时与 Apache 版本有不同的php.ini

见:http://php.net/manual/en/ini.core.php#ini.short-open-tag

【讨论】:

  • 我无法禁用 php 短标签,因为我们的大多数内部框架都使用它们。理想情况下,我需要一种让作曲家识别它们的方法。我会尝试看看是否可以找到作曲家使用的单独的 php.ini,改变它可能会有所帮助!谢谢。
  • 如果您能够从控制台窗口运行php,那么您只需运行php -i 即可获得整个配置,包括php.ini 的路径。显然,更改作曲家的配置不应影响主解释器的行为。如果 php.ini 文件在它们之间共享,请尝试拆分它们。
  • 似乎是 php.ini 的问题
猜你喜欢
  • 2011-01-12
  • 1970-01-01
  • 2010-11-26
  • 2017-07-02
  • 2013-03-29
  • 2015-12-30
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多