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

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 | 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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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();
   }
}


_________________
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 | 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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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...


_________________
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 | 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: 3948
Témy: 51 | 51
Bydlisko: Bratislava
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__


_________________
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 | 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 Backend

1

282

30.04.2013 9:49

Gabho027

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

C++ viacnásobná dedičnosť

v Backend

6

806

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 a dopyt práce

0

1434

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 Backend

4

1529

07.05.2010 14:02

DeiForm

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

PHP nevie precitat .PHP

v Backend

8

916

18.03.2011 19:21

camo

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

php ->mysql ->php Help.zoradit

v Backend

4

700

20.06.2009 12:44

KViki

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 Backend

4

3037

20.05.2022 13:51

JanoF

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

PHP

v Backend

1

2921

09.06.2005 22:39

johny128

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

PHP

v Backend

2

550

08.04.2016 20:44

5had0w

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

PHP

v Backend

18

1301

01.01.2009 19:22

rooobertek

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

PHP

v Backend

1

822

31.05.2007 16:24

kmsa

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

php server

v Backend

4

346

05.03.2010 22:52

neopagan

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

PHP programator

v Ponuka a dopyt práce

0

1067

18.02.2009 14:28

stefe

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

Php Datum

v Backend

4

419

16.10.2013 18:20

funny102

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

php naco?

v Backend

12

1009

21.07.2009 17:47

rooobertek

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

PHP imagecreate

v Backend

1

451

25.04.2010 10:32

stenley



© 2005 - 2026 PCforum, edited by JanoF