2011-06-16 48 views
0

下面的腳本作品完美,誤差newInstanceArgs在ReflectionClass

$transport = new Amazonses_App_Mail_Transport_AmazonSES(
     array(
      'accessKey' => '*******************', 
      'privateKey' => '***********************' 
      ) 
     ); 

但是,當它傳遞如下,得到錯誤。

$mailConfig = array(
      'class' => 'Amazonses_App_Mail_Transport_AmazonSES', 
      'args' => array('accessKey' => '*******************', 
      'privateKey' => '***********************') 
     ); 
try { 

     $args = (!empty($mailConfig['args']) ? $mailConfig['args'] : array()); 

     $r = new ReflectionClass($mailConfig['class']); 


      $transport = $r->newInstanceArgs($args); 


     if(!($transport instanceof Zend_Mail_Transport_Abstract)) { 
      $transport = false; 
     } 
     } catch(Exception $e) { 

     $transport = false; 
     throw $e; 
     } 

Amazonses_App_Mail_Transport_AmazonSES進行__construct。但是,未能返回$transport = $r->newInstanceArgs($args);

任何想法,爲什麼?

回答

1

您是否嘗試過通過更換

$r = new ReflectionClass($mailConfig['class']); 
$transport = $r->newInstanceArgs($args); 

通過

$className = $mailConfig['class']; 
$transport = new $className($args); 

,我認爲它應該工作。