Jump to content
php.lv forumi

kā veidot apakšklases


DMG

Recommended Posts

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

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 by codez
Link to comment
Share on other sites

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

×
×
  • Create New...