PHP доступ того же класса из файла, включенного в класс - PullRequest
0 голосов
/ 01 апреля 2012

Вот класс:

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();
    }
}

Итак, вот главная (индексная) страница скрипта.

index.php

include_once('include/functions.php');

$page = new buildPage();

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

$page->Out();

Теперь, как вы можете видеть, он включает в себя файл about.php через класс, фактически внутри класса.

А теперь я хочучтобы получить доступ к тому же классу buildPage (), чтобы изменить заголовок страницы.

about.php

<?php

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

?>

Но, к сожалению, ничего не происходит.

Пожалуйста, будьте добры, потратьте несколько минут, чтобы помочь мне!

1 Ответ

0 голосов
/ 01 апреля 2012

OK.Мне удалось решить проблему самостоятельно.

Изменены функции Body () и Out () следующим образом:

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();
}

А затем изменили файл about.php следующим образом:

<?php

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

?>

<h1>About Us</h1>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...