【问题标题】:PHP constant set inside class, but I need to alter it outside the class now, can this be done?PHP常量在类内设置,但我现在需要在类外更改它,可以这样做吗?
【发布时间】:2024-01-18 16:35:02
【问题描述】:

我有一个简单的核心类,用于小型 Web 应用程序的核心功能。我在类中定义了一些常量 - 主要具有静态函数 - 我想在类之外设置/编辑这些常量,例如:

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

非常感谢任何帮助,我习惯于在类中使用非静态函数和变量,但是带有常量的静态函数让我受益匪浅。

谢谢大家。

【问题讨论】:

标签: php class variables constants


【解决方案1】:

常量的意思是,你不能改变它。你想要一个静态的变量

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)。

【讨论】:

  • 感谢您提供了非常丰富的回复,非常感谢,您在一段中消除了我所有的误解! *亲吻你的脚*
  • 我做到了,在系统允许我接受答案之前必须等待“x”分钟;)
  • 哦,那我很抱歉。刚看到评论,没有绿色对勾,有点失望;)
【解决方案2】:

constants 的理念是,定义后不能更改。

【讨论】: