Я искал, но не смог найти окончательный ответ (если он есть) при использовании $ this в классе PHP. Я все еще пытаюсь склонить голову, используя подход ООП, и хочу убедиться, что я использую лучшие практики.Члены и методы класса PHP
Итак, мой вопрос в том, как и когда вы должны определить vars и когда вы должны использовать $ this для ссылки на них.
Скажет, у меня есть следующий класс ....
class Foo {
private $pin;
private $stat;
public function get_stat($pin) {
$this->stat = shell_exec("blah read $pin");
return $this->stat;
}
}
Таким образом, в приведенной выше функции, у меня есть переменные $ булавки, переданная метода класса. Это прекрасно работает без использования $ this-> контактный ... Однако приведенный ниже код, кажется, больше похоже, что это правильный способ сделать то же самое .....
class Foo {
private $pin = 0;
private $stat = 0;
public function get_stat($pin) {
$this->pin = $pin;
$this->stat = shell_exec("blah read $this->pin");
return $this->stat;
}
}
Кроме того, я поставил $ pin и $ stat vars to = 0. Я полагаю, это может быть просто значение по умолчанию, или я могу просто определить их, как в первом примере private $ pin; и частный $ stat ;.
Итак, вернемся к моему вопросу, каковы наилучшие методы использования членов и $ this в методах класса? И каковы были бы преимущества или недостатки на каждом примере?
Я получил довольно хороший ответ по этому поводу на [codereview.stackexchange] (http://codereview.stackexchange.com/). Проверьте это [здесь] (http://codereview.stackexchange.com/a/23857/20878) – jnthnjns
Спасибо за ссылку ASOK! Теперь имеет смысл, почему вы должны использовать только $ this ... для ссылки на свойства внутри класса. Я не мог понять отношения с доступом к ним за пределами класса. – user2233942
Пожалуйста, НИКОГДА не вызывайте оболочку с неопределенными значениями! 'shell_exec (« blah read $ pin »);' широко открыт для ввода кода. Всегда используйте функции экранирования, в этом случае для команд оболочки: escapeshellarg() – Sven