7

我在单独的配置文件中定义了一个变量:

define('URL', 'someurl.co.uk');

但是,当我尝试使用它与类中的字符串连接时:

class AdminEmail extends Email {

   private $from = "jsmith".URL;

我收到以下错误:

Parse error: parse error, expecting `','' or `';'' 

但是,如果我将其呼应出来,它就会完美显示!

希望我没有错过任何明显的东西!

4

2 回答 2

17

预定义类变量时不能使用常量、函数或其他变量。类定义就像蓝图,它们必须完全独立于脚本中发生的任何其他事情(当然,对其他类的依赖除外。)

您必须稍后设置它,例如在构造函数中:

class AdminEmail extends Email {

   private $from;

   function __construct()
   {
     $this->from = "jsmith".URL;
   }

或在单独的函数中:

   function setFrom($from)
    {
     $this->from = $from;
    }
于 2010-07-20T09:15:08.090 回答
1

预定义类变量时可以使用常量,但不能使用函数或其他变量。您也不能使用.点字符串连接运算符之类的运算符。

有关详细信息,请参阅PHP OO 手册。请注意,您可以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;
  }
于 2010-07-20T09:33:07.503 回答