DMG Posted October 28, 2008 Report Share Posted October 28, 2008 Lieta ir tāda: Man ir 3 klases, kuras saucas Zapits, Ferrari, Dodge. Jautājums tātad būtu kā var (ja var) izveidot klasi, kura būtu apakšklase šīm trim klasēm. Īsāk sakot vajag dabūt šādi: class myClass extends Zapits, Ferrari, Dodge, tikai kā to paveikt? P.S lūdzu nestāstīt, ka var to vai šo izveidot, lai nebūtu nepieciešamība pēc šāda sadalījuma! Ja nevar tā izdarīt, tad tā arī paskat! Link to comment Share on other sites More sharing options...
andrisp Posted October 28, 2008 Report Share Posted October 28, 2008 Ar php tā nevar. Link to comment Share on other sites More sharing options...
codez Posted October 28, 2008 Report Share Posted October 28, 2008 DMG, kā tu domā, kuru stūri izvēlēsies tava jaunā klase šādā struktūrā, ja stūre būs visām trīs mašīnām? Link to comment Share on other sites More sharing options...
DMG Posted October 28, 2008 Author Report Share Posted October 28, 2008 codez es neprasīju mani mācīt, bet pateikt vai tas ir iespējams un ja jā tad kā! Uz c++ tas ir realizējams un tāpēc jautāju vai ar php arī to var realizēt! Link to comment Share on other sites More sharing options...
codez Posted October 28, 2008 Report Share Posted October 28, 2008 (edited) DMG, es tevi nemācīju, es tikai pajautāju, kā tu domā, kas notiks? Bet principā, izmantojot šīs metodes - http://www.php.net/manual/en/language.oop5.overloading.php - ir iespējams izveidot multiple inheritance. Edited October 28, 2008 by codez Link to comment Share on other sites More sharing options...
codez Posted October 28, 2008 Report Share Posted October 28, 2008 (edited) Nedaudz piesēdos un principā sanāca simulēt multiple inheritance. Šis variants gan strādā tikai ar instancēm, bet uzlabojot var panākt, lai strādā arī abstrakti. Kā arī jāpaliek, lai strādā ar propertijiem. Pagaidām strādā tikai ar metodēm, bet principjāli jau nekas nemainās, jāuzlabo tikai Multiple_inheritance klase. <?php class Multiple_inheritance{ function __construct(){ $this->instances=array(); foreach($this->classes as $c){ array_push($this->instances,new $c()); } } function __call($fn,$args){ foreach ($this->instances as $i){ if (method_exists($i,$fn)){ call_user_method_array ($fn,$i,$args); } } } } class A{ function A_F1($a){ echo 'A_F1: Hello '.$a.' <br />'; } } class B{ function B_F1($a){ echo 'B_F1: Hi, '.$a.' <br />'; } } class C extends Multiple_inheritance{ var $classes=array('A','B'); } class D extends C{ } $o = new D(); $o->A_F1('Bill'); $o->B_F1('John'); ?> "Ja tu kaut ko kodē, tad kodē labi. Ja nevari vai negribi kodēt labi, tad labāk nekodē nemaz." by codez Edited October 28, 2008 by codez Link to comment Share on other sites More sharing options...
bubu Posted October 28, 2008 Report Share Posted October 28, 2008 Uz c++ tas ir realizējams C++'ā to vajadzētu ar likumu aizliegt izmantot. Tas rada vairāk problēmas, nekā labuma (izņemotja nu bāzes klases satur tikai un vienīgi pure virtual funkcijas). Link to comment Share on other sites More sharing options...
Delfins Posted October 29, 2008 Report Share Posted October 29, 2008 Arī īsti nesaprotu jēgu... tas taču zara zāģēšana, uz kura sēdi, kas ir ļoti neerta un kļūdu bagāta. Kā piemērs - auto ar 2 stūrēm... no aizmugures kliedz "uzmanies!" (šoferi saktās viens uz otru, kurš nu tagad griezīs stūri), attiecīgi abi rīkojās dažādi un čuš vien beigās sanāk. PS: tavā piemērā ērtākais būtu $x->auto[0]->sayHello(); Link to comment Share on other sites More sharing options...
Recommended Posts