| | |
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 03.08.10 Prihlásený: 14.07.11 Príspevky: 15 Témy: 5 | Napísal miroot: 03.08.2010 15:19 | |
|
zdravim, chcel by som sa spytat ci je nieco take mozne:
Mam triedu v ktorej mam private metoda, na ktoru musim samozrejme pouzit public metoda_2 aby som sa k nej dostal. Ak vsak zadefinujem inu triedu, ktora bude child tej povodnej, tak prostrednictvom public metoda_2 bude private metoda pristupna , co vsak nechcem. tu je priklad
Kód: class test{ private function metoda(){} public funtion metoda_2(){ return $this->metoda();} public funtion metoda_3(){} ... } class test2 extends test{ public function nieco(){} ... }
$object=new test2();
V takejto situacii chcem jednoducho neako dosiahnut aby $object nemal ziaden pristup k metoda(). da sa to ?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
porovnavanie get_class a get_called_class ti nepomoze?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 03.08.10 Prihlásený: 14.07.11 Príspevky: 15 Témy: 5 | Napísal autor témy miroot: 04.08.2010 15:23 | |
|
nie som si uplne isty ako by som to pouzil. akymsi porovnanim ci dana metoda pochadza z tej istej triedy ? Co sa tyka OO PHP tak som uplny zaciatocnik takze v tom nemam este velky prehlad.
Neviem ci by som tuto podmienku co si napisal nemusel vkladat do child triedy, co vsak prilis nechcem. Chcel by som skor aby parent trieda neposkytovala danu privatnu metodu dalsim triedam, bez toho aby som to musel dodatocne zabezpecit v kazdej child triede.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
staci, ked ju vlozis do rodicovskej triedy...
Kód: public funtion metoda_2(){ if(get_class($this) == get_called_class()) { return $this->metoda(); } }
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 03.08.10 Prihlásený: 14.07.11 Príspevky: 15 Témy: 5 | Napísal autor témy miroot: 04.08.2010 15:56 | |
|
Ano tiez ma to napadlo asi po 5 min co som sem napisal lenze asi to zle zapisujem alebo co, lebo ta podmienka akosi nefunguje. zapisal som to takto Kód: class test{ private function metoda(){ echo 'ahoj '; } public function metoda_2(){ if(get_class($this) == get_called_class()){ $this->metoda(); } } }
class test2 extends test{
}
$object=new test2(); $object->metoda_2();
ked som dal vypisovat get_called_class() a get_class($this) obe vyhodili ze prisluchaju triede test2.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
sry, ma to byt
Kód: get_class($this) == "test"
ale toto sa mi velmi nepaci...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 03.08.10 Prihlásený: 14.07.11 Príspevky: 15 Témy: 5 | Napísal autor témy miroot: 04.08.2010 16:10 | |
|
Thx, funguje to, len by ma tiez zaujimalo ci existuje aj neake ine riesenie. Myslel som ze
php bude mat akysi elegantny system, ktory by riesil takero pripady.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
myslim, ze sa to inak velmi vyriesit neda, kedze si privatnu metodu spristupnil cez public
inak, krajsi zapis ako horeuvedeny bude zrejme
Kód: get_class($this) == __CLASS__
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 03.08.10 Prihlásený: 14.07.11 Príspevky: 15 Témy: 5 | Napísal autor témy miroot: 04.08.2010 16:40 | |
|
No ano, ale ako inak mam vyuzit neaku privatnu metodu ? Da sa to aj inak ako cez public ?
|
|
Registrovaný: 06.08.10 Prihlásený: 26.11.10 Príspevky: 5 Témy: 0 | Napísal awase: 06.08.2010 11:35 | |
|
Prosím Ťa vysvetli, aký zmysel ma napísať private metódu keď hneď za ňou napíšem metódu, ktorá ju sprístupni každému? Len sa snažím pochopiť tvoj zámer.
|
|
Registrovaný: 03.08.10 Prihlásený: 14.07.11 Príspevky: 15 Témy: 5 | Napísal autor témy miroot: 08.08.2010 17:16 | |
|
Ja som zaciatocnik v objektovom programovani. Ked som si cital tak tutorial a videl ze su tri urovne: private, protected a public tak som to jednoducho chcel odskusat. Co som vsak nevedel pochopit je, ze ak je neaka metoda private tak sa nededi a mozem ju pouzivat len vo vnutri triedy, ale aby som ju pouzil tak ju musim spomenut v neakej public metode, cim vsak uz stratim tu vlastnost ze sa tato vlastnost nededi. Tak aky ma vobec pivate zmysel ? Existuje neake prakticke vyuzitie ? A ako by vobec vyzeralo ? to bol moj zamer
|
|
Registrovaný: 06.08.10 Prihlásený: 26.11.10 Príspevky: 5 Témy: 0 | Napísal awase: 03.09.2010 9:21 | |
|
Aha v tom prípade rozumiem. Áno, určite to má praktické využitie. Pri takýchto malých príkladoch nie, ale keď raz budeš písať s kolegovcami veľké objekty pochopíš.
Jedna z výhod OOP je enkapsulácia tj. zapuzdrenie. Más public metódy, ktoré jediné môžes používať navonok. Private metódy sú skryté v triede a protected metódy sa dedia a stanú sa ako keby private metódy odvodenej triedy. Možno sa ti to zdá aj zbytočné, ale mysli nato, že pri programovaní nepoužívaš len triedy, ktoré si napísal sám, ale aj triedy od iných autorov. To znamena, že stačí poznať public metódy a ostatné zložité veci vnútri triedy ťa nemusia zaujímať , čo je veľmi pohodlné, lebo programátori sú lenivé stvorenia.
Na záver ešte "akože" praktický príklad:
Zober si taký obyč. budíček. Ten má public metódy: nastav čas, nastav čas budenia, vypni budenie. Toto ti stačí na plnohodnotné využívanie budíka. Skryté metódy sú teda: zvonenie, pohyb ručičiek atď. Z neho si môžeme odvodiť napríklad rádiobudík, ktorý zdedí protected metódy a všetky public metódy. A už iba doprogramujeme metódy na obsluhu rádia.
Dokážeme teda používať objekty oboch tried, môžeme spraviť veľa veľa budíkov tie zvonia a hrajú rádio a pritom nás vôbec nezaujíma ako sa v nich zložito točia ozubené kolieska alebo čo.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| java dedicnost v Assembler, C, C++, Pascal, Java | 1 | 207 | 30.04.2013 9:49 Gabho027 | | C++ viacnásobná dedičnosť v Assembler, C, C++, Pascal, Java | 6 | 723 | 25.04.2012 16:55 t-pack25 | | PHP programátor - PHP, MySQL, jQuery,X)Html/CSS v Ponuka práce | 0 | 1300 | 02.05.2011 12:08 magicmedia | | Vytvorenie suboru php a vlozenie php scriptu v PHP, ASP | 4 | 1434 | 07.05.2010 14:02 DeiForm | | PHP nevie precitat .PHP v PHP, ASP | 8 | 826 | 18.03.2011 19:21 camo | | php ->mysql ->php Help.zoradit v PHP, ASP | 4 | 585 | 20.06.2009 12:44 KViki | | $pcforum->getForumActivity('PHP, ASP', 2012)/$pcforum->getForumActivity('PHP, ASP', 2022) - Warning: Division by zero v PHP, ASP | 4 | 2246 | 20.05.2022 13:51 JanoF | | PHP v PHP, ASP | 1 | 2721 | 09.06.2005 22:39 johny128 | | PHP v PHP, ASP | 2 | 452 | 08.04.2016 20:44 5had0w | | PHP v PHP, ASP | 1 | 733 | 31.05.2007 16:24 kmsa | | PHP v PHP, ASP | 18 | 1165 | 01.01.2009 19:22 rooobertek | | Učiteľ php v Ponuka práce | 1 | 476 | 15.07.2013 12:42 Daron | | PHP explode ... v PHP, ASP | 2 | 637 | 13.10.2010 14:45 Flety | | php programator v Ponuka práce | 0 | 996 | 15.10.2009 16:39 exoomer | | certifikat php v PHP, ASP | 1 | 717 | 19.07.2010 10:09 stenley | | PHP Chat v PHP, ASP | 3 | 414 | 26.09.2012 15:38 ondrejko0102 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|