2011-11-18 2 views
1

클래스 변수를 직접적으로 액세스하는 대신 클래스 메서드를 통해 간접적으로 액세스하는 것이 더 효율적인지 알고 싶습니다.PHP 간접 객체 액세스 효율성

는 I는 다음의 (의사) 코드를 가지고

class foo { 

    private $some_object;  

    public function __construct(){ 

     $this->some_object = new someObject();  
    } 

    public function getSomeObject(){ 

     return $this->some_object;  
    } 

} //end of class foo 

제 1 액세스 방법이 직접 저장된 객체를 사용 및 두 번째 방법은 $f->some_object 통해 액세스

$f   = new foo(); 
$storedObject = $f->getSomeObject(); 

for (loop 10 times) { 

    print $storedObject->getSomeProperty(); 

} 

저장된 개체에 액세스 getSomeObject() 방법

$f   = new foo(); 

for(loop 10 times){ 

    print $f->getSomeObject()->getSomeProperty(); 

} 

PHP는 객체를 참조로 반환하지만 메소드 2는 나에게 비효율적으로 보입니다. 또는 둘 다 동일합니까?

+3

첫 번째 것은 더 빠르지 만, 축하해야 할 차이가 있음을 알게되면 두 번째 Facebook을 실행하게 될 것입니다 (즉, 그러한 최적화를 거치지 않고 프로파일 링 및 최적화 작업을 수행 할 때만 ' 성능 문제가 있습니다.) – deviousdodo

+0

감사합니다. 깨끗한 코딩 관점에서 말입니다. 그것은 또한 내가 만든 여분의 변수를 추적하는 두통을 덜어 줄 것이다. – PowerAktar

답변

0

PHP 개체는 값에 의해 반환됩니다. 값은 객체를 나타냅니다 (객체 식별자 값).

다음으로는 함수의 반환 값을 저장하고 함수를 10 번 호출하는 대신 10 번 사용하고 반환 값을 직접 사용하는 것이 좋습니다.

코드에 대해 더 이해가 되는가? 일반적으로 코드는 하나의 변수 이름과 함수 이름을 읽는 대신 하나의 변수 이름 만 있으면 더 읽기 쉽습니다. 그러나 그것은 당신의 선택입니다.