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();