【发布时间】: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 的短标签 <?
当我更新作曲家时,我的自动加载类显示如下:
<?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 的完整标签 <?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