Heim  >  Artikel  >  Backend-Entwicklung  >  Gibt es einen Unterschied zwischen der init-Methode in Yaf, die zu Beginn mehrere Klassen instanziiert und in privaten Eigenschaften speichert, und der Notwendigkeit, erneut eine neue Klasse zu erstellen?

Gibt es einen Unterschied zwischen der init-Methode in Yaf, die zu Beginn mehrere Klassen instanziiert und in privaten Eigenschaften speichert, und der Notwendigkeit, erneut eine neue Klasse zu erstellen?

WBOY
WBOYOriginal
2016-10-22 00:14:141618Durchsuche

Hinweis: Init in Yaf wird standardmäßig als __construct()

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

Gibt es einen Unterschied zum folgenden Schreiben?

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

Ich bin ein Neuling, ich hoffe, dass ich gute Programmiergewohnheiten habe, ich habe einige schwache Grundlagen, also hoffe ich, dass Sie mir einen Rat geben können

Antwortinhalt:

Hinweis: Init in Yaf wird standardmäßig als __construct()

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

Gibt es einen Unterschied zum folgenden Schreiben?

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

Ich bin ein Neuling, ich hoffe, dass ich gute Programmiergewohnheiten habe, ich habe einige schwache Grundlagen, also hoffe ich, dass Sie mir einen Rat geben können

Das Schreiben wie oben kann einen Singleton im aktuellen Klassenbereich sicherstellen und das wiederholte Schreiben neuer Klassen reduzieren. Es ist jedoch nicht geeignet, hier für Klassen zu schreiben, die bei der Verwendung instanziiert werden müssen, und wenn Ihre Klasse nach dem entwickelt wird gleiche Schnittstelle Ja, Sie müssen beim Ersetzen nur new in init ändern. Wie auch immer, ich habe immer noch gerne Ioc-Container

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn