Laravel Facade获得变量

时间:2014-02-18 05:59:58

标签: laravel laravel-4 facade

假设我们在Laravel中有以下课程

class myClass {
    private $_someArray;

    // Functions to manipulate $_someArray
    public function someArray() {
        return $this->_someArray;
    }
}

我已经宣布了Facade和Alias。因此,我可以通过$_someArray调用myClass::someArray()及其属性来访问myClass::someArray()['key']

有没有办法在不调用函数的情况下获取数组?即我希望能够做myClass::someArray['key']

之类的事情

3 个答案:

答案 0 :(得分:0)

默认情况下,facade通过Facades __ callStatic 方法调用提供程序方法,而不是属性。

public static function __callStatic($method, $args)
    {
        $instance = static::resolveFacadeInstance(static::getFacadeAccessor());

        switch (count($args))
        {
            case 0:
                return $instance->$method();

            case 1:
                return $instance->$method($args[0]);

            case 2:
                return $instance->$method($args[0], $args[1]);

            case 3:
                return $instance->$method($args[0], $args[1], $args[2]);

            case 4:
                return $instance->$method($args[0], $args[1], $args[2], $args[3]);

            default:
                return call_user_func_array(array($instance, $method), $args);
        }
    }

答案 1 :(得分:0)

我建议用户使用一个检索具有属性的对象的函数。

MyFacade::getSomeObject()->myProperty;

作为一个例子,函数可以从类常量或类变量中获取数据,并在需要时组合它们:

public function getSomeObject()
{
    $result = new \stdClass();
    $result->id = self::SOME_ID;        
    $result->myProperty = $this->someProperty;
    return $result;
}

答案 2 :(得分:-2)

这种方式有效:

myClass::$_someArray