2011-05-04 52 views
2

添加和訪問ZF庫的最佳實踐是什麼?我試圖添加phpmailer,我應該只是將它添加到庫文件夾?我現在如何訪問此文件,因爲它不使用ZF命名約定。謝謝!想要添加phpmailer庫到Zend Framework安裝

+1

這些庫應該由同一系統上的其他應用程序使用還是僅由您的應用程序使用?你在使用哪種操作系統? – hakre 2011-05-04 21:41:06

+0

嗨,好的,thx的迴應。該庫只需要我的應用程序使用,並且我使用的是Windows Vista,但爲什麼操作系統很重要? – blacktie24 2011-05-04 21:46:40

+1

如果操作系統爲該庫提供了一個包,OS可能很重要。 Vista沒有。我傾向於建議將其添加到庫文件夾中,並將文件包含在引導程序中,但您可能需要考慮將其添加到[autoloader]中(http://framework.zend.com/manual/1.11/en/) zend.loader.autoloader.html)。但我不是一個ZF專家,手頭上有一個快速的例子。 – hakre 2011-05-04 21:55:05

回答

3

簡單的解決方案是將PHPMailer類(和任何其他文件)放入庫文件夾中。

作爲PHPMailer的,似乎應使用不會到磁帶自動加載( class.phpmailer.php)以及適用的文件名約定,我只是需要在類文件在你的引導

然後,您應該能夠創建一個新的 PHPMailer類在您的應用程序的任何地方。

您可以嘗試註冊一個自動加載器,將類名稱PHPMailer映射到class.phpmailer.php然而IMO不值得付出努力。

UPDATE

試想想它,我會忽略引導部分和根本要求的類時,它的需要(比如,在您的控制器)。由於文件位於包含路徑中,所有您需要的是

require_once 'class.phpmailer.php'; 
$mailer = new PHPMailer; 
4

將相關文件放入庫文件夾中。在Bootstrap

class My_Loader_Autoloader_PhpMailer implements Zend_Loader_Autoloader_Interface 
{ 
    /** 
    * Autoload a class 
    * 
    * @param string $class 
    * @return mixed 
    *   False [if unable to load $class] 
    *   $class [if $class is successfully loaded] 
    */ 
    public function autoload($class) 
    { 
     if ('PHPMailer' === $class) { 
      include 'class.phpmailer.php'; 
      return $class; 
     } 
     return false; 
    } 
} 

那麼這個自動加載磁帶機添加到ZF自動加載堆棧,大概是::然後,你可以創建一個自動加載磁帶機是這樣的:

在文件library/My/Loader/Autoloader/PhpMailer.php

protected function _initAutoloader() 
{ 
    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    // The following is not necessary if My_ is already a registered namespace 
    // in the ZF autoloader 
    require 'My/Loader/Autoloader/PhpMailer.php'; 
    $autoloader->pushAutoloader(new My_Loader_Autoloader_PhpMailer()); 
} 

我已經對於更多涉及傳統類命名/映射的示例,可以這樣做,這非常有幫助。

+0

所以你需要兩個類(自動加載器和PHPMailer)來加載一個類?對於單級PHPMailer庫,我不認爲這是值得的。仍然+1得到好的答案 – Phil 2011-05-05 03:37:11

+0

@Phil:對,雖然這個自動加載器類非常小,所以它可以節省不必使用那些未使用的請求的更大的PHPmailer類。另一方面,自動裝載機還有額外的開銷。就像你說的,在這種情況下可能不值得付出努力;主要試圖展示這項技術。感謝您的支持。乾杯! ;-) – 2011-05-05 04:07:52