Klassen in Klassen aufrufen

Dann können sie gleich mit den Funktion für Datenbanken, Reguläre Ausdrücke, den PHP-Deklarationen und den globalen Variablen anfangen.

Am besten gleich noch die sicherheitsrelevanten Probleme mit den Einstellungen register_globals, safe mode und magic quotes lösen.
 
man könnte sicherlich vieles ändern, aber dies ist nicht mein resort, daher kenne ich mich dort nicht gut genug aus mit den dingen, die im hintergrund stehen :o

das problem von randgruppen ist ja, das sie erst dann hochkommen, wenn sie ienn ezigen, was sie alles besser können als die andere sprache und das man dies auch ubedingt braucht.
in sofern ist php noch von einer ablöe entfernt, da man derzeit noch mit alten versionen arbeitet ( der 4er reihe ).

in großen systemen ist php sicherlich nicht mehr angebracht, aber soweit wollte ich noch nicht hinnaus ^^
 
Last edited:
hier mal ne aktuelle version, bei den vorherigen kam ja kein rückgabe wert ( return war ja im enddefekt == NULL )
außerdem wurden arrays als parameter nicht übergeben, das hat sich auch geändert.

PHP:
/**
 * Steuert Klassen ohne Instanzverlust an
 *
 * @param mixed $class
 * @param string[optional] $function
 * @param mixed[optional] $wert
 *
 * @staticvar $objekt
 *
 * @return mixed
 */

function &oop($class,$function=NULL,$wert=NULL) {

  static $objekt;
  
  $return = NULL;
  
  $class = explode(",",$class);
  if (!is_array($wert))
      $wert = array($wert);

  foreach($class as $load)
  if (!isset($objekt[$load])) {
    eval ("\$objekt[\$load] = new \$load('".((is_null($function) && !is_null($wert)) ? implode("','",$wert) : '')."');");
    global $$load; 
    $$load = $objekt[$load];
  }
  if (!is_null($function) && preg_match("%^[-_a-zA-Z]+$%",$function))
    if (!preg_match('%^[-_a-zA-Z]+$%',$function))
      trigger_error(__FUNCTION__.':001');
    else {
      $implode = array();
      foreach($wert as $value)
        $implode[] = (is_array($value)) ? 'array(\''.implode('\',\'',$value).'\')' : '\''.$value.'\'';
      ## WalkAround: Zur Sicherstellung einmaliger Funktionen trotz Vererbung
      $function = $class[0].'_'.$function;
      eval ("\$return = \$objekt[\$class[0]]->".$function."(".implode(',',$implode).");");
    }

  return $return;
}
 
Last edited:
Back
Top