otto test
composer require zelindm/petcreator
, (*1)
Подключить сервис-провайдер и фасад в файле app.php, (*2)
'providers' => [ ... Zelindm\PetCreator\PetCreatorServiceProvider::class, ... ], 'aliases' => [ ... 'PetCreator' => Zelindm\PetCreator\Facades\PetCreatorFacade::class, ... ]
Для Laravel 5.4 написать сервис, отдельным модулем, который возможно проинсталлировать через composer из локальной директории в vendor из дериктории ../vendor/objects, (*3)
При публикации сервиса через artisan vendor:publish в дериктории конфигураций laravel должен создаться конфиг objects.php, (*4)
Сервис должен быть доступен через алиас "Objects" фасада сервиса Сервис имеет метод make - возвращающий объекты типа класса из конфига objects.php, (*5)
В конфиг objects.php будут вноситься различные значения '{Наименование}'' => [class => '{Класс}', age => {Возраст}], например 'Dog' => ['class' => \Examples\Dogs::class, 'age' => 7 ], 'Cat' => ['class' => \Examples\Cats::class, 'age' => 3 ], где все классы обязаны иметь методы age() возвращающие соответствующее значение из age - конфига в соответствии с классом, и class() возвращающие строку с наименованием класса объекта в котором вызван, (*6)
Сервис не может создать объект, у класса которого отсутствуют обязательные методы. Если запросить не существующий в конфиге класс, должно быть брошено исключение класса \Examples\ObjectsMakeException::class, (*7)
Тесты в php artisan tinker:, (*8)
$dog = Objects::make('Dog'); \$dog объект класса \Examples\Dogs $dog->age(); \Должен вернуть 7 Objects::make('Cat')->age(); \Должен вернуть 3 Objects::make('Cat')->class(); \Должен вернуть (String) '\Examples\Cats', (*9)
Objects::make('Human'); // ObjectsMakeException, (*10)