Ещё один кринжовый вопрос новичка про ооп. Несмотря на то что $_SERVER является глобальной, я не могу задать $url_a её значение, как и любой другой стандартной глобальной переменной, хотя в методе можно это сделать. Короче, как такое сделать? PHP: class SwitchPage { public $url_a = $_SERVER['HTTP_HOST']; //Не работает }
До сих пор в отладку не умеем? PHP: <?php error_reporting(E_ALL); ini_set("display_errors", 1); class SwitchPage { public $url; public function __construct() { $this->url = $_SERVER['HTTP_HOST']; var_dump($this->url); } } new SwitchPage(); Если CGI дёргаешь, там нет никакого $_SERVER['HTTP_HOST'], естественно, если через веб-сервер, я чо-то пэ.
Мне нужно использовать $url_a внутри других Статических функциях класса, вроде как с таких подходом это нельзя сделать
Почему про статику в первом посте топика ничего нет? Старайся точнее формулировать задачу ) PHP: class SwitchPage { public static $url; public static function init() { self::$url = $_SERVER['HTTP_HOST']; } } SwitchPage::init(); Всё-таки рекомендую перечитать доку по классам. Статику вообще лучше избегать. И код оформлять по общепринятому стандарту (PSR-12: Extended Coding Style - PHP-FIG, rus-PSR/psr-12.md at master · MiklyxoMaklai/rus-PSR · GitHub).
Про статику и прочее, не писал сразу т.к, думал, что вопрос в заголовке может получить прямой ответ, без всяких методов. Но оказалось что тема сложнее. Мне уже не ловко говорить что ответы не подходят, что является моей ошибкой, т.к сразу не сформулировал вопрос, но если мы будем делать таким образом: то мы не сможет вызывать $url в других методах класса, что как и писал выше мне нужно, можем лишь в каждом методе заново регистрировать $url что максимально глупо, я пробовал вместо $url вызывать сам метод init(), но мало того что это маразм, т.к и всё что мы можем делать это возвращать то что делает метод init(), но не работать с тем что он возвращает.
@Dasderdas, толи лыжи не едут... PHP: class SwitchPage { public static $url; public static function init() { self::$url = $_SERVER['HTTP_HOST']; } public static function foo() { var_dump(self::$url); } } SwitchPage::init(); SwitchPage::foo();
Спасибо, работает. Ну хоть и топорно каждый раз ручками вызывать метод init(), но видимо, другого решения и нет
Всё же просто. В пыхе можно инициализировать при объявлении поля только константой, а $_SERVER - переменная.