Я изучаю ООП в PHP, и я хочу поместить значение из переменной в константу класса. Как я могу это сделать?
Это мой код (не работает!):
class Dir { const ROOT = $_SERVER['DOCUMENT_ROOT']."project/"; function __construct() { } }
Есть ли какое-либо решение, как взять значение из переменной, добавить строку и поместить ее в постоянную – в ООП?
На странице руководства http://www.php.net/manual/en/language.oop5.constants.php вы можете найти следующее:
The value must be a constant expression, not (for example) a variable, a property, a result of a mathematical operation, or a function call.
Константа не может иметь переменных.
Я предлагаю вам не зависеть от $_SERVER['DOCUMENT_ROOT']
, вместо этого вы можете определить ROOT
самостоятельно.
Например, у вас есть config.php
в корневом config.php
документа, вы можете сделать
define('ROOT', __DIR__.'/'); // php version >= 5.3 define('ROOT', dirname(__FILE__).'/'); // php version < 5.3
затем используйте ROOT
вместо этого.
Почему бы не установить его в свой __construct()
. Технически, это то, для чего оно есть.
class Dir { public function __construct() { self::ROOT = $_SERVER['DOCUMENT_ROOT']."project/"; } }
Я предлагаю вам это решение, потому что вы хотите использовать ООП, и все должны быть внутри класса. Поэтому, поскольку прямое использование const или static var невозможно, я бы использовал статическую функцию:
class Dir { public static function getRoot() { return $_SERVER['DOCUMENT_ROOT'] . 'project/'; } }
и вы можете использовать его как
Dir::getRoot();