使用后期静态绑定引用self的PHP语法
当我学习PHP时,它几乎是以过程的形式出现,最近我一直在尝试适应OOP的工作方式。然而,我所关注的教程是在PHP5.3引入后期静态绑定之前产生的 我想知道的是,当从父类调用函数时,如何引用使用后期静态绑定引用self的PHP语法,php,inheritance,Php,Inheritance,当我学习PHP时,它几乎是以过程的形式出现,最近我一直在尝试适应OOP的工作方式。然而,我所关注的教程是在PHP5.3引入后期静态绑定之前产生的 我想知道的是,当从父类调用函数时,如何引用self 例如,这两个方法是为一个用户类编写的,该类是DatabaseObject的子类。现在它们位于用户类中,但是,由于它们在DatabaseObject的其他子类中使用,我想将它们提升为包含在DatabaseObject中 public static function find_all() {
self
例如,这两个方法是为一个用户类编写的,该类是DatabaseObject的子类。现在它们位于用户类中,但是,由于它们在DatabaseObject的其他子类中使用,我想将它们提升为包含在DatabaseObject中
public static function find_all()
{
global $database;
$result_set = self::find_by_sql("select * from ".self::$table_name);
return $result_set;
}
以及:
所以我有三个问题:
1) 当我将引用移动到父对象时,如何更改self::
引用。它是静态的::
还是类似的东西?2) 当从我的代码调用函数时,我是否以同样的方式调用它,作为子类的函数,例如
User::find_all()
,或者是否也有更改?3) 在我开始切碎碎片之前,还有什么我需要知道的吗 1) 当我将self::reference移动到父对象时,如何更改它。它是静态的还是类似的 它是静态的 2) 当从我的代码中调用函数时,我是否以同样的方式调用它,作为子类的函数,例如User::find_all(),或者是否也有更改 它是
User::find_all
3) 在我开始切碎碎片之前,还有什么我需要知道的吗
对。静态不是“面向对象的做事方式”。OOP是关于对象的,而不是关于类的。静态方法实际上是具有奇特语法的过程,并且与这些方法一样糟糕
1) 当我将self::reference移动到父对象时,如何更改它。它是静态的还是类似的
它是静态的
2) 当从我的代码中调用函数时,我是否以同样的方式调用它,作为子类的函数,例如User::find_all(),或者是否也有更改
它是User::find_all
3) 在我开始切碎碎片之前,还有什么我需要知道的吗
对。静态不是“面向对象的做事方式”。OOP是关于对象的,而不是关于类的。静态方法实际上是具有奇特语法的过程,与这些方法一样糟糕。要查找的其他相关位:
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;
}