2013-08-19 50 views
6

Tôi hơi bối rối một chút. Tôi đã đọc bài viết tuyệt vời của Alan Storm về số Magento Block Lifecycle Methods và theo tôi hiểu thì nên sử dụng phương thức protected _construct() để khởi tạo khối. Trong trường hợp của tôi, tôi chỉ muốn thiết lập đúng mẫu khối. Vì vậy, tôi cho rằng tôi nên sử dụngCấu trúc khối Magento - sử dụng _construct hoặc __construct?

protected function _construct() 
{ 
    parent::_construct(); 
    $this->setTemplate('stenik/qaforum/forum.phtml'); 
} 

Tuy nhiên, khi tôi nhìn vào các khối của một số các module Magento lõi, họ dường như sử dụng phương pháp php __construct để làm điều đó. Ví dụ: Mage_Poll_Block_Poll, Mage_ProductAlert_Block_Price, Mage_Rating_Block_Entity_Detailed, Mage_Review_Block_Form

Mặc dù cả hai cách đều thực sự hiệu quả, tôi muốn biết cách làm đúng.

Trả lời

8

Đó là cuối cùng học tập, nhưng đúng cách để làm It® là để ghi đè lên các nhà xây dựng Magento tức _construct theo yêu cầu của đội ngũ nòng cốt trong Mage_Core_Block_Abstract:

/** 
* Internal constructor, that is called from real constructor 
* 
* Please override this one instead of overriding real __construct constructor 
* 
*/ 
protected function _construct() 
{ 
    /** 
    * Please override this one instead of overriding real __construct constructor 
    */ 
} 
+5

+1 cho những lời khuyên đúng, nhưng isn này' t 100% học thuật - khi bạn ghi đè phương thức '__construct', bạn giới thiệu khả năng không gọi cha mẹ' __construct', hoặc gọi hàm cha '__construct' và loại bỏ các đối số hàm tạo. Điều này có thể tạo ra mâu thuẫn trong cách khối hoạt động khi được sử dụng trong bản cập nhật xml bố cục. –

+0

Worth chỉ ra, như tôi câu trả lời của tôi giả định rằng các nhà phát triển luôn luôn làm đúng Thing ®. – benmarks

Các vấn đề liên quan