当我学习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)在开始斩断比特之前还有什么我需要知道的吗?
答案 0 :(得分:0)
1)当我将self :: reference移动到父级时,如何更改它。它是静态的::或类似的东西?
它是static
2)从我的代码调用函数时,我是否以同样的方式调用它,作为子类的函数,例如User :: find_all(),或者还有更改吗?
它是User::find_all
3)在开始斩断比特之前还有什么我需要知道的吗?
是肯定的。静态不是不是“OOP的做事方式”。 OOP是关于对象,而不是关于类。静态方法实际上是具有花哨语法的程序,并且与这些程序一样糟糕。
答案 1 :(得分:0)
要查找的其他一些相关位: