我遇到了作曲家和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 的短标签<?
当我进行作曲家更新时,我的自动加载类显示以下内容:
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'SPACENAMEname' => $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(
'SPACENAMEgeneric_class' => $vendorDir . '/the/path/to/generic_class.php'
);
?>
因此,在某种程度上,我通过将短标签交换为完整标签来解决此问题。但是,我目前在一个相当大的团队中工作,他们都在同一项目中使用作曲家,并且没有遇到短标签的问题。我看不到我能够改变他们对短标签的用法/意见,所以我希望有人有一个解决方案,或者至少有一个答案,为什么这可能发生在我的机器上而不是其他人?
我确实尝试在谷歌上搜索答案,但一无所获,是否有作曲家设置可以阻止它将短标签识别为有效的 php,因此它无法知道什么是代码和什么是注释?
可能有帮助的信息
我们都有相同的操作系统(Windows)。
我们都在同一个版本的作曲家身上。
我们都在同一个代码库中工作。
目前我们有8个人在做这个项目。
我们都有不同的PHP服务器设置,我是唯一一个 使用 WAMPSERVER 3。
基本上,您只需要在配置中禁用短标签即可。刚刚设置
short_open_tag=0
在你的php.ini
.请注意:comped使用的php解释器有时与Apache版本有不同的php.ini
。
请参阅: http://php.net/manual/en/ini.core.php#ini.short-open-tag