2010-12-28 10 views
0

私は1つの愚かな質問があります。 私は自分のフレームワークを書き続けようとしていますが、私は何かが欠けています。 私は基本クラスBase.class.phpをいくつか持っています。 Baseを拡張するSubBase.class.phpという別のクラスを書くと、1つの静的関数(多分)でBaseクラスで使う必要がある変数を1つ設定しようとしています。役割の中でそのPHP:静的関数の使用

class Base { 
public $vars; 
public function GetA() { 
    return $this->vars; 
} 
} 


public SubBase extends Base { 
public function __construct() { 
    $this->vars = array(); 
} 
} 

しかし、私は何かが欠け... よう 何かが、私の路盤が私のWebからサブページで、基本はprintHTMLクラスです。サブベースクラスo.O に$ this-> varsを設定したBaseクラスで、自分のWebにタイトルを設定しようとしています。私が間違っている場合は教えてください。 私はちょうど

<title> <?php echo Base::GetTitle(); ?> </title> 

やショーでの書き込みwonna

+1

コードのどこにでも静的関数はありません。 – BoltClock

+1

使用しているPHPのバージョンは? PHP 5.3より前のバージョンは、late static binding(LSB)をサポートしていません。 – alexn

+0

あなたのクラスで 'GetTitle()'はどこですか? –

答えて

0

さて、あなたは、静的プロパティとメソッドを見てみる必要があります。http://php.net/manual/en/language.oop5.static.php

をあなたが望むものを達成するために、あなたは次のことを試すことができます。

class Base { 

    //-------------------------------- 
    // Declare static property 
    public static $title = ''; 

    //-------------------------------- 
    // Declare static method 
    public static function GetTitle() { 
     return self::$title; 
    } 
} 

public SubBase extends Base { 

    //-------------------------------- 
    // Construct which overwrites 
    // Base::$title 
    public function __construct($newTitle){ 
     self::$title = $newTitle; 
    } 
} 

//-------------------------------- 
// Instantiate your SubBase object 
$subPage = new SubBase($newTitle = 'Welcome to my sub page'); 

//-------------------------------- 
// And in your HTML, use 
<title> <?php echo SubBase::GetTitle(); ?> </title> 

注意:私はSubBase :: GetTitle()を使用しました。 Base :: GetTitle();ではなく、 Base :: GetTitle()を使用すると、基本クラスで指定された値を使用しているため、出力は空白になります。私の例では、その:

public static $title = ''; 

あなたの路盤のクラスをインスタンス化する場合しかし、あなたはその後、ブランク値を上書きします「$ newTitleの」パラメータを、提供しています。

理想的には、これは機能するはずです。それでも、静的なプロパティとメソッドの使い方についてもっと学ぶことをお勧めします。

これが役に立ちます。

+0

私はすべてのページが新しいサブクラス(SubBase2、SubBase3)であり、すべて拡張するので、私は私のサブクラス(SubBase)ベースクラス。だから私はこれを使うことができませんが、OV Web Solutionsに感謝します。私はPHPマニュアルを数回読んでいますが、何も役に立たないとは思いません。 – pr4s40

+0

OVウェブソリューションは問題ですが、解決策を見つけることができません...私は...静的機能は最良の解決策ではないと思いますが、 – pr4s40

関連する問題