Как должен выглядеть класс, чтобы autoloader Yii2 его загрузил?
Изучаю Yii2 как первый PHP-фреймворк по книге Web Application Development With YII2 and PHP.
В ней подход слегка отличается от стандартного, и для первых нескольких моделей используется по два класса - к примеру, Customer, который хранит данные, и CustomerRecord, который наследует ActiveRecord, соответственно написан и контроллер.
Проблема возникла после создания по сути CRUD вышеназванной модели. В контроллере нормально создается объект CustomerRecord, но при инициализации класса Customer вылетает исключение "Unable to find 'app\models\customer\Customer' in file: D:\xampp\projects\yii2.local\www/models/customer/Customer.php. Namespace missing?".
При этом неймспейсы в классе расставлены правильно, не отличаются друг от друга и от того, как они расставлены в примере кода, который предлагает автор книги.
Аналогичные классы Phone и PhoneRecord ведут себя так же.
Андрей Павленко:
Неймспейс app\models\customer
Файл хранится там, где его ищет автолоадер: *приложение*/models/customers/Customer.php
Объявляю просто: class Customer, в нем 4 переменных простых и конструктор.
Продебажил вызовы - исключение происходит на проверке class_exists(), прочел про нее - причина все равно непонятна.
Ну, выглядит как то, что в файле Customer.php либо неправильно объявлено создание namespace, либо файл находится не в том месте, в котором должен быть.
Попытайтесь назвать сам класс Customer по-другому, мне кажется, из-за этого могут возникать проблемы
Код здесь, чтобы не захламлять: pastebin.com/30kpyVq3
То была опечатка, неймспейс и название папки совпадают. Признаки именно на это и указывают, да, но проблема в том, что класс CustomerRecord определяется нормально, и лежит в той же папке, соответственно, в том же неймспейсе. Его код здесь: pastebin.com/gPbD8RCx
Андрей Павленко
Еще раз внимательно прошел пошагово по тому, что делает аутолоадер - все совпадает, кроме добавленного *Record в конце. Сейчас попробую создать просто пустой класс для теста.
Андрей Павленко: магия сработала, но слегка иначе: просто переименовать не помогло, скопировал-удалил-создал новый с другим именем-вставил - все работает.
Странно, однако.
Скопируйте последний комментарий и добавьте его как ответ, я отмечу.