Szukałem, ale nie mogłem znaleźć ostatecznej odpowiedzi (jeśli istnieje) na używanie $ this w klasie PHP. Nadal staram się owijać głowę za pomocą metody OOP i chcę się upewnić, że używam najlepszych praktyk.Członkowie i metody klasy PHP
Więc moje pytanie dotyczy tego, w jaki sposób i kiedy powinieneś zdefiniować vary i kiedy powinieneś użyć $ this, aby je odnieść.
że mam następujące klasy ....
class Foo {
private $pin;
private $stat;
public function get_stat($pin) {
$this->stat = shell_exec("blah read $pin");
return $this->stat;
}
}
Więc w powyższej funkcji, mam var $ przekazany do metody klasy pin. Działa to dobrze, bez konieczności korzystania z $ this-> pin ... jednak poniższy kod wydaje się bardziej jak jest to dobry sposób, żeby zrobić to samo .....
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;
}
}
Również mam ustawić $ pin i $ stat vars to = 0. Domyślam się, że może to być wartość domyślna lub mogę zdefiniować je tak, jak w pierwszym przykładzie private $ pin; i prywatne statystyki $ ;.
Wracając do mojego pytania, jakie są najlepsze praktyki dotyczące używania członków i $ this w metodach klasowych? Jakie byłyby zalety lub wady każdego z przykładów?
Mam dość dobrą odpowiedź na ten temat na [codereview.stackexchange] (http://codereview.stackexchange.com/). Sprawdź to [tutaj] (http://codereview.stackexchange.com/a/23857/20878) – jnthnjns
Dzięki za link ASOK! Teraz ma sens, dlaczego powinieneś używać tylko $ this ... do odwoływania się do właściwości w klasie. Nie mogłem zrozumieć związku z dostępem do nich poza klasą. – user2233942
Proszę NIGDY nie wywoływać powłoki z wartością bez zmian! 'shell_exec (" bla czytaj $ pin ");' jest szeroko otwarte na wstrzykiwanie kodu. Zawsze używaj funkcji wychodzących, w tym przypadku w przypadku poleceń powłoki: escapeshellarg() – Sven