2014-12-31 3 views
0

몇 가지 예를 사용하여 싱글 톤 패턴을 연습하고 있습니다. 지금까지 내 코드 :

class LimitedEditionBuggati { 
    private $props = array(
          'speed'  => 256, 
          'cylinders' => 18, 
          'color'  => 'metalic silver', 
          'hp'  => 1200, 
          'price'  => 5000000, 
          'vin'  => 'the one' 
          ); 
    private static $instance; 

    private function __construct(){} 

    public static function instance() { 
     if(empty($instance)) { 
      return new LimitedEditionBuggati(); 
     } 
     return self::$instance; 
    } 

    public function getProperty($property) { 
     return $this->props[$property]; 
    } 
} 

$myCar = LimitedEditionBuggati::instance(); 

가 어떻게 private static $instance 와서는 print_r($GLOBALS)를 사용하여 인쇄되지 않습니다?

+1

왜 다시 인쇄됩니까? – PeeHaa

+0

Google : PHP에서 싱글 톤을 사용하지 않는 이유는 무엇입니까 (Dependency Injection 사용). 왜 정적 (글로벌 상태, 하드 커플 링, 불량 코드 재사용)을 사용하지 않을 수 있습니다. 그러면 결국 코드를 ​​작성할 수있게됩니다. 새로운 전화도없고 통계도없고 싱글 톤도 없습니다. – Jimbo

답변

2

private static $instanceprint_r($GLOBALS)을 사용하여 인쇄되지 않습니다. 이 전역 변수와 비슷합니다으로 - - 그들은 PHP에서 전역 변수를하지 않기 때문에 그들이 $GLOBALS을 통해 전 세계적으로 볼 수 수없는 정적 클래스 변수는 한 번만 존재하는 변수는 비록

.

당신은 (아마도 당신을 위해 더 나은 알려진 개념) 함수 내부 정적 변수와 그것을 비교할 수 있습니다

정적 변수 $variable가 한 번만 존재하더라도
function my_function() 
{ 
    static $variable = 1; 
} 

my_function(); 
print_r($GLOBALS); 

- 전역 변수와 마찬가지로, 그것을 단지 $GLOBALS에 표시되지 않습니다.

+0

감사합니다 !!!!!!!!!!!!! –

관련 문제