从PHP类中的静态函数访问静态数组的正确方法

时间:2012-10-26 13:10:09

标签: php class static member

  

可能重复:
  how do i access static member of a class?

我有这门课。在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;
   }
}
?>

3 个答案:

答案 0 :(得分:2)

您可以使用自我,例如:self::$variable

您可以使用静态,例如:static::$variable

区别在于self将访问它所使用的当前类(忽略继承),static将服从继承。

扩展答案

  

我有同样的课这几次。他们有相同的方法和变量,但当然类名不同。

这听起来像需要重构。在这种情况下,创建一个“抽象类”,它定义了其他类定义的所有属性和方法,并将它们从其他类中删除(因为它们现在位于抽象类中)。然后扩展抽象类以根据需要创建单独的类,其中只包含其中的任何更改。

答案 1 :(得分:1)

您可以使用静态关键字self

public static function createNew($link , $tblfields){
    $reftbArr = self::$tblFields;
}

答案 2 :(得分:1)

$ tableFields = self :: $ tblFields;

的print_r($ tableFields);