我在一个单独的配置文件中定义了一个变量:
define('URL', 'someurl.co.uk');
但是,当我尝试使用它来连接类中的字符串时:
class AdminEmail extends Email {
private $from = "jsmith".URL;
我收到以下错误:
Parse error: parse error, expecting `','' or `';''
但是,如果我回应它,它会完美显示!
希望我没有错过任何明显的东西!
答案 0 :(得分:17)
在预定义类变量时,不能使用常量,函数或其他变量。类定义类似于蓝图,它们必须完全独立于脚本中的其他任何内容(当然,除了对其他类的依赖性。)
您必须稍后设置,例如在构造函数中:
class AdminEmail extends Email {
private $from;
function __construct()
{
$this->from = "jsmith".URL;
}
或单独的功能:
function setFrom($from)
{
$this->from = $from;
}
答案 1 :(得分:1)
在预定义类变量时,可以使用常量,但不能使用函数或其他变量。此外,您不能使用.
点字符串连接运算符之类的运算符。
有关详细信息,请参阅PHP OO Manual。请注意,在预定义类变量时,您可以使用array()
构造。 array()
不是一种功能,而是一种语言结构。
在这种情况下,您确实有两条路径可供选择作为解决方案。您可以在构造函数中定义值:
class AdminEmail extends Email {
private $from;
function __construct()
{
$this->from = "jsmith".URL;
}
另一个解决方案是始终使用函数检索值:
class AdminEmail extends Email {
private $from;
function getFrom()
{
if (null === $this->from) {
$this->from = "jsmith" . URL;
}
return $this->from;
}