2015-06-25 30 views
2

我有以下的項目文件夾和文件(注意,我想我的班從庫(如PHPMailer的,HTMLPurifier等)分開)如何將PHPMailer導入使用名稱空間的類?

enter image description here

在我Register.php文件我在登記冊類:

namespace Classes\Register; 

class Register 
{ 
    public function register() 
    { 
     // ... 
     $m = new PHPMailer; 
     // send email 
    } 
} 

所以,在我的註冊類(位於入類/目錄下),我想使用的PHPMailer類(位於上方的一個目錄,相對於Register.php文件,到庫/ PHPMailer的)。我如何將PHPMailer類包含到Register.php文件中?

我已經試過:

$m = new \PHPMailer; // to use the class from the global scope, but it doesn't work. 

,或者,如果我包括PHPMailerAutoload.php,像這樣:

namespace Classes\Register; 

require '../libs/PHPMailer/PHPMailerAutoload.php'; 

// and then into register() method: 
$m = new PHPMailer; 

我發現了一個錯誤,指出:Fatal error: Class 'Classes\Register\PHPMailer' not found

任何想法?非常感謝!

回答

5

你給任何理由,這並不工作,因爲它是正確的:

$m = new \PHPMailer; 

或者你可以導入類到您自己的命名空間:

use PHPMailer; 

$m = new PHPMailer; 

它基本上是相同的關於班級名稱。

如果兩個版本都不起作用,則會出現不同的問題。

+0

如果我像'$ m = new \ PHPMailer;'那樣做,並且沒有使用任何其他的'use'或'require',那麼我得到這個錯誤:'致命錯誤:類'PHPMailer'not found'在我實例化PHPMailer類的行中。問題可能是因爲我使用Win7,而我正在處理'localhost'? –

+0

「如果不使用任何'require'」聽起來不對,您必須在使用任何類之前執行自動加載器。 – Sven

+0

好的!我會盡力用你的方式。現在我會接受你的答案作爲解決方案。謝謝。如果工作正常或沒有,我會回覆並回復。 –

相關問題