【发布时间】:2015-04-16 09:44:40
【问题描述】:
在我的 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 文档中没有提到 ioc.php...
我可以在哪里放置这些函数?
请注意,这些函数用于所有视图。
【问题讨论】:
标签: php laravel laravel-4 laravel-5 ioc-container