Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok NapísalOffline : 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 ?


Offline

Správca fóra
Správca fóra
dedicnost v php

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 04.08.2010 14:38

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 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.


Offline

Správca fóra
Správca fóra
dedicnost v php

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 04.08.2010 15:37

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 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.


Offline

Správca fóra
Správca fóra
dedicnost v php

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 04.08.2010 16:03

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 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.


Offline

Správca fóra
Správca fóra
dedicnost v php

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 04.08.2010 16:23

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 04.08.2010 16:40

No ano, ale ako inak mam vyuzit neaku privatnu metodu ? Da sa to aj inak ako cez public ?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.08.10
Prihlásený: 26.11.10
Príspevky: 5
Témy: 0
Príspevok NapísalOffline : 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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 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 :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.08.10
Prihlásený: 26.11.10
Príspevky: 5
Témy: 0
Príspevok NapísalOffline : 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.


Odpovedať na tému [ Príspevkov: 12 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. java dedicnost

v Assembler, C, C++, Pascal, Java

1

207

30.04.2013 9:49

Gabho027 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ viacnásobná dedičnosť

v Assembler, C, C++, Pascal, Java

6

723

25.04.2012 16:55

t-pack25 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP programátor - PHP, MySQL, jQuery,X)Html/CSS

v Ponuka práce

0

1300

02.05.2011 12:08

magicmedia Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vytvorenie suboru php a vlozenie php scriptu

v PHP, ASP

4

1434

07.05.2010 14:02

DeiForm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP nevie precitat .PHP

v PHP, ASP

8

826

18.03.2011 19:21

camo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. php ->mysql ->php Help.zoradit

v PHP, ASP

4

585

20.06.2009 12:44

KViki Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. $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 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP

v PHP, ASP

1

2721

09.06.2005 22:39

johny128 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP

v PHP, ASP

2

452

08.04.2016 20:44

5had0w Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP

v PHP, ASP

1

733

31.05.2007 16:24

kmsa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP

v PHP, ASP

18

1165

01.01.2009 19:22

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Učiteľ php

v Ponuka práce

1

476

15.07.2013 12:42

Daron Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP explode ...

v PHP, ASP

2

637

13.10.2010 14:45

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. php programator

v Ponuka práce

0

996

15.10.2009 16:39

exoomer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. certifikat php

v PHP, ASP

1

717

19.07.2010 10:09

stenley Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. PHP Chat

v PHP, ASP

3

414

26.09.2012 15:38

ondrejko0102 Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra