PHP Doku:: Dynamic class and object aggregation of methods - function.aggregate-methods.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzVariablen- und typbezogene ErweiterungenObject Aggregation/Composition [PHP 4]Object Aggregation Funktionenaggregate_methods

Ein Service von Reinhard Neidl - Webprogrammierung.

Object Aggregation Funktionen

<<aggregate_methods_by_regexp

aggregate_properties_by_list>>

aggregate_methods

(PHP 4 >= 4.2.0)

aggregate_methods Dynamic class and object aggregation of methods

Beschreibung

void aggregate_methods ( object $object , string $class_name )

Aggregates all methods defined in a class to an existing object, except for the class constructor, or methods whose names start with an underscore character (_) which are considered private to the aggregated class.

Parameter-Liste

object

class_name

Rückgabewerte

Es wird kein Wert zurückgegeben.

Siehe auch


2 BenutzerBeiträge:
- Beiträge aktualisieren...
Rodolfo
12.09.2005 12:27
Just a note: aggregate_methods doesn't aggregate those methods already defined in the class, including those methods inherited from a parent class.

Here's an example:

- If class B inherits from class A and aggregates methods from class C:

<?php

class A {
          function
foo() {
                echo
'from class A';
          }
}

class
B extends A {
    function
B() {
        
aggregate_methods($this,'C');
    }
}

class
C {
          function
foo() {
                echo
'from class C';
          }
}

$myclass = new B();
$myclass->foo();
// This will print 'from class A'

?>
a at antialize dot dk
21.03.2005 12:12
You can use this to dynamicily add methods to a class

class foo {
  function addMethod(  $code ) {
    $cname = uniqid("class");
    eval( "class ${cname} { ${code} }" );       
    aggregate_methods( $this , $cname );
  }

  function bar() {
    $this->addMethod( "function baz() { echo 'sha'; }" );
  }
}

$bang = new foo();
$bang->bar();
$bang->baz();



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)