Ich bin derzeit Refactoring Code von einer Seite Parser-Funktion zu OOP. Ich habe Schwierigkeiten mit und Ausführen von Code aus einer Datei in dem Haupt Funktionsumfang:Wie Code aus enthaltenem Dateipfad des Objekts in Funktionsumfang außerhalb des Objekts ausführen?
Objekt:
class phpFragment {
private $sData;
function render() {
return include $oElement->sData;
}
}
Object Container-Klasse:
class pageData {
protected $aPhpFragments;
protected $aCssFragments;
public function outputData($sTag) {
switch($sTag) {
case 'php':
foreach($this->aPhpFragments as $oPhpFragment) {
return $oPhpFragment->render();
}
break;
case 'css':
foreach($this->aCssFragments as $oCssFragment) {
echo $oCssFragment->render();
}
break;
}
}
}
Hauptfunktion:
function parsePage($sLanguageCode) {
$oTranslator = new translator($sLanguageCode);
$aTranslations = $oTranslator->translations('page');
$oBuilderClass = new builder($aTranslations);
//... queries to get data and set pagedata and get the template file
$oPageData = $oPage->getData();
$aTemplateTags = $oTemplate->getTags();
foreach($aTemplateTags as $sTag) {
$oPageData->outputData($sTag);
}
//....
}
Code von enthalten (Beispiel):
Ich möchte die Builder-Klasse nur einmal initiieren, weil sie ziemlich viele Daten enthält, und ich möchte das nicht auf jedem Include neu erstellen.
Wie kann ich den Code des Include in die parsePage-Funktion zurückgeben, wo die Builder-Klasse verwendet werden kann?
Sie erwähnen ein Include in der 'render()' -Funktion am oberen Rand der Seite ist dies der Inhalt, den Sie am Ende der Seite anzeigen? Ist das das Gleiche? Die '$ oBuilderClass' wird in der 'parsePage'-Funktion generiert, aber im Include referenziert, so dass sie mir ziemlich verwirrt erscheint. – Martin
" Wie kann ich den Code des Include in die parsePage-Funktion zurückgeben "welche Include? Meinst du, du willst die Klasse 'Builder' nur einmal instanziieren, d. das [Singleton-Muster] (https://en.wikipedia.org/wiki/Singleton_pattern), oder das Sie nur ['include'] möchten (http://php.net/manual/en/function.include.php)) die Quelldatei, die diese Klasse einmal enthält? – Schlaus