Я очень запутанным о пространстве имен в PHP (> 5.4. *) И композитор(решаемые) Класс не найден с помощью пространства имен compilant PSR-4 на PHP
Сценарий
|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();
Solution -> test.php Файл composer.json
require 'vendor/autoload.php';
use Abkrim\Cputils\CpPanelBackTest
echo 'Date today is: ' . CpPanelBackTest::getDate();
файла поставщика/abkrim/cputils
"autoload": {
"psr-4": {
"Abkrim\\Cputils\\": "src/"
}
}
Добавить в composer.json глобального приложения
"repositories": [
{
"type": "package",
"package": {
"name": "abkrim/cputils",
"version": "master",
"source": {
"url": "ssh://[email protected]_git:port/path/git/cputils",
"type": "git",
"reference": "master"
}
}
}
],
"autoload": {
"psr-4": {
"Abkrim\\Cputils\\": "vendor/abkrim/cputils/src/"
}
Конечно, после этого изменения мне нужно запустить
composer dump-autoload -o
composer update
Get ошибка ->
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();
более простой .. add require 'vendor/autoload.php'; на test.php и отлично работать. – abkrim
вопрос сложнее. Я аск для сценария, используя композитор + php5 + psr-4. Когда вы запускаете композитор, если пакет composer.json и ваш комплект composer.json в порядке, он должен записывать на вендор/композитор/autoload_psr4.php строку для правильного использования вами пространства имен psr-4, составленного из вашего пакета. – abkrim