[ 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 | 5
NapísalOffline : 03.08.2010 15:19 | dedicnost v php

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 04.08.2010 14:38 | dedicnost v php

porovnavanie get_class a get_called_class ti nepomoze?


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 | 5
Napísal autor témyOffline : 04.08.2010 15:23 | dedicnost v php

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 04.08.2010 15:37 | dedicnost v php

staci, ked ju vlozis do rodicovskej triedy...
Kód:
public funtion metoda_2(){
   if(get_class($this) == get_called_class()) {
      return $this->metoda();
   }
}


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 | 5
Napísal autor témyOffline : 04.08.2010 15:56 | dedicnost v php

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 04.08.2010 16:03 | dedicnost v php

sry, ma to byt
Kód:
get_class($this) == "test"

ale toto sa mi velmi nepaci...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 | 5
Napísal autor témyOffline : 04.08.2010 16:10 | dedicnost v php

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 04.08.2010 16:23 | dedicnost v php

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__


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
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 | 5
Napísal autor témyOffline : 04.08.2010 16:40 | dedicnost v php

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 | 0
NapísalOffline : 06.08.2010 11:35 | dedicnost v php

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 | 5
Napísal autor témyOffline : 08.08.2010 17:16 | dedicnost v php

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 | 0
NapísalOffline : 03.09.2010 9:21 | dedicnost v php

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.


 [ Príspevkov: 12 ] 


dedicnost v php



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

93

30.04.2013 9:49

Gabho027

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

C++ viacnásobná dedičnosť

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

6

568

25.04.2012 16:55

t-pack25

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

814

02.05.2011 12:08

magicmedia

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

Vytvorenie suboru php a vlozenie php scriptu

v PHP, ASP

4

926

07.05.2010 14:02

DeiForm

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

PHP nevie precitat .PHP

v PHP, ASP

8

463

18.03.2011 19:21

camo

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

php ->mysql ->php Help.zoradit

v PHP, ASP

4

322

20.06.2009 12:44

KViki

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

PHP

v PHP, ASP

1

2452

09.06.2005 22:39

johny128

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

PHP

v PHP, ASP

1

537

31.05.2007 16:24

kmsa

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

PHP

v PHP, ASP

18

938

01.01.2009 19:22

rooobertek

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

PHP

v PHP, ASP

2

137

08.04.2016 20:44

5had0w

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

PHP problem

v PHP, ASP

15

825

30.03.2007 8:19

Punker661

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

php mail

v PHP, ASP

12

1521

21.07.2009 1:30

Snacker

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

Učiteľ PHP

v Ponuka práce

1

618

21.05.2011 20:33

shaggy

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

php forum

v PHP, ASP

4

122

13.11.2013 21:12

BX

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

PHP premenne

v PHP, ASP

3

374

11.07.2009 13:39

KViki

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

PHP Developer

v Ponuka práce

0

668

28.03.2010 14:37

swebsol



© 2005 - 2017 PCforum, edited by JanoF