2011-04-21 71 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的想法是,他们不能在他们的定义后被改变。