Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp09/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2009 - Main - Erweiterte OOP In PHP

Erweiterte OOP in PHP

PHP ermöglicht das Überladen von Eigenschaftenzugriffen und Methodenaufrufen durch das Implementieren bestimmter Proxymethoden. Es können dabei folgende Prototypen implementiert werden:

  • function __get($property)
  • function __set($property, $value);
  • function __call($method, $args);

An __get wird der Name der Eigenschaft übergeben und sollte einen Wert zurückgeben. An __set wird der Name der Eigenschaft und ihr neuer Wert übergeben. An __call wird der Name der Methode sowie ein numerisch indiziertes Array der übergebenen Argumente übergeben, wobei der Index der Elemente bei 0 beginnt.

Beispiele:

class Person {
  private $info = array('name' => NULL, 'firstname' => NULL, 'age' => NULL);
 
  function __get($property) {
    if(array_key_exists($property, $this->info)) {
      return $this->info[$property];
    }
    else {
      print 'Key not found!';
    }
  }
 
  function __set($property, $value) {
    if(array_key_exists($property, $this->info)) {
      $this->info[$property] = $value;
    }
    else {
      print 'Key not found!';
    }
  }
}
 
$person = new Person();
$person->name = 'John';
$person->firstname = 'John';
$person->age = 25;
 
print $person->firstname . ' ' . $person->lastname . ' ' . $person->age;


Page last modified on July 29, 2009, at 10:33 PM