разбора ошибки установки переменной в PHP - PullRequest
3 голосов
/ 30 июля 2010

У меня есть класс конфигурации, который используется во всем моем коде. Одна переменная в этом классе - это URL сайта. Недавно я добавил SSL на свой сервер, и теперь мне нужно проверить это и назначить в качестве протокола http или https.

Код, который я пробовал:

<?php

class Test
{
   public static $blah = (1 == 1) ? 'this' : 'or this';
}

echo Test::$blah;

?>

Это приводит к ошибке разбора.

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

К сожалению, вы не можете устанавливать переменные класса по умолчанию, используя выражения. Вы можете использовать только примитивные типы и значения. Только array() распознается.

Что вы можете сделать, это создать функцию «Статический инициализатор», которая может быть вызвана только один раз и установит ваши переменные ... Таким образом:

<?php

class Test
{
   public static $blah;
   private static $__initialized = false;

   public static function __initStatic() {
       if(self::$__initialized) return;

       self::$blah = (1 == 1) ? 'this' : 'or this';

       self::$__initialized = true;
   }
}
Test::__initStatic();

А затем просто извлеките вашу переменную из другого файла:

<?php
echo Test::$blah;

Если вы позже отредактируете Test::$blah в коде, он не будет возвращен при случайном вызове Test::__initStatic().

2 голосов
/ 30 июля 2010

Вы не можете использовать расчет для определения значения свойства объекта.Вам нужно сделать это:

<?php

class Test
{
   public static $blah;
}

// set the value here
Test::$blah = (1 == 1) ? 'this' : 'or this';


echo Test::$blah;

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...