PHP: <?php namespace browner12\helpers; use Illuminate\Support\ServiceProvider; class HelperServiceProvider extends ServiceProvider { /** * register the service provider * * @return void */ public function register() { //register commands $this->commands([ Commands\HelperMakeCommand::class, ]); //include the active package helpers foreach (config('helpers.package_helpers', []) as $activeHelper) { $file = __DIR__ . '/Helpers/' . $activeHelper . '.php'; if (file_exists($file)) { require_once($file); } } //load custom helpers with a mapper if (count(config('helpers.custom_helpers', []))) { foreach (config('helpers.custom_helpers', []) as $customHelper) { $file = app_path() . '/' . $this->getHelpersDirectory() . '/' . $customHelper . '.php'; if(file_exists($file)) { require_once($file); } } } //load custom helpers automatically else { //include the custom helpers foreach (glob(app_path() . '/' . $this->getHelpersDirectory() . '/*.php') as $file) { require_once($file); } } } /** * boot the service provider * * @return void */ public function boot() { //publish configuration $this->publishes([ __DIR__ . '/config/helpers.php' => config_path('helpers.php'), ], 'config'); } /** * get the directory the helpers are stored in * * @return mixed */ public function getHelpersDirectory() { return config('helpers.directory', 'Helpers'); } } После else мы подключаем custom helpers, а если мы их ещё только подключаем, то откуда у нас config(), app_path(), config_path()?
PHP: \Helpers :: class => static function ( ContainerInterface $container ): bool { foreach ( glob ( $container -> get( 'repository' ) -> get( 'app.system.directory.helpers' ) . '*.php' ) AS $helper ) { require_once $helper; } app( $container -> get( 'app' ) ); return true; }, --- Добавлено --- Могу весь стек ОТ и ДО расписать работы фреймворков на общих принципах
@MouseZver если честно ерунда какая-то, подключили хелперы, чтобы с их помощью подключить хелперы, ок, понятно --- Добавлено --- я этим и занимаюсь: колупаю разные, смотрю реализации
Подключаешь их РАЗ, после еще сейвишь единую точку приложения в главный Helper "app", чтобы только потом использовать Помощь. Не путай то что ты в начале написал - а в коде ты написал "использовали хелперы, чтобы с их помощью подключить хелперы"
ну так сначала подключили хелперы, а потом в провайдере подключили ещё одни хелперы, используя уже подключенные: config(), app_path(), config_path(), так же
почему у меня? в том коде что в вопросе я читаю подключение хелперов в провайдере, но в провайдере уже используются хелперы, значит хелперы подключаются какими-то пачками у меня сейчас такая же ситуация: я собираю конфиги в контейнер, в этих конфигах есть массив провайдеров))) я хочу провайдером собрать Config::class, но не могу обойти массив провайдеров при помощи Config->get('providers'), потому что Config ещё не собран))) массив конфигов прилетает в конструктор Config из контейнера, мне чтобы собрать все провайдеры, то нужно обойти массив container->get('provider'), отсюда возникает вопрос: а нахрена мне тогда Config, если я из достаю массив провайдеров - контейнером))) PHP: public function __construct(Container $container) { $this->container = $container; $providers = array_map(function ($provider) { return new $provider($this); }, config('providers')); // ну и откуда у меня хелпер config(), если я ещё не собрал хелперы в провайдере // или зачем мне тогда собирать Config::class если у меня есть config() array_walk($providers, function (Provider $provider) { return $provider->register(); }); array_walk($providers, function (Provider $provider) { return $provider->boot(); }); }
да-да, я уже догнал, а то немного тормозил сначала, спс --- Добавлено --- @MouseZver ok, я понял суть