$ this против имени функции - PullRequest
       22

$ this против имени функции

3 голосов
/ 17 октября 2010

Я знакомлюсь с ООП и, наконец, начал создавать их в своих скриптах.Одна вещь, которую я не понимаю - это $ this после создания экземпляра класса.Например, этот парень написал:

class Form
{
protected $inputs = array();    

public function addInput($type, $name)
{
     $this->inputs[] = array("type" => $type,
            "name" => $name);
}


}

 $form = new form();

 $this->addInput("text", "username");
 $this->addInput("text", "password");

Обратите внимание, что две последние строки показывают, что он использовал $ this-> addInput ().

Чем он отличается от $ form-> addInput?Я всегда использовал имя переменной, которую я использую, чтобы создать экземпляр класса.Я не вижу, что делает $ this-> function ().Как PHP знает, на какой объект он ссылается?

Из того, что я понимаю, $ this-> var используется во всех методах этого объекта.Если нет $ this-> var, а есть простая переменная $, тогда ее нельзя использовать в других методах, кроме метода, в котором есть эта переменная $, верно?

связанный: https://stackoverflow.com/questions/2035449/why-is-oop-hard-for-me/3689613#3689613

1 Ответ

3 голосов
/ 17 октября 2010
// Incorrect
$this->addInput("text", "username");
$this->addInput("text", "password");

Этот код неверен.Нет $this, когда вы не в методе класса.Это должно быть $form.Итак, чтобы ответить на ваш вопрос: разница в том, что $form->addInput является правильным, а $this->addInput недействительным!

// Correct
$form->addInput("text", "username");
$form->addInput("text", "password");

Похоже, вы понимаете ООП лучше, чем человек, который написал этот код.Вы пьете из испорченного колодца.Хлоп!

...