首頁  >  文章  >  後端開發  >  Yaf中init方法一開始就實例化多個類別並把它們存在私有屬性中與需要再去new 類別有什麼區別嗎?

Yaf中init方法一開始就實例化多個類別並把它們存在私有屬性中與需要再去new 類別有什麼區別嗎?

WBOY
WBOY原創
2016-10-22 00:14:141585瀏覽

註: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不過對於需要那些需要使用時實例化的類別並不適合寫在這,而且如果你的類別是遵循同一interface開發的,更換的時候只需修改init裡面的new。不管怎麼樣,我還是喜歡有Ioc容器

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn