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, botów: 0