2016-09-21 73 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。或者如果他们的上下文更适合,则将其中一些方法移至扩展。 –