2014-02-18 68 views
1

說我們有在LaravelLaravel門面GET變量

class myClass { 
    private $_someArray; 

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

我已經聲明瞭一個門面和別名下面的類。所以我可以通過調用myClass::someArray()訪問$_someArray,它的屬性爲myClass::someArray()['key']

有沒有一種方法可以在不調用函數的情況下獲得數組?即我想能夠做類似myClass::someArray['key']

+0

你不能做到這一點。 'PHP'對於屬性重載有'__get',但它只對實例/對象有效。 –

回答

-1

默認情況下,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); 
     } 
    } 
-2

這樣工作的:

myClass::$_someArray 
0

,我建議用戶檢索與屬性的對象的功能。

MyFacade::getSomeObject()->myProperty; 

爲例,功能可以從類常數或類變量取數據,並根據需要將它們結合起來:

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