我刚刚开始与Laravel合作。我需要使用Laravel 4作为基本框架来重写几年前制作的整个系统。在我的旧系统中,我曾经有一个constant.php
声明了一些常量的globals.php
文件,以及一个包含许多数组集(例如,类别状态,事件类型,语言等)的文件。这样,我可以使用类似
foreach ( $langs as $code => $domain ) {
// Some stuff
}
我应用中的任何地方。
我的问题是,如何才能以所谓的“ laravel方式”存储该信息。我尝试使用某种对象来存储此信息,将其设置为服务并为其创建外观:
app / libraries / Project / Constants.php
namespace PJ;
class Constants {
public static $langs = [
'es' => 'www.domain.es',
'en' => 'www.domain.us',
'uk' => 'www.domain.uk',
'br' => 'www.domain.br',
'it' => 'www.domain.it',
'de' => 'www.domain.de',
'fr' => 'www.domain.fr'
];
}
app / libraries / Project / ConstantsServiceProvider.php
namespace PJ;
use Illuminate\Support\ServiceProvider;
class ConstantsServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton('PJConstants', function() {
return new Constants;
});
}
}
app / libraries / Project / ConstantsFacade.php
namespace PJ;
use Illuminate\Support\Facades\Facade;
class ConstantsFacade extends Facade {
protected static function getFacadeAccessor() {
return 'PJConstants';
}
}
composer.json
"psr-4": {
"PJ\\": "app/libraries/Project"
},
因此,我以访问该属性PJ\Constants::$langs
。
这可行,但是我怀疑这是最有效或正确的方法。我的意思是,通过创建整个服务提供程序,外观和所有此类东西来“传播”变量的正确方法是吗?还是应该将这些数据放在哪里?
感谢您的任何建议。
编辑#01
我想传递给所有控制器和视图的数据可以直接在脚本中设置,就像在我文章开头的示例中一样,但是也可以从数据库动态生成。该数据可以是类别列表。我在所有视图中都需要它们来生成导航栏,但是我还需要它们来定义一些路由模式(如/category/subcategory/product
),并在多个控制器中解析一些信息(例如从保存X产品的类别中获取信息)。
我的数组是这样的:
$categories = [
1 => ['name' => 'General', 'parent' => 0, 'description' => 'Lorem ipsum...'],
2 => ['name' => 'Nature', 'parent' => 0, 'description' => 'Lorem ipsum...'],
3 => ['name' => 'World', 'parent' => 0, 'description' => 'Lorem ipsum...'],
4 => ['name' => 'Animals', 'parent' => 2, 'description' => 'Lorem ipsum...']
]
举个例子。索引是类别的ID,而值是与该类别关联的信息。
我还需要所有控制器和视图中都可用的数组。
那么,我应该将其另存为Config变量吗?我还能如何存储这些数据?什么是最佳且语义正确的方法?