Kou*_*sha 3 php laravel laravel-4 laravel-facade
我有一个 Facade(在本例中为单例),我使用以下命令注册它ServiceProvider:
服务提供者
use App;
class FacilityServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton('Facility', function(){
return new Facility();
});
// Shortcut so developers don't need to add an Alias in app/config/app.php
$this->app->booting(function()
{
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('Facility', 'CLG\Facility\Facades\FacilityFacade');
});
}
}
Run Code Online (Sandbox Code Playgroud)
正面
use Illuminate\Support\Facades\Facade;
class FacilityFacade extends Facade {
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor() { return 'Facility'; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我想在我的Facility班级中有静态变量:
设施.php
class Facility
{
public static $MODEL_NOT_FOUND = '-1';
public function __construct() { ... }
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用时Facility::$MODEL_NOT_FOUND,我得到Access to undeclared static property.
我究竟做错了什么?
那是因为 Facade 类只将方法调用“重定向”到底层类。所以你不能直接访问属性。最简单的解决方案是使用 getter 方法。
class Facility
{
public static $MODEL_NOT_FOUND = '-1';
public function __construct() { ... }
public function getModelNotFound(){
return self::$MODEL_NOT_FOUND;
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是编写您自己的 Facade 类,该类扩展自Illuminate\Support\Facades\Facade并利用魔术方法直接访问属性
| 归档时间: |
|
| 查看次数: |
9222 次 |
| 最近记录: |