/ / PHP Accedi alla stessa classe da un file incluso nella classe - php, oop, class

PHP Accedi alla stessa classe da un file incluso nella classe - php, oop, class

Ecco la classe:

functions.php

class buildPage {

public function Set($var,$val){
$this->set->$var = $val;
}

function Body(){
ob_start();

include("pages/".$this->set->pageFile);
$page = ob_get_contents();

ob_end_clean();

return $page;
}

function Out(){
echo $this->Body();
}
}

Quindi ecco la pagina principale (indice) dello script.

index.php

include_once("include/functions.php");

$page = new buildPage();

$page->Set("pageTitle","Old Title");
$page->Set("pageFile","about.php");

$page->Out();

Ora come puoi vedere, include il file about.php attraverso la classe, in realtà all'interno della classe.

E ora, voglio accedere alla stessa classe buildPage () per cambiare il titolo della pagina.

about.php

<?php

$this->Set("pageTitle","New Title");
echo "<h1>About Us</h1>";

?>

Ma sfortunatamente, non succede nulla.

Per favore, sii gentile a richiedere qualche minuto per darmi un aiuto!

risposte:

0 per risposta № 1

OK. Sono riuscito a risolvere il problema da solo.

Funzione modificata Body () e Out () come segue:

function Body(){

$pageFile = $this->Get("pageFile");
if(empty($pageFile)){
$pageFile = "home.php";
}

$page_path = "pages/".$pageFile;

ob_start();

include($page_path);

if(!empty($page_set_arr) && is_array($page_set_arr)){
foreach($page_set_arr AS $k=>$v){
$this->Set($k,$v);
}
}

$page = ob_get_clean();

return $page;
}

function Out(){
$body = $this->Body();

echo $this->Header();
echo $body;
echo $this->Footer();
}

E poi ha cambiato il file about.php come segue:

<?php

$page_set_arr = array(
"pageTitle" => "About Us"
);

?>

<h1>About Us</h1>