Witam,
Spotakałem się z dwoma zapisami typu:
$this->name i $this->$name jaka jest różnica między nimi.
Słowo kluczowe this i znak dolara.
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Rzeszów
Pierwsze odwołuje się do atrubutu name bieżącego obiektu, drugie odwołuje się do atrybutu, którego nazwa zapisana jest w zmiennej $name.
- Rejestracja: dni
- Ostatnio: dni
Czesc, sam staram sie dobrze rozumiem slowo 'this' w jezyku programowania.
class App {
protected $controller = 'home';
protected $method = 'index';
protected $params = [];
public function __construct(){
$url = $this->parseUrl();
if(file_exists('../'.$url[0].'.php')){
$this->controller = $url[0];
unset($url[0]);
}
}
public function parseUrl(){
if(isset($_GET['url'])){
return $url = explode('/',filter_var(rtrim($_GET['url'], '/'), FILTER_SANITIZE_URL));
}
}
}
Teraz jak ja tlumacze slowko 'this' w tym kodzie.
$url = $this->parseUrl();
Do zmiennej $url w konstruktorze przypisujemy ta metode parseUrl(). Lecz tylko w tym konstruktorze.
$this->controller = $url[0];
Atrybut dzialajacy w tym kontrolerze rowna sie zmiennej url ktora zdefiniowalismy wczesniej o indeksie tablicy tablicy $_GET 0 - czyli pierwszej, zaraz po znaku "/".
Jesli zle rozumiem kod, prosze o poprawienie mnie.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Rzeszów
Nie przypisujemy, tylko wywołujemy jak coś.
A niżej równa się - to mógłbyś powiedzieć przy sprawdzaniu czy się równa. W tym przypadku robisz przypisanie.
A swoją drogą FILTER_SANITIZE_URL z tego co widzę w dokumentacji nie uchroni Cię przed błędem directory traversal.