有人可以告诉我我搞砸了哪里和/或我怎么解决这个问题?
工作代码(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')
,但无济于事。
提前致谢!
答案 0 :(得分:1)
不,你不能像这样设置你的属性:
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');
}
引用manual:
它们(属性)通过使用关键字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');