使用后期静态绑定引用self的PHP语法

时间:2010-03-28 21:29:57

标签: php inheritance

当我学习PHP时,它几乎是程序性的,最近我一直在努力适应OOP的做事方式。然而,我一直关注的教程是在PHP 5.3之前生成的,当时引入了后期静态绑定。

我想知道的是当从父类调用函数时如何引用self

例如,这两个方法是为User类编写的,它是DatabaseObject的子类。现在他们坐在User类中,但是,因为他们在DatabaseObject的其他子类中使用,我想将它们提升为包含在DatabaseObject中。

public static function find_all()
  {
    global $database; 
    $result_set = self::find_by_sql("select * from ".self::$table_name);
    return $result_set;
  }

protected function cleaned_attributes()
  {
    global $database; 
    $clean_attributes = array();
    foreach($this->attributes() as $key => $value) 
      {
        $clean_attributes[$key] = $database->escape_value($value);
      }
    return $clean_attributes;
  }

所以我有三个问题:

1)当我将其移动到父级时,如何更改self::引用。它是static::还是类似的东西? 2)从我的代码调用函数时,我是否以同样的方式调用它,作为子类的函数,例如User::find_all()或者是否还有更改?
3)在开始斩断比特之前还有什么我需要知道的吗?

2 个答案:

答案 0 :(得分:0)

  

1)当我将self :: reference移动到父级时,如何更改它。它是静态的::或类似的东西?

它是static

  

2)从我的代码调用函数时,我是否以同样的方式调用它,作为子类的函数,例如User :: find_all(),或者还有更改吗?

它是User::find_all

3)在开始斩断比特之前还有什么我需要知道的吗?

是肯定的。静态不是不是“OOP的做事方式”。 OOP是关于对象,而不是关于类。静态方法实际上是具有花哨语法的程序,并且与这些程序一样糟糕。

答案 1 :(得分:0)

要查找的其他一些相关位: