我对 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 'Date today is: ' 。CpPanelBackTest::getDate();