[PHP] subklasse methodes

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
Ik heb een kort vraagje,
Hoe kan ik via php4 de methodes opvragen die door een subklasse gedefinieerd zijn
Dus enkel de methodes die uniek zijn of overschreven zijn door de subklasse.
bv.
code:
1
2
3
4
5
6
7
8
class A{ 
   function test1(){} 
   function test2(){}
 } 
class B extends A{ 
   function test1(){} 
   function test3(){} 
}

Nu wil ik weten welke methodes klasse B bevat, dus een array die test1 & test3 bevat.

Wanneer je de functie get_class_methods op een instantie van klasse B gebruikt, krijg ik ook de methodes van A.
Wanneer ik get_class_methods op A & B zou gebruiken en daarna een array_diff hiervan doe.
Dan krijg ik enkel de "custom" methodes van B, niet degene die overschreven werden zoals test1().
Weet iemand hier raad mee?
thx.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Voor zover ik weet is wat jij wil niet mogelijk. Simpelweg omdat klasse B ook echt die methoden van klasse A bevat. De enige zinnige manier is de manier die je zelf al omschrijft, met array_diff, zoals ook in de notes op PHP.net staat:
This function will return only the methods for the object you indicate. It will strip out the inherited methods.

PHP:
1
2
3
4
5
6
7
8
9
10
function get_this_class_methods($class){
   $array1 = get_class_methods($class);
   if($parent_class = get_parent_class($class)){
       $array2 = get_class_methods($parent_class);
       $array3 = array_diff($array1, $array2);
   }else{
       $array3 = $array1;
   }
   return($array3);
}
Verder heb je eigenlijk weinig opties ben ik bang.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ahzo ;(
hmm
wordt het dan toch tijd om naar php5 over te schakelen...

[ Voor 3% gewijzigd door Verwijderd op 10-07-2005 22:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

php5 is het wel een stuk makkelijker ja,

gewoon parent::functie() :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als je graag objectgeoriënteerd wil werken, dan is overstappen naar PHP5 inderdaad geen slechte zet. ;)

En JoJiro: ik snap niet wat het aanroepen van een bepaalde method van de parent te maken heeft met het opvragen van alle functies van een inherited class. Leg eens uit? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.