Autor | Zpráva | ||
---|---|---|---|
ineedmoremen Profil * |
#1 · Zasláno: 18. 5. 2014, 13:51:24
zdravim,
zacinam se ucit oop a mam tu jeden problem. Vubec nechapu, jak se pouziva $this. Cetl jsem navody na php.net a celkove prolejzal net, ale nikde neni zadne vysvetleni, z ktereho bych to pochopil. Nemohl by mi to nekdo vysvetlit, jako pro totalniho lajka? bez nejakych odbornych vyrazu, kdyztak i s prikladem? Dekuju moc. :) |
||
juriad Profil |
Představ si objekt jako krabičku a třídu jako návod k ní. Návod ti říká, jaké metody můžeš volat, k jakým proměnným přistupovat.
Přístup probíhá pomocí operátoru šipka ->. Tedy pokud máš objekt v proměnné $a a chceš volat metodu run() napíšeš: $a->run();
Někdy však chceš volat jednu metodu z jiné metody v rámci té samé krabičky, v takovém případě ji zavoláš $this->run(); , protože krabička sama o sobě nemá jméno, ale ty víš, že je to tato.
Obdobně s přístupem k proměnným; pokud chceš něco uložit do proměnné, která patří krabičce $a uděláš to: $a->název = 'blak'; . Pokud to samé chceš provést z nějaké metody té krabičky, musíš k té proměnné přistupovat přes $this : $this->název = 'blak';
|
||
ineedmoremen Profil * |
#3 · Zasláno: 18. 5. 2014, 14:02:14
juriad:
Ježiši to je to takhle jednoduchý? :D Tak teď to chápu. Děkuji mockrát! Suprově vysvětlené! Ještě jednou, díky moc. |
||
Taps Profil |
#4 · Zasláno: 18. 5. 2014, 14:19:47
juriad:
takže v rámci OOP by nemělo docházet k tomuto zápisu ? <? $a = 'obsah proměnné'; ?> <? $this->a = 'obsah proměnné'; ?> |
||
juriad Profil |
Taps:
Mé vyjádření se týká objektů (krabiček). Lokální proměnné v globálním kontextu, v metodách a funkcích se stále používají stejně. Ještě kromě běžných proměnných a metod v rámci krabičky existují takzvané statické proměnné a metody, které jsou sdíleny napříč všemi krabičkami stejného typu. K nim se přistupuje pomocí názvu třídy (typu) a čtyřtečky ::. Tedy například: Typ::statickáMetoda() zvenku krabičky a self::statickáMetoda() zevnitř krabičky. self se chová podobně jako $this ale slouží pro přistup k statickým věcem. Statické metody nemají možnost jakýmkoli způsobem přistupovat k $this (tedy ani k instančním (nestatickým) proměnným a metodám).
Více bych to raději nerozváděl, analogie s krabičkami se může velice snadno rozsypat. Zatím nechci psát kapitolu o OOP. :) Stručně doplněno; díky Alpharde |
||
Alphard Profil |
#6 · Zasláno: 18. 5. 2014, 14:44:26
juriad:
„a ve funkcích se stále používají stejně“ Možná bych zdůraznil, že i v metodách v rámci tříd mají samozřejmě své místo lokální proměnné. A malou poznámečku, že existuji statické proměnné, které fungují úplně jinak. Aby tady nevznikal dojem (viz [#4] Taps), že „všude nacpu $this-> a budu tomu říkat objektový kód“. |
||
Časová prodleva: 10 let
|
0