-3

Webサイトというクラス内に2つの関数があります。2つの関数はcheckStatusとkillPageです。

関数killPageは、完全な単語テキストhultの代わりに、単純なスタイルを使用することを目的としています。関数checkStatusは、コード内でkillPageを使用する必要がありますが、使用できません。

コードは次のとおりです。

class website 
{
    function killPage($content)
    {
        die("

            <h1>" . Settings::WEBSITE_NAME ." encountered an error</h1>

            " . $content . "

            ");
    }

    function checkStatus(){
        if(Settings::STATUS == 'M')
        {

            $website->killPage('We are in maintence');
        }
        if(Settings::STATUS == 'O')
        {
        }
        if(Settings::STATUS == 'C')
        {
            $website->killPage('We are closed');
        }
    }
}

$website = new Website;

私が得るエラー:

未定義の変数:website &&非オブジェクトのメンバー関数killPage()の呼び出し

4

3 に答える 3

2

$thisクラスの現在のインスタンスを参照しますが、$classname

于 2013-03-22T20:26:32.163 に答える
1

$websiteに変更$this

class website 
{
    function killPage($content)
    {
        die("

            <h1>" . Settings::WEBSITE_NAME ." encountered an error</h1>

            " . $content . "

            ");
    }

    function checkStatus(){
        if(Settings::STATUS == 'M')
        {

            $this->killPage('We are in maintence');
        }
        if(Settings::STATUS == 'O')
        {
        }
        if(Settings::STATUS == 'C')
        {
            $this->killPage('We are closed');
        }
    }
}
于 2013-03-22T20:26:51.757 に答える
0

問題はここにあります:

function checkStatus(){
    if(Settings::STATUS == 'M')
    {
        Settings::STATUS == 'M';
        $website->killPage('We are in maintence');
    }

$websiteスコープに含まれていない間接参照を行っています。

この場合、$websiteはグローバル変数であるため、スコープに含める必要があります。

function checkStatus() {
    global $website;

    if(Settings::STATUS == 'M')

EDITまたは他の人が指摘しているようにcheckStatus、メンバー関数と同様に、を使用する必要があります$this

于 2013-03-22T20:26:26.030 に答える