Andreas Korthaus: Web-Programme modular aufbauen

Beitrag lesen

Hi!

Ich habe das ganze mal in der smarty Mailing-Liste zur Sprache gebracht (mit meinem eher gebrochenen englisch, aber ich wurde glaube ich verstanden ;-)), und da hat mir jemand folgendes Script gepostet:

<?php

/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Type:     function
 * Name:     call
 * Author:   Mark Priatel (mpriatel@rogers.com)
 * Input:    obj = the object to call a method on
 *           method = the method to call
 *           arg1 .. arg4 (optional) = an argument for the method
 *
 * Examples: {call obj=$connection method='close'}
 *           {call obj=$connection method='open' arg1='localhost'}
 *           {call obj=$connection method='open' arg1='localhost'
 *                 arg2='password' }
 *
 * -------------------------------------------------------------
 */
function smarty_function_call($params, &$smarty)
{

$o = $params['obj'];
 if ( !isset($o) ){
  $smarty->trigger_error("function 'call' requires
argument 'obj'");
  return;
 }

$m = $params['method'];
 if ( !isset($m) ){
  $smarty->trigger_error("function 'call' requires
argument 'method'");
  return;
 }

$i = 1;
  $args = array();
  while( isset($params["arg$i"]) ){
    array_push($args,$params["arg$i"]);
    $i++;
  }

switch( sizeof($args) ){
    case 0: return $o->$m();
    case 1: return $o->$m($args[0]);
    case 2: return $o->$m($args[0],$args[1]);
    case 3: return $o->$m($args[0],$args[1],$args[2]);
    case 4: return $o->$m($args[0],$args[1],$args[2],$args[3]);
  }

}
?>

Anscheinend ist das durchaus über ein eigenes Plugin möglich, evtl. kann man das noch modifiieren dass man den Klassennamen nicht angeben muß, den könnte das Basismodul ja auch selbst ermitteln. Weiß zwar noch nicht wir genau man das einbindet, aber das werde ich schon noch rausfinden ;-)

Jedenfalls vielen Dank an Euch, Ihr habt mir sehr geholfen, ich denke ich habe hier einige Anhaltspunkte bekommen, wie ein modularer Aufbau auszusehen hat, und werde mich jetzt mal an die Umsetzzng machen.

Viele Grüße
Andreas