【发布时间】:2015-09-04 08:59:43
【问题描述】:
我对 php (>5.4.*) 和 composer 上的命名空间感到非常困惑
场景
|vendor
|autoload.php
|abkrim
|cputils
|src
|CpPanelBackTest.php
代码 CpPanelBackTest.php
namespace Abkrim\Cputils;
class CpPanelBackTest
{
public static function getDate(){
$year = date('Y');
$month = date('m');
$day = date('d');
return $day . '/' . $month . '/' . $year;
}
}
文件 test.php
require __DIR__.'/../../vendor/autoload.php';
use Abkrim\Cputils\CpPanelBackTest;
echo 'Date today is: ' . CpPanelBackTest::getDate();
在 vendor/abkrim/cputils 上文件 composer.json
"autoload": {
"psr-4": {
"Abkrim\\Cputils\\": "src/"
}
}
得到错误->
PHP Fatal error: Class 'CpPanelBackTest' not found in at file xxxx line xxxx
如果更改 CpPanelBackTest.php 的代码
//namespace Abkrim\Cputils; //coment namespace
class CpPanelBackTest
{
public static function getDate(){
$year = date('Y');
$month = date('m');
$day = date('d');
return $day . '/' . $month . '/' . $year;
}
}
还有文件test.php
//require __DIR__.'/../../vendor/autoload.php';
//use Abkrim\Cputils\CpPanelBackTest;
require_once __DIR__ . '/../../vendor/abkrim/cputils/src/CpPanelBackTest.php';
现在可以正常工作了。
我迷路了。 我对此一无所知 echo '今天的日期是:' . CpPanelBackTest::getDate();
【问题讨论】:
-
难以置信。 4个负面点和任何评论。有这种不良做法的版主吗?
-
请注意,将“SOLVED”写在标题中被认为是不好的做法。 Stack Overflow 鼓励在自己的答案中给出解决方案,最有帮助的答案用绿色复选标记标记为已接受。您可以回答自己的问题,也可以接受自己的答案。
标签: php namespaces composer-php autoloader namespace-organisation