Какова логика автозагрузки композитора? Как он сопоставляет пространство имен с определенным файлом и почему нам всегда нужно использовать пространство имен этого класса?Зачем нам нужно использовать 'use namespace;' в Ларавеле требуется класс?
ответ
- Какова логика автозагрузки композитора?
- Как это отобразить пространство имен в определенный файл?
- Почему нам всегда нужно использовать пространство имен этого класса?
Ответы: 3. Во многих языках программирования пространство имена используется для отдельных классов, которые имеют такое же имя, но другую иерархия - лучший пример для этого Eloquent Builder и Query Builder. Ну, подумайте, что это как-то вроде «путь к файлу», как на вашем жестком диске, скажем, файл с именем b.txt
в каталоге dir-a
и dir-b
, но они сохраняют собственное содержание? Во всяком случае, не больно читать the php documentation regarding namespace
(1, 2). Composer читает composer.json
, чтобы проверить, какой путь представляет пространство имен, и перечислите каждые php-файлы в нем и сохраните их в autoload_*.php
(если вы спросите меня, где находится файл, он только внутри вашего /vendor/composer/
все с autoload
в начале его названия. Laravel - или, вернее, Composer - знает, как их загрузить и где они находятся через эти файлы. Если вы проверите файлы, у вас появится идея. only соглашение в автозагрузке Composer, которое вам нужно запомнить, - это единственный файл только для один класс и его имя класса должны быть точными с именем файла (без php-части - да, это связано с PSR-*
)
ps. исправьте меня, если я неправильно.
Предположим, вы используете только autoload
, это означает, что он не имеет области действия (namespace
).
Это означает, что если вы когда-либо устанавливали зависимые стороны сторонних классов с тем же именем в папке поставщика (скорее всего, там будет), возникнет конфликт, который приведет к ошибке, фатальной для ваших приложений.
Класс автоподачи класса композитора также соответствует PSR-4 Standards.
Как Composer отображает файлы?
Это указывается в файле composer.json
, например:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
App
будет пространство имен, и src
будет папка
Это также полезно для модульного тестирования, вы можете сделать Ниже только для среды разработки:
"autoload-dev":{
"psr-4" : {
"App\\Test\\": "tests/"
}
}
- 1. Зачем нам нужно использовать flatMap?
- 2. Зачем нам нужно использовать package.json?
- 3. Зачем нам нужно (требуется «[...]]) с Clojure?
- 4. Зачем использовать охрану в ларавеле?
- 5. Зачем нам нужно targetNamespace?
- 6. Зачем нам нужно remove_copy_if?
- 7. Зачем нам нужно блокирование намерений?
- 8. Зачем нам нужно использовать хранимую процедуру?
- 9. Зачем нам нужно «Set Variable»?
- 10. Зачем нам нужно преобразовать Теано?
- 11. Зачем нам нужно создавать макет?
- 12. Зачем нам нужно устанавливать SONAR_RUNNER_OPTS?
- 13. Зачем нам нужно Явное преобразование
- 14. Зачем нам нужно программирование RPC?
- 15. Зачем нам нужно свойство в Python?
- 16. PHP Namespace, зачем все еще использовать суффикс?
- 17. , когда и зачем нам нужно разделить класс на многие классы?
- 18. Шаблон адаптера: зачем нам нужно подклассировать Adaptee?
- 19. Зачем нам нужно использовать ассоциацию (множественность) в диаграммах классов?
- 20. Зачем нам нужно использовать часть отрицания в Turing's Halting Proof?
- 21. Зачем нам нужно использовать скобки при составлении функций в haskell?
- 22. Зачем нам нужно использовать ConvertBack в конвертере IValue
- 23. Зачем нам нужно использовать // <! [CDATA [в инструкции @using?
- 24. Зачем нам нужно использовать импорт «babel-polyfill»; в реакционных компонентах?
- 25. Зачем нам нужно использовать $ (this) в функции .each()?
- 26. Зачем нам нужно вызвать poll_wait в опросе?
- 27. Что означает делегат? Зачем нам это нужно?
- 28. Когда нам нужно использовать System.AppContext?
- 29. Зачем нам нужно zone_highmem на x86?
- 30. Builder Pattern: Зачем нам нужно .build()?
Как он читает используемое пространство имен и как оно преобразует его в путь? Он читает файл как текст, а затем находит ключевое слово «use»? – bruce
относительно ключевого слова 'use' и' namespace' строго соответствует php. Composer обрабатывает только пространство имен, в котором находится путь к файлу, содержит классы и т. Д. - он только перечисляет их, [пример] (https://bitbucket.org/BagusTesa/ashadi-delivery-system-ads/src/f4bfdca18e87b3c38b802359b3c30db45d99ba2e/vendor/composer /autoload_classmap.php?at=master&fileviewer=file-view-default). –
Да, но если я не использую 'use', он говорит, что класс не найден. Это означает, что каким-то образом он преобразуется в полный путь через логику. – bruce