Синтаксис PHP для ссылки на себя с поздним статическим связыванием - PullRequest
2 голосов
/ 29 марта 2010

Когда я выучил PHP, он был в значительной степени процедурным, совсем недавно я пытался приспособиться к ООП-образцу. Однако учебники, за которыми я следовал, были созданы до 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 голосов
/ 29 марта 2010

Некоторые другие связанные биты для поиска:

0 голосов
/ 29 марта 2010

1) Как изменить ссылку на себя ::, когда я перемещаю ее к родителю. Это статично :: или что-то подобное?

это static

2) При вызове функции из моего кода я вызываю ее так же, как функцию дочернего класса, например, User :: find_all (), или там тоже есть изменения?

это User::find_all

3) Есть ли еще что-то, что мне нужно знать, прежде чем я начну разделывать кусочки?

да. Статика не"ООП-способ ведения дел". ООП - это объекты, а не классы. Статические методы на самом деле являются процедурами с причудливым синтаксисом и так же плохи, как эти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...