2011-04-21 90 views
0

我有一個簡單的核心類,用於核心功能的小型網絡應用程序。我已經定義在類中的一些常量 - 其中有大部分是靜態函數 - 我想設置/編輯這些常量類,例如之外:PHP常量在課堂內設置,但我需要現在在課堂外改變它,這可以做到嗎?

class core{ 
    const connection = ''; 
    public static function someSqlScript(){ 
    $sql = "SELECT * FROM sometable WHERE someconditions"; 
    $exec = mysqli_query(self::connection, $sql); 
    } 
} 

現在,我希望能夠設置連接常數,以便它引用一個MySQL連接對象,這(通過一個腳本的方式),已經被分配給變量$ CON,所以基本上我這樣的事情後:

core::connection = $con; //send connection for use in class 
core::someSqlScript(); //should not perform the MySQL query using conneciton $con as above 

任何幫助是極大的讚賞,我習慣於在類中使用非靜態函數和變量,但具有常量的靜態函數已經得到了我。

感謝所有。

+0

可能重複的[基於條件的PHP常量聲明](http://stackoverflow.com/questions/2659302/php-constants-declaration-based-on-condition) – Gordon 2011-04-21 07:17:40

+0

道歉,如果是這樣,我沒有搜索過相關的問題,但沒有遇到一個我認爲是重複的問題。 – SimonDowdles 2011-04-21 07:30:19

回答

3

常量的含義是,你不能改變它。你想要一個靜態變量

class core{ 
    public static $connection = ''; 
    public static function someSqlScript(){ 
    $sql = "SELECT * FROM sometable WHERE someconditions"; 
    $exec = mysqli_query(self::$connection, $sql); 
    } 
} 

core::$connection = $con; 
core::someSqlScript(); 

注意public static $connection代替const connectionself::$connection代替self::connection(也core::$connection代替core::connection)。

+0

感謝您提供非常豐富的回覆,非常感謝,您在一段中清除了我所有的誤解! *親吻你的腳* – SimonDowdles 2011-04-21 07:16:28

+0

@webfac我認爲,你應該接受答案。 ;) – Yoshi 2011-04-21 07:29:29

+0

我做了,必須等待系統允許我接受答案之前的'x'數分鐘;) – SimonDowdles 2011-04-21 07:32:26

2

constants的想法是,他們不能在他們的定義後被改變。