Einzelnen Beitrag anzeigen
  #35 (permalink)  
Alt 02-12-2009, 15:28
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 2.862
combie befindet sich auf einem aufstrebenden Ast
Standard

Ich habe mal aus den vorherigen Codefetzen eine Reflection basierende mini DI Einrichtung gebaut.

Gefallen tut mir das so noch lange nicht....
PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE);
setlocale(LC_ALL,'de_DE@euro''de_DE',  'de''ge');
date_default_timezone_set('Europe/Berlin');
 


class 
Combie_DB 
{
}

class 
Combie_Model_User 
{
    public function 
__construct(Combie_DB $db
    {
        echo 
'wurde gerufen<br>';
    }
}

function 
fabrik(Array $registry,$klassenBezeichner)
{
  
$rc = new ReflectionClass($klassenBezeichner);
  
$rcconstructorparam=$rc->getConstructor()->getParameters();
  
$params = array();
  foreach(
$rcconstructorparam as $param)
  {
    
$p_class $param->getClass();
    if(empty(
$registry[$p_class->name])) throw new Exception('bad Param');
    
$params[] = $registry[$p_class->name];
  }
  return 
$rc->newInstanceArgs($params);
}

$registry = array();
$registry['Combie_DB'] = new Combie_DB('blabla');

$die_neue fabrik($registry,'Combie_Model_User');
    
    
?>

<hr>
<pre>
<?php
 var_export
($die_neue);
?> 
</pre>
Da bleibe ich doch lieber bei meinen alten DI Containern...
Evtl später mal um die php5.3 Closures/Lambdas aufgemotzt.
__________________
Wir werden alle sterben
Mit Zitat antworten