PHP константа установлена ​​внутри класса, но мне нужно изменить ее вне класса, это можно сделать? - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть простой базовый класс, который используется для основных функций небольшого веб-приложения. Я определил некоторые константы в классе - который имеет в основном статические функции - и я хочу установить / отредактировать эти константы вне класса, например:

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

Любая помощь очень важна, я привык использовать нестатические функции и переменные внутри классов, но статические функции с константами меня достали.

Спасибо всем.

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Значение constant в том, что вы не можете его изменить. Вы хотите статическую переменную :

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 connection и self::$connection вместо self::connection (также core::$connection вместо core::connection).

2 голосов
/ 21 апреля 2011

Идея констант состоит в том, что они не могут быть изменены после их определения.

...