2011-05-04 54 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