2016-09-21 2 views
1

Kurz und gut, ich habe eine Controller-Erweiterung und innerhalb enthält viele benutzerdefinierte Template-Funktionalität, die ich "organisieren" möchte und diese Funktionalität in andere Dateien einfügen.Organisieren Vorlage Funktionalität

class BookingPage extends Page 
{ 

} 

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

Meine Frage hier ist es eine Möglichkeit, Template-Funktionalität global und nicht nur innerhalb einer bestimmten Page_Controller zu schaffen?

Mein OCD wird in einer einzigen Datei, die eine Passung alles setzen (Controller ist bereits 3432 Zeilen lang)

Antwort

0

ich dies wie so zu erreichen, verwaltet:

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

\ MyNamespace \ Template \ Funktionalität

namespace MyNamespace\Template; 

class Functionality extends \Page_Controller { 

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

\ MyNamespace \ Zimmer \ ExternalRoomDataAPI

namespace MyNamespace\Rooms; 

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

MyTemplate.ss

$ExternalAPI.HelloWorld 
// result: Hello World 

Am daran interessiert zu wissen, ob es ein sauberer Weg ist, können Sie buchstäblich erweitern und verlängern und erweitern Sie Ihre Funktionalität auf diese Weise so lange zu organisieren, wie Ihre Die letzte Klasse erweitert oder erstellt neue Objekte und gibt sie zurück, da ihre Methoden/Variablen unbegrenzt kettenbar sind.

+0

Sie könnten einen "Helfer" Singleton oder Traits verwenden. Siehe http://php.net/manual/en/language.oop5.traits.php. Oder verschieben Sie einige Methoden zu einer Erweiterung, wenn deren Kontext besser passt. –