У меня есть личная библиотека под названием "CSVBuilder" в проекте Symfony. Посмотрим, как это у меня в проекте.
- MyProject
- производитель
- MyPackage
- CsvBuilder.php
- composer.json
Содержимое CsvBuilder.php
выглядит так:
<?php
namespace MyPackage;
class CSVBuilder
{
// etc..., the behavior of the class doesn't really matter
public function __construct($fieldSep = "\t", $eol = "\n", $defVal = "", $utfEncode = false)
{
$this->defVal = $defVal;
$this->fieldSep = $fieldSep;
$this->eol = $eol;
$this->utf8Encode = $utfEncode;
}
}
И composer.json
моей частной библиотеки очень короткий, вот оно:
{
"name": "mypackage",
"autoload": {
"psr-4": {
"mypackage\\": ""
}
}
}
Обратите внимание на пространство имен. Хорошо. Ничего особенного с этого момента.
Итак, в другом файле, в контроллере Randon SiteController.php
, у меня есть этот очевидный код:
<?php
namespace app\controllers;
use MyPackage\CSVBuilder as csv;
class SiteController extends Controller
{
public function actionIndex()
{
$builder = new csv(); // this line crashed
}
Создает эту ошибку:
Ошибка
Класс 'MyPackage \ CSVBuilder' не найден
Это похоже на проблему с пространством имен, но я не знаю, что не так с моим кодом. Все звучит довольно хорошо для меня.
Конечно, в SiteController.php
я пытался заменить use MyPackage\CSVBuilder as csv;
на use MyPackage as csv;
, но это вызвало ту же проблему =>
Ошибка
Класс 'MyPackage' не найден
Любое предложение, пожалуйста? :)