Słowo kluczowe this i znak dolara.

0

Witam,
Spotakałem się z dwoma zapisami typu:
$this->name i $this->$name jaka jest różnica między nimi.

4

Pierwsze odwołuje się do atrubutu name bieżącego obiektu, drugie odwołuje się do atrybutu, którego nazwa zapisana jest w zmiennej $name.

0

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.

0

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.

0

Dziekuje bardzo za odpowiedz. Ucze sie dopiero, musi mi sie to wszystko poukladac w glowie. Jaka jest alternatywa, nowoczesniejsza metoda dla FILTER_SANITIZE_URL?

1 użytkowników online, w tym zalogowanych: 0, gości: 1