Composer更新和PHP短标签

时间:2017-06-12 10:51:17

标签: php composer-php wamp

我遇到过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的短标签<? < / p>

当我进行作曲家更新时,我的自动加载类显示以下内容:

<?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'
    );

?>

它似乎在注释中选取了类名,并将其视为类定义,而不是使用generic_class的实际类定义。但是,如果我使用PHP的完整标签<?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'
    );

?>

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

我确实尝试谷歌的答案,但没有提出任何问题,是否有一个作曲家设置,它停止识别短标签作为有效的PHP因此它无法知道什么是代码和什么是评论?

可能有用的信息

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

  • 我们都是同一版本的作曲家。

  • 我们都在使用相同的代码库。

  • 目前我们有8个人正在研究这个项目。

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

1 个答案:

答案 0 :(得分:2)

基本上,您只需在配置中禁用短标签即可。只需设置

short_open_tag=0

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

请参阅:http://php.net/manual/en/ini.core.php#ini.short-open-tag