2

重複の可能性:
クラスの静的メンバーにアクセスするにはどうすればよいですか?

私はこのクラスを持っています。そのcreateNew機能については、 を参照してください$reftbArr = tc_group::$tblFields;

私はこのクラスに似たクラスを数回持っています。メソッドと変数は同じですが、もちろんクラス名は異なります。

ハードコーディングされたクラス名を持たずに関数createNewにアクセスするための最良の方法は?tc_group::$tblFields;

<?php
class tc_group {
    public $id;
    public $password;
    private static $tableName = "tc_group";

    public static $tblFields = array(
        ':id'        => array('value' => '','required' => 0),
        ':password'  => array('value' => '','required' => 0)
    );

   public static function createNew($link , $tblfields){
    $reftbArr = tc_group::$tblFields;
   }
}
?>
4

3 に答える 3

2

たとえば、self を使用できます。self::$variable

たとえば、静的を使用できます。static::$variable

違いは、self はそれが使用されている現在のクラスにアクセスし (継承を無視)、static は継承に従うことです。

詳細な回答

私はこの同じクラスを数回持っています。メソッドと変数は同じですが、もちろんクラス名は異なります。

リファクタリングが必要なようです。その場合、他のクラスによって定義されたすべてのプロパティとメソッドを定義する「抽象クラス」を作成し、それらを他のクラスから削除します (現在は抽象クラスにあるため)。次に、抽象クラスを拡張して、必要に応じて、変更内容のみを含む個別のクラスを作成します。

于 2012-10-26T13:44:55.413 に答える
1

$ tableFields = self :: $ tblFields;

print_r($ tableFields);

于 2012-10-26T13:12:37.583 に答える
1

staticキーワードを使用しますself

public static function createNew($link , $tblfields){
    $reftbArr = self::$tblFields;
}
于 2012-10-26T13:11:22.947 に答える