我刚开始和 Laravel 一起工作。我需要用 Laravel4作为基本框架,重写几年前开发的整个系统。在我以前的系统中,我使用一个声明了一些常量的 constant.php
文件和一个包含大量数组集的 globals.php
文件(例如,类别状态、事件类型、 lang 等)。通过这样做,我可以使用
foreach ( $langs as $code => $domain ) {
// Some stuff
}
在我的应用程序的任何地方。
我的问题是,我怎样才能存储所谓的“幼虫的方式”的信息。我尝试使用某种对象来存储这些信息,将其设置为一个服务,并为其创建一个 facade:
App/library/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/library/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/library/Project/ConstantsFacade.php
namespace PJ;
use Illuminate\Support\Facades\Facade;
class ConstantsFacade extends Facade {
protected static function getFacadeAccessor() {
return 'PJConstants';
}
}
作曲家 Json
"psr-4": {
"PJ\\": "app/libraries/Project"
},
所以我以 PJ\Constants::$langs
的形式访问这个属性。
这种方法是有效的,但我怀疑它是否是最有效或正确的方法。我的意思是,通过创建一个完整的服务提供者和 facade 等等来“传播”变量是正确的方法吗?或者我应该把这些数据放在哪里?
谢谢你的建议。
编辑 # 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...']
]
举个例子。 Index 是类别的 id,Value 是与类别相关联的信息。
我需要这个数组,也可在所有控制器和视图。
那么,我应该将它保存为一个 Config 变量吗?否则我如何存储这些数据; 什么是最好的和语义正确的方法?