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

您将使用 static 关键字self

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

$tableFields = self::$tblFields;

print_r($tableFields);

于 2012-10-26T13:12:37.583 回答