Где находится файл ioc.php в структуре папок Laravel 5?

в моих проектах laravel 4.2 я использую файл ioc.php, использовать функции в любом месте моего приложения:

Laravel 4.2 structure
|
|
|app|
|routes.php
|ioc.php <-- place here

Мой контент ioc.php:

<?php
// services class
App::singleton('ApiRpService', function()
{
$config = Config::get('app.web_config.api');
$config['lang'] = Config::get('app.locale');
$config['currency'] = Config::get('app.currency');
$service = new \services\ApiService();
$service -> configure(array_merge($config,Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]));
return $service;
});

App::singleton('CartService', function()
{
//die(Config::get('app.web_config.webs.mantaspersonalizadas.es.local'));
$service = new \services\CartService(App::make('ApiRpService'));
return $service;
});

App::singleton('ApiCcService',function(){
$api_cc =  new \services\ApiCcService(Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['secret_key_old_cc']);
return $api_cc;
});

// shared cart when head render
View::composer('layouts.header', function($view)
{
$cart_service = App::make('CartService');

$params = array();
$params['cart'] = $cart_service->getCart();

//Controller::call('PagesController@getPromotionData');
App::make('PagesController')->getPromotionData();
# lenguajes extras
$params['extra_langs'] = [];
$extra_langs = array_merge(@Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['lng_extra'],array(@Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['lng_default']));

if (count($extra_langs) > 0){
foreach($extra_langs as $lang)
{
if ($lang != App::getLocale())
{
$route_name = substr(Route::currentRouteName(), 0, strrpos(Route::currentRouteName(),'_')).'_'.$lang;
//die(URL::route($route_name));
$params['extra_langs'][] = array(
'lang' => $lang,
'url' =>  URL::route($route_name,array('--',Input::get('id','')))
);
}
}
}
$params['web_url'] = Request::root() . (strlen(Request::segment(1)) == 2? '/'.Request::segment(1):'');
//dd($params['promotion_data']);
$view -> with($params);
});

View::composer('layouts.head', function($view)
{
if (App::environment('production'))
$view -> with('g_analytics_id', @Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['g_analytics']['account']);
});View::composer('layouts.metas', function($view)
{
$params = [];

if (Lang::has('messages.welcome'))
$params['title'] ="";

if (Lang::has('messages.welcome'))
$params['description'] ="";

$view -> with($params);
});

// shared newsletter when footer render
View::composer('layouts.footer', function($view)
{
$api = App::make('ApiRpService');
$view -> with(array(
'token'       => $api->getPublicToken(),
'google_plus' => @Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['google_plus'],
'facebook'    => @Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['facebook'],
'twitter'    => @Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['twitter'],
'chat_online'    => @Config::get('app.web_config.webs')[$_SERVER['SERVER_NAME']]['chat_online']
));

});

App::singleton('imghelper', function(){
return new \utils\ImageHelper(Config::get('app.web_config.urlStaticProductsImg'));
});

В Laravel 5 docs не упоминается ioc.php …

Где я могу разместить эти функции?

Обратите внимание, что эти функции используются во всех представлениях.

0

Решение

Как правило, ваши индивидуальные услуги должны иметь свои собственные ServiceProvder. Они могут быть размещены в любом конкретном каталоге, и вы можете зарегистрировать всех своих поставщиков услуг в своем config/app.php автоматически загружаться и запускаться.

Вы увидите в своем config/app.php что базовый проект Laravel предварительно регистрирует некоторых поставщиков для ваших обычно используемых фасадов, таких как DB,

Просто убедитесь, что имена ваших поставщиков услуг соответствуют Стандарт PSR-4 так что автозагрузчик Laravel может правильно разрешить класс!

Если вы ищете документы по «IOC» в Laravel 5, теперь он называется «Service Container» — Вот документы

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]