Я создал класс на php с некоторыми вспомогательными методами, которые анализируют файлы HTML.
Я хотел бы использовать этот класс в моем проекте Laravel, но я новичок в Laravel, и неясно, как добавить простой класс в проект Laravel 5.
Это возможно? Или мне нужно заняться созданием пакета композитора для моего класса, разместить его где-нибудь, а затем require
в моем файле composer.json
. Похоже, что для включения простого класса PHP потребуется много работы, и я надеюсь, что есть более простой способ.
2 ответа
В настоящее время в Laravel 5 нет отличного / простого способа сделать это (возможно, по дизайну). Вы можете выбрать два подхода:
Создайте новый класс в пространстве имен App
По умолчанию Laravel 5.0 ищет классы с префиксом App\
в папке app/
, так что что-то вроде этого должно работать
#File: app/Helpers/Myclass.php
<?php
namespace App\Helpers;
class Myclass
{
}
А затем создайте свой класс с помощью
$object = new App\Helpers\Myclass;
Этот подход, однако, основан на создании вами классов в пространстве имен App\
, и есть некоторая двусмысленность в том, принадлежит ли пространство имен App\
Laravel или разработчику приложения.
Создайте собственное пространство имен и зарегистрируйтесь как автозагрузчик PSR-4
Лучшим, но более сложным подходом было бы создание классов в вашем собственном пространстве имен, а затем сообщить Laravel об этом пространстве имен, зарегистрировав новый автозагрузчик PSR.
Сначала вы создадите определение класса
#File: application-lib/Myclass.php
<?php
namespace Pulsestorm;
class Myclass
{
}
Обратите внимание, что мы создали новую папку в корневой папке для хранения наших классов с именем application-lib
. Вы можете назвать эту папку как хотите, потому что на следующем шаге вы собираетесь добавить раздел в раздел автозагрузчика файла composer.json
.
#File: composer.json
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Pulsestorm\\": "application-lib/"
}
},
Раздел, который мы добавили, это
"Pulsestorm\\": "application-lib/"
Ключ к объекту (Pulsestorm\
) - это ваше пространство имен. Значение (application-lib
) - это папка, в которой композитор должен искать файлы определения класса с указанным пространством имен.
После того, как вы добавили это в composer.json
, вам нужно указать Composer, чтобы он регенерировал файлы кэша автозагрузки с помощью команды dumpautoload
$ composer dumpautoload
Generating autoload files
После выполнения вышеуказанного вы сможете создать экземпляр своего класса с помощью
$object = new Pulsestorm\Myclass;
«Настоящий» правильный способ сделать это - создать общий пакет композитора для вашего вспомогательного класса, а затем require
этот пакет композитора в ваш проект laravel. Однако для простого помощника по работе с библиотекой может потребоваться больше работы, чем вам хотелось бы.
Если ваш класс достаточно универсален, чтобы использовать его в других проектах, лучший способ - выпустить его как пакет.
Вот как вы создаете пакеты с Laravel 5: http://laravel.com/docs/5.0/packages
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.