2015-04-12 107 views
0

我對PHP的操作系統相當陌生,有些概念對我來說還是新的。從php類讀取其他文件的常量/變量

Asumming我有包括配置文件(config.php文件):

<?php 

$siteName = "John's Site"; 
$siteEmail = "[email protected]" 
$replyTo = "[email protected]" 

而且我有一個簡單的類(SendMail.php),其包括:

class SendMail 
{ 

    public function sendRegistrationMail($toAddress) 
    { 
     mail($toAddress, $subject, $email, "From: Site Name <[email protected]>"); 

    } 

} 

我有user.php文件,包括:

<?php 
include_once ('config.php'); 
include_once ('SendMail.php); 

//Initialize class 
$sendMail = new SendMail(); 

我問的是,如果我可以以某種方式讀/包括config.php從發送電子郵件 而不需要硬編碼"From: Site Name <[email protected]>" 因爲我已經做了,當地址 的SendMail類,這樣我可以簡單地這樣做:

$sendMail->sendRegistrationMail("[email protected]"); 

,而不需要通過「從」。

希望我很清楚。 如果任何人都可以提供幫助,那就太棒了。 謝謝!

+2

沒有任何[常量](http://php.net/manual/en/language.constants.php)在這裏定義....如果你的意思是變量,然後閱讀[變量範圍] (http://php.net/manual/en/language.variables.scope.php) –

回答

0

有了您的配置文件是正常的可運行PHP,你可以直接引用全局變量在你的SendMail類是這樣的:

require_once dirname(__FILE__) . '/config.php'; 

class SendMail 
{ 
    public function sendRegistrationMail($toAddress) 
    { 
     global $siteName, $siteEmail, replyTo; 
     mail($toAddress, $subject, $email, "From: {$siteName} <{$replyTo}>"); 
    } 

} 

因爲在你的配置變量是PHP和它們在全球範圍內定義,包括該文件將使他們在這裏訪問。您只需在函數中指定您引用的變量是全局範圍的變量,而不是全局關鍵字所做的新局部變量。

+0

謝謝。這被認爲是一種好習慣嗎?我讀過某個地方, 全局變量不是一個好的做法?我應該堅持將「From:」地址指定爲參數嗎? – user3772

+0

一般而言,全局變量是不好的做法,因爲程序的其他部分很容易與他們看不到你。對於配置文件,我通常會允許no globals規則的例外,因爲它們往往是隻讀的,並且在很多地方都需要。儘管通過將他們定向到一個班級,您可以使自己的代碼更清楚/更清晰。 – RyanW

+0

我同意!謝謝! – user3772

0

您可以使用類變量來指定可能的數據列表。 或者你可以創建包含你的配置文件的方法。 或者您可以在字符串表單中爲方法添加第二個參數。

+0

我不想重新指定類變量中的電子郵件地址我想將它全部放在一個文件中。 我指定我沒有試圖用第二個參數來做。 所以,如果我創建一個讀取配置的方法,config.php變量將可以從SendMail類中讀取? – user3772