2014-02-18 2 views
1

우리가 LaravelLaravel 외관 얻을 변수

class myClass { 
    private $_someArray; 

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

나는 외관 및 별칭을 선언에서 다음 클래스를 말한다. 그래서 나는 에 myClass::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; 
}