처음에 여러 클래스를 인스턴스화하고 이를 개인 속성에 저장하는 Yaf의 init 메소드와 새 클래스를 다시 생성해야 하는 필요성 사이에 차이점이 있습니까?

WBOY
풀어 주다: 2016-10-22 00:14:14
원래의
1623명이 탐색했습니다.

참고: Yaf의 init는 기본적으로 __construct()

으로 이해됩니다.
<code>class Order{
    private $extend     = '';
    private $order      = '';
    public function init(){
        parent::init();
        $this->order      = new Order();
        $this->extend     = new OrderEx();
    }

    public function listAction(){
        $this->order->public();
    }
    
    public function makeAction(){
        $this->extend->public();
    }
}</code>
로그인 후 복사
로그인 후 복사

다음 글과 다른 점이 있나요?

<code>class Order{
    private $extend     = '';
    private $order      = '';
    public function init(){
        parent::init();
    }

    public function listAction(){
        $order = new Order();
        $order->public();
    }
    
    public function makeAction(){
        $extend= new extend();
        $extend->public();
    }
}</code>
로그인 후 복사
로그인 후 복사

저는 초보자입니다. 좋은 프로그래밍 습관을 갖고 싶습니다. 기초가 약하기 때문에 조언을 부탁드립니다

답글 내용:

참고: Yaf의 init는 기본적으로 __construct()

으로 이해됩니다.
<code>class Order{
    private $extend     = '';
    private $order      = '';
    public function init(){
        parent::init();
        $this->order      = new Order();
        $this->extend     = new OrderEx();
    }

    public function listAction(){
        $this->order->public();
    }
    
    public function makeAction(){
        $this->extend->public();
    }
}</code>
로그인 후 복사
로그인 후 복사

다음 글과 다른 점이 있나요?

<code>class Order{
    private $extend     = '';
    private $order      = '';
    public function init(){
        parent::init();
    }

    public function listAction(){
        $order = new Order();
        $order->public();
    }
    
    public function makeAction(){
        $extend= new extend();
        $extend->public();
    }
}</code>
로그인 후 복사
로그인 후 복사

저는 초보자입니다. 좋은 프로그래밍 습관을 갖고 싶습니다. 기초가 약하기 때문에 조언을 부탁드립니다

위와 같이 작성하면 현재 클래스 범위에서 싱글톤을 보장하고 new의 반복 작성을 줄일 수 있습니다. 그러나 사용 시 인스턴스화해야 하는 클래스와 다음과 같이 클래스를 개발하는 경우 여기에 작성하는 것은 적합하지 않습니다. 동일한 인터페이스 예, 교체할 때 init에서 new만 수정하면 됩니다. 어쨌든, 나는 여전히 Ioc 컨테이너를 갖고 싶다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿