2012-03-06 2 views
1

OOP를 배우려는 중이며 몇 가지 질문이 있습니다. 나는 뒤에 오는 포스트뿐만 아니라 PHP Objects, Patterns, and Practice에있는 처음 몇 장을 읽었다; Nettuts+, PHP FreaksPHPRO.Noob PHP OOP Questions : 생성자와 중괄호

  1. 하위 클래스에서 생성자는 부모 클래스에 이미있는 변수를 나열해야합니까?
  2. 메소드 또는 다른 장소에서 속성을 검색 할 때 내 값을 중괄호 (예 : {$ this-> id})로 묶어야하는 이유는 무엇입니까?
  3. 누군가가 (내가 뭘 잘못하고 있는지와 같은) 조언이 있다면, 나는 어떤 비판도 할 수 있습니다.
    class Element { 
        public $tag; 
        public $id; 
    
        function __construct($tag, $id) { 
        $this->tag = $tag; 
        $this->id = $id; 
        } 
    
        public function getAttributes() { 
        return "id='{$this->id}'"; 
        } 
    } 
    
    
    class NormalElement extends Element { 
        public $text; 
    
        function __construct($tag, $id, $text) { 
        parent::__construct($tag, $id); 
        $this->text = $text; 
        } 
    
        public function getElement() { 
        return "<{$this->tag}>{$this->text}</{$this->tag}>"; 
        } 
    } 
    
    class VoidElement extends Element { 
    
        function __construct($tag, $id) { 
        parent::__construct($tag, $id); 
        } 
    
        public function getElement() { 
        return "<{$this->tag} " . parent::getAttributes() . " />"; 
        } 
    } 
    

은이 게시물에 올바르게 표시하려면 코드를 얻기 위해 시도하는 동안을 보냈다, 그러나 그것은 파괴 유지합니다.

+2

와우 ... 그게 가장 이상한 경험이었습니다. 그래서 게시물의 형식을 지정하려고했는데 ... 그 순서가 정해진 목록에 관한 것이 었습니다. 작동하도록 규칙을 던져야했습니다. – prodigitalson

답변

3
  1. 아니요. 상위 클래스의 생성자를 호출 할 수 있습니다. 이 값을 인수로 받아 들일 필요가 있다면 자식 클래스의 생성자에 대한 추가 매개 변수가 필요합니다.
  2. 문자열에 값을 쓰고 -> 연산자를 사용할 때는이를 래핑해야합니다 중괄호로 PHP가 여러분이 회원에 대해 말하는 것을 알고 있으므로 $this이 아닙니다.
2

2) php가 변수 이름 (이 경우 '-')에서 사용할 수없는 문자에 도달하면 인용 된 문자열에 포함 된 변수를 구문 분석하지 않기 때문입니다. 그런 다음 -는 문자열 리터럴의 일부일뿐입니다. 물론, 그것을 중괄호로 묶지 않는 한.