2016-09-21 2 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 내에서 세계적하지 템플릿 기능을 만들 수있는 방법은 무엇입니까?

내 OCD가

답변

0

내가 지금처럼이를 위해 관리 (컨트롤러가 이미 3432 선 길이) 하나의 파일에 최선을 다하는 발작을 가지고있다 :

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 

오전, 당신은 말 그대로 확장하고 확장만큼 당신의 기능을 구성하기 위해이 방법을 확장 할 수 있습니다 final 클래스는 Page_Controller을 확장하거나 새 객체를 만들고 메소드/변수가 무한대로 체인 가능하도록 반환합니다.

+0

"도우미"싱글 톤 또는 특성을 사용할 수 있습니다. http://php.net/manual/en/language.oop5.traits.php를 참조하십시오. 또는 컨텍스트가 더 잘 맞는 경우 일부 메소드를 확장으로 이동하십시오. –