Классы автозапуска Composer не найдены
у меня есть структура папок, как:
includes/
libraries/
Classes/
Contact/
Contact.php
ContactController.php
admin/
controllers/
contact/
edit.php
контакты.php-это мой класс, который я пытаюсь использовать. Файл содержит.
<?php
namespace Classes;
class Contact {
function __construct() {
die('here');
}
}
у меня есть мой композитор.файл json, например:
{
"autoload": {
"psr-4": {
"Classes": "includes/libraries/Classes/"
}
},
}
файл, в котором я пытаюсь использовать класс Contact, это edit.php
внутри admin/controllers/contact/
папка. Мой edit.php
файл выглядит так:
<?php
use ClassesContact;
$contact = new Contact();
var_dump($contact);
этот файл vendor/autoload.php
файл включен, но я не могу заставить его использовать класс?
1 ответов
Classes/Contact/Contact.php
и правило композитора "Classes\": "includes/libraries/Classes/"
означает Classes\Contact\Contact
класса, а не Classes\Contact
.
так что если вы действительно хотите Classes\Contact
класс, переместите Classes/Contact/Contact.php
файл до родительского каталога:Classes/Contact.php
.
Если, однако, желаемый путь пространства имен к классу Classes\Contact\Contact
, затем измените use
:
use Classes\Contact\Contact;
и namespace
:
namespace Classes\Contact;
class Contact {}
пример
├── composer.json
├── includes
│ └── libraries
│ └── Classes
│ └── Contact
│ └── Contact.php
├── test.php
└── vendor
├── autoload.php
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── autoload_static.php
├── ClassLoader.php
├── installed.json
└── LICENSE
файлы vendor/
создаются композитор.
композитор.в JSON
{
"name": "testpsr4",
"autoload": {
"psr-4": {
"Classes\": "includes/libraries/Classes"
}
}
}