2016-10-08 18 views
0

我實現一個郵件解決方案,如果我叫swiftmailer從像主index.php文件:無法從類內部加載swiftmailer。我得到錯誤:類「Swift_SmtpTransport」找不到

require_once '../swiftmailer/lib/swift_required.php'; 
... 
$result = $mailer->send($message); 

全部是偉大的。但是,當我用同樣的swiftmailer庫在我的應用類中實現佈局/設計分區是這樣的:

// File: controller.php 

class Index { 
     ... 
     public function ignition() { 
      ... 
      spl_autoload_register(array($this, 'myClassLoaderFx')); 
     } 

     public function myClassLoaderFx($name) { 
      $classes = array(
        'Blah' => '../blah/Blah.php', 
        ... 
        'Swift' => '../swiftmailer/lib/swift_required.php' 
      ); 
      if(!array_key_exists($name, $classes)){ 
        die('Class not found'); 
      } 
      require_once $classes[$name]; 
     } 

// File: Mailer.php 

class Mailer { 
     ... 
     public function main($recepient[], $sender, $subject, $body) { 
      ... 
      $transport = Swift_SmtpTransport::newInstance('xyz.google.com', 465, "ssl")->setUsername($this->username)->setPassword($this->password); 
      ... 
      $result = $mailer->send($message); 
} 

在執行時,我得到:類「Swift_SmtpTransport」找不到。該庫被加載,因爲我在NetBeans上下文幫助中獲得了所有Swift類列表。但是,執行後我得到錯誤。我已經完成了所有可能的拼寫檢查。從這裏無路可走。請幫忙。

+0

答案在這裏:http://stackoverflow.com/questions/29626658/fatal-error-class-swift-smtptransport-not-found-in used「Swift_SmtpTransport :: newyInstance()「如果y是一個錯字,或者如果你需要這個y來工作,我不是唯一的。 – Peavey2787

+0

我檢查了錯字並檢查了函數名稱。未到任何地方。謝謝。 –

回答

1

看起來像你的swiftmailer類Swift()被加載但其不完整。你可以採取以下approaces解決這一之一:

  1. 添加「雨燕延伸」到文件Mailer.php類聲明。

    class Mailer extends Swift {

或者,

  • 負載在郵遞員類的構建體()函數swiftmailer庫。

    Remove the following line from myClassLoaderFx() function from controller.php : 'Swift' => '../swiftmailer/lib/swift_required.php'

    And Create a construct for Mailer() class in file Mailer.php public function __construct(){ require_once '../swiftmailer/lib/swift_required.php'; }

  • 與圍棋除非你想保留swiftmailer從主應用程序擄到一個託管類使用spl_autoload_功能的第一種方法。如果您想切換到另一個郵件程序,這可以派上用場。您不必對controller.php等進行更改。

    +0

    謝謝!有效。 –

    相關問題