2016-09-21 75 views
1

短而甜,我有一個控制器擴展Page_Controller和內包含負載的自定義模板功能,我想「組織」,並將此功能放入其他文件。組織模板功能

class BookingPage extends Page 
{ 

} 

class BookingPage_Controller extends Page_Controller 
{ 
    public function getMyTemplateVar() {} 
    public function MyTemplateVar2($param) {} 
    // x 1000~ more 
} 

我的問題在這裏,有沒有什麼辦法,只是內的特定Page_Controller全球,而不是創建模板功能?

我的強迫症是有一個適合把一切在一個單一的文件(控制器已經是3432線長)

回答

0

我設法做到這一點,像這樣:

class BookingPage extends Page {} 
class BookingPage_Controller extends \MyNamespace\Template\Functionality {} 

\ myNameSpace對象\模板\功能

namespace MyNamespace\Template; 

class Functionality extends \Page_Controller { 

    public function ExternalAPI() { 
     return new \MyNamespace\Rooms\ExternalRoomDataAPI(); 
    } 
} 

\ myNameSpace對象\客房\ ExternalRoomDataAPI

namespace MyNamespace\Rooms; 

class ExternalRoomDataAPI { 
    public function HelloWorld() { 
     $html = "Hello World"; 
     return $html; 
    } 
} 

MyTemplate.ss

$ExternalAPI.HelloWorld 
// result: Hello World 

有興趣知道是否有一個更清潔的方式,你可以從字面上擴展和延伸,只要延伸到整理功能這種方式爲您最終課程延伸Page_Controller或創建新對象並返回它們的方法/變量可無限期鏈接

+0

您可以使用「助手」單身人士或特徵。見http://php.net/manual/en/language.oop5.traits.php。或者如果他們的上下文更適合,則將其中一些方法移至擴展。 –