Php 在Laravel立面中使用静态变量

Php 在Laravel立面中使用静态变量,php,laravel,laravel-4,laravel-facade,Php,Laravel,Laravel 4,Laravel Facade,我有一个Facade(在本例中是singleton),我使用服务提供者注册它: 服务提供商 use App; class FacilityServiceProvider extends ServiceProvider { public function register() { $this->app->singleton('Facility', function(){ return new Facility();

我有一个Facade(在本例中是singleton),我使用
服务提供者注册它:

服务提供商

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');
        });
    }
}
正面

use Illuminate\Support\Facades\Facade;

class FacilityFacade extends Facade {

    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor() { return 'Facility'; }
}
现在,我希望在我的
工具
类中有静态变量:

Facility.php

class Facility
{
    public static $MODEL_NOT_FOUND = '-1';

    public function __construct() { ... }
}
但是当我使用
工具::$MODEL\u NOT\u FOUND
时,我可以
访问未声明的静态属性


我做错了什么

这是因为Facade类只将方法调用“重定向”到底层类。因此,您无法直接访问属性。最简单的解决方案是使用getter方法

class Facility
{
    public static $MODEL_NOT_FOUND = '-1';

    public function __construct() { ... }

    public function getModelNotFound(){
        return self::$MODEL_NOT_FOUND;
    }
}

另一种方法是编写自己的Facade类,该类从
illighted\Support\Facades\Facade
扩展,并利用它直接访问属性。我不喜欢的是,我必须将其作为函数而不是变量调用(即
Facility::getModelNotFound()
而不是
Facility::$ModelNotFound
或任何名称)。你有什么建议吗?你不可能用Laravel的Facade类调用函数。然而,正如我提到的。你可以自己写。给我点时间。。。我会写一个,然后更新答案。。。我认为像
\uu getStatic()
这样的东西是可能的,但显然没有这样的东西。你必须使用方法或者根本不使用外观:/哈哈,好的,谢谢。我想我被函数名难住了