Home  >  Article  >  Backend Development  >  Is there any difference between the init method in Yaf that instantiates multiple classes at the beginning and stores them in private properties and the need to create a new class again?

Is there any difference between the init method in Yaf that instantiates multiple classes at the beginning and stores them in private properties and the need to create a new class again?

WBOY
WBOYOriginal
2016-10-22 00:14:141625browse

Note: init in Yaf is understood by default as __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>
Is

any different from the following writing?

<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>

I am a newbie, I hope to have good programming habits, but some basics are not solid, so I hope you can give me some advice

Reply content:

Note: init in Yaf is understood by default as __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>
Is

any different from the following writing?

<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>

I am a newbie, I hope to have good programming habits, but some basics are not solid, so I hope you can give me some advice

Writing like the above can ensure a singleton in the current class scope and reduce repeated writing of new. However, it is not suitable to write here for classes that need to be instantiated when used, and if your class is developed following the same interface, When replacing, you only need to modify new in init. Anyway, I still like to have Ioc containers

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn