Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.11.2017 16:47:05

Импорт собственного класса в класс миграции

Хочу добавить собственный класс в проект. На одном из формумов было сказано, что лучше свои классы помещать в app/, тогда я добавил свой класс в директорию app/Extenders/ (назначение этого класса не важно в данном вопросе).

Теперь пытаюсь импортировать свой класс в миграцию:

PHP
use App\Extenders\References as REF;

При попытке выполнить миграцию получается ошибка:

PHP
[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 
'App\Extenders\References' not found

Я просмотрел много ответов, но рабочего решения нигде не нашёл. %% composer dump-autoload не помогло %%. Видел :[QUOTE][https://stackoverflow.com], решение[/QUOTE]:

PHP
"autoload": {
    
"classmap": [
        
"app/database/migrations"
    
],
    
"psr-4": {
        
"Acme\\controllers\\""app/controllers"
    
}
}

Но этого кода не достаточно, чтобы понять, что делать. Во-первых, этих autoload в composer.lock уйма, и непонятно, какой из них менять или новый добавлять… Да и что за psr-4, тоже непонятно.

Не в сети

#2 25.11.2017 17:00:52

Re: Импорт собственного класса в класс миграции

А в твоем классе пространство имен так записано?

PHP
namespace App\Extenders;

Не в сети

#3 25.11.2017 17:05:21

Re: Импорт собственного класса в класс миграции

Вообще-то нет…
На этом проблема решена, но для понимания: зачем в классе указывать пространство имён? Почему оно не определяется автоматически на основе пути к файлу?

Не в сети

#4 25.11.2017 17:07:05

Re: Импорт собственного класса в класс миграции

Не в сети

#5 27.11.2017 14:24:39

Re: Импорт собственного класса в класс миграции

Gleb2708 пишет:

зачем в классе указывать пространство имён? Почему оно не определяется автоматически на основе пути к файлу?

потому что пока что люди командуют машинами, а не наоборот. машины могли бы просто расставить нужные байты на нужных места. а в человеческом мире надо чтобы читающий видел полное имя класса, т.е. неймспейс + имя.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела