我刚开始和Laravel合作.我需要重写几年前制作的整个系统,使用Laravel 4作为基础框架.在我的旧系统中,我使用一个带有一些常量声明的constant.php文件,以及一个包含大量数组的globals.php文件(例如,类别状态,事件类型,lang等).通过这样做,我可以使用类似的东西
foreach ( $langs as $code => $domain ) {
// Some stuff
}
Run Code Online (Sandbox Code Playgroud)
我应用中的任何地方.
我的问题是,如何以所谓的"laravel方式"存储该信息.我尝试使用某种对象来存储此信息,将其设置为服务并为其创建一个外观:
应用程序/库/项目/ 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'
];
}
Run Code Online (Sandbox Code Playgroud)
应用程序/库/项目/ ConstantsServiceProvider.php
namespace PJ;
use Illuminate\Support\ServiceProvider;
class ConstantsServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton('PJConstants', function() {
return new Constants;
});
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/库/项目/ ConstantsFacade.php
namespace PJ; …
Run Code Online (Sandbox Code Playgroud) 再会!
我读得越多,我就越对此感到困惑。Facade 和 Aliases 有什么区别?
我有这个类:
/app/libraries/Project/Data.php
namespace PJ;
class Data {
// It is much like a data container, with static methods and properties for saving info
}
Run Code Online (Sandbox Code Playgroud)
以及相应的外观,因此我可以仅使用PJD::进行访问。
根据一些网页:
... Laravel Facades 是代理。它们环绕并调用代码的底层真实实现上的函数。此外,在 Laravel 应用程序的上下文中,通过将它们分配给别名来访问这些 Facade。这种依赖注入容器的使用允许你通过简单地调用 File 来引用像 Illuminate\Support\Facades\Filesystem 这样的东西。( http://ryantablada.com/post/proxies-service-locators-alias-facades-and-war )
但是,我还发现并成功测试了添加以下内容:
__app/config/app.php__
'aliases' => array(
//....,
'PJD' => 'PJ\Data',
),
Run Code Online (Sandbox Code Playgroud)
我也可以用同样的方式访问我的班级。
那么,有什么区别呢?
谢谢
编辑#01
我在/app/libraries/Project/Data.php 中创建了一个名为 Data 的类
namespace PJ;
class Data {
// It is much like a data container, with …
Run Code Online (Sandbox Code Playgroud)