没有Mail类require_once php

时间:2012-06-26 13:46:24

标签: php include-path require-once

我正在尝试使用require_once来调用Mail.php,但是当我为该类创建一个新实例并开始使用它时,我收到一条消息说

Fatal error: Class 'Mail' not found in D:\xampp\htdocs\proj\Mailing\mymail.php on line xx

恢复的代码就像这样

<?php
     require_once 'Autoload.php';

     $smtp = Mail::factory('smtp',
          array ('host' => $host,
          'port' => $port,
          'auth' => true,
          'username' => $username,
          'password' => $password));
?>

<?php
     require_once 'Mail.php';

     $mail = new Mail();
?>

为什么我会收到这条消息? 我已经将include路径设置为“.; D:\ xampp \ php \ pear”

我编辑了我的脚本,并且需要自动加载脚本,它工作正常,因为它没有打印错误,但我仍然得到相同的消息,如Mail不起作用(我编辑了上面的脚本),自动加载是相同的我的主脚本所在的目录。

我创建了一个新文件并使用完整路径调用它,然后输出

Warning: require_once(D:\xampp\php\PEAR) [function.require-once]: failed to open stream: Permission denied in D:\xampp\htdocs\proj\Mailing\pMail.php on line 2

1 个答案:

答案 0 :(得分:0)

当您加载课程时,如果您使用自动加载,则不需要您的php文件。

示例:

Class Autoload {
   private $rootDirectory;
   private $paths = array(
       "system/core",
       "system/obj",
       "system/data"
   );

   public function __construct() {
       $this->RootDirectory = dirname(getcwd()); // Whatever is your root
       $this->activateAutoload("autoloadClassesFromSystemFolder");
   }

   private function autoloadClassesFromSystemFolder($i) {
       foreach ($this->paths as $path) {
           // Please keep in mind that a class name has to be unique. 
           if (is_file($this->RootDirectory .'/'. $path .'/'. $i . ".php")) {
               include $this->RootDirectory .'/'. $path .'/'. $i . ".php";
               break;
           }
       }
   }

   public function activateAutoload($functionName) {
       spl_autoload_register(array($this, $functionName));
   }
}

在php中加载此内容,唯一需要做的是:

require "path/to/autoload.php";
$autoload = new Autoload();

之后,您可以根据需要使用任意数量的类,而无需担心类文件包含。

$mail = new Mail();

更多信息:http://nl.php.net/autoload