Может кто-нибудь сказать мне, где я все испортил и / или как я могу это решить?
Рабочий код (PHP):
public $data = array(
....
....
'copyright' => array(
'es' => '2013 Mi Empresa',
'en' => '2013 My Company',
),
....
....
);
Сломанный код:
public $data = array(
....
....
'copyright' => array(
'es' => date('Y') . ' Mi Empresa',
'en' => date('Y') . ' My Company',
),
....
....
);
Когда я говорю «сломанный», я имею в виду <body>
пустой. Я также попытался добавить (string)date('Y')
на месте date('Y')
, но безрезультатно.
Заранее спасибо!
Нет, вы не можете настроить свои свойства так:
class Test
{
// this won't work
public $data = array(
'copyright' => array(
'es' => date('Y') . ' Mi Empresa',
'en' => date('Y') . ' My Company',
),
);
// even as simple as this
public $date_now = date('Y-m-d');
}
Цитируя руководство:
Они (свойства) определяются с использованием одного из ключевых слов public, protected или private, за которым следует обычное объявление переменной. Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.
Это просто означает, что PHP не выполняет такие операции во время компиляции; Вы не можете назначать вычисленные значения и функции константам.
Установите его на конструкторе:
class Test
{
public $data = array(
'copyright' => array(
'es' => '',
'en' => '' ,
),
);
public $date_today = '';
public function __construct()
{
$this->data['copyright']['es'] = date('Y') . ' Mi Empresa';
$this->data['copyright']['en'] = date('Y') . ' My Company';
$this->date_today = date('Y-m-d');
}
}
$test = new Test();
echo '<pre>';
print_r($test);
Примечание: проблема в том, что нет проблем с ошибками в том, что наиболее вероятно, что отчеты об ошибках отключены. (Белый экран смерти).
Всегда включайте его на стадии разработки:
error_reporting(E_ALL);
ini_set('display_errors', '1');
Других решений пока нет …