【问题标题】:the correct way to access a static arrays from a static function inside a PHP class [duplicate]从 PHP 类中的静态函数访问静态数组的正确方法 [重复]
【发布时间】:2012-10-26 13:10:09
【问题描述】:

可能重复:
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;
   }
}
?>

【问题讨论】:

  • +1,否定其中一个反对票。努力让世界变得更美好。 :)

标签: php class static member


【解决方案1】:

您可以使用 self 例如:self::$variable

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

不同的是self会访问它使用的当前类(忽略继承),static会服从继承。

扩展答案

我有几次相同的课程。它们具有相同的方法和变量,但类名当然不同。

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

【讨论】:

    【解决方案2】:

    $tableFields = self::$tblFields;

    print_r($tableFields);

    【讨论】:

      【解决方案3】:

      您将使用静态关键字self

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

      【讨论】:

        猜你喜欢
        • 2013-01-31
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多