假设我们在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']
答案 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