使用PHP在类中声明变量
对PHP中的类来说是相当陌生的,所以请耐心听我说使用PHP在类中声明变量,php,class,simplexml,private,class-variables,Php,Class,Simplexml,Private,Class Variables,对PHP中的类来说是相当陌生的,所以请耐心听我说 class processRoutes { //Next line works private $doc = "works as as string"; //Next line does not work, "Parse error: syntax error, unexpected T_NEW" private $doc = new SimpleXMLElement(
class processRoutes
{
//Next line works
private $doc = "works as as string";
//Next line does not work, "Parse error: syntax error, unexpected T_NEW"
private $doc = new SimpleXMLElement('routingConfig.xml', null, true);
private function getTablenames()
{
//do stuff
}
}
我试图最终在我的类中利用几个私有函数中的SimpleXMLElement对象。进行此操作的正确方法是什么?为什么我当前的方法不起作用?您需要在构造函数中执行此操作,因为在脚本解析的这个阶段无法对其进行评估。”简单值,如字符串、布尔值和数值也可以
class processRoutes
{
//Next line works
private $doc = "works as as string";
private $doc;
public function __construct()
{
$this->doc = new SimpleXMLElement('routingConfig.xml', null, true);
}
// ....
}
您需要在构造函数中执行此操作,因为在脚本分析的这个阶段无法对其进行计算。”简单值,如字符串、布尔值和数值也可以
class processRoutes
{
//Next line works
private $doc = "works as as string";
private $doc;
public function __construct()
{
$this->doc = new SimpleXMLElement('routingConfig.xml', null, true);
}
// ....
}
任何时候你想要引用一个类的变量,使用关键字$this
public function getTablenames()
{
$my_new_variable = $this->doc; // Transfers the $doc variable
}
任何时候你想要引用一个类的变量,使用关键字$this
public function getTablenames()
{
$my_new_variable = $this->doc; // Transfers the $doc variable
}
您正试图使用对象实例初始化属性,但只允许使用可在“编译时”确定的常量初始化变量 从 该声明可能包含一个初始化,但该初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且必须不依赖于运行时信息才能进行计算 任何依赖于“运行时”知识的初始化都需要执行
- 在一个在
上运行的构造函数中(参考@Dan Lee关于如何实现它的答案)$this->doc
- 从内部,例如从构造函数调用的“initialiser”函数(您可以这样做,以使“初始化”步骤与从构造函数执行的其他“实际工作”不同),或者
- 由类的使用者手动执行。用户可以操作
- 直接在属性或对象上(例如
)myProcessRoutes->doc='someotherstring'
- 通过对对象的函数调用,例如
,或myProcessRoutes.initialise_doc('some other string')
- 通过对象上的setter-我将让您研究这些,因为我在PHP中没有使用它们李>
- 直接在属性或对象上(例如
private $doc = new SimpleXMLElement('routingConfig.xml', null, true);
(也就是说,您正在将
'routingConfig.xml'
、null
和true
的值传递给SimpleXMLElement
的新实例,以便该实例的构造函数可以使用传递给它的值初始化该实例,以备使用).您正试图用对象实例初始化属性,但只允许使用可在“编译时”确定的常量初始化变量
从
该声明可能包含一个初始化,但该初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且必须不依赖于运行时信息才能进行计算
任何依赖于“运行时”知识的初始化都需要执行
- 在一个在
上运行的构造函数中(参考@Dan Lee关于如何实现它的答案)$this->doc
- 从内部,例如从构造函数调用的“initialiser”函数(您可以这样做,以使“初始化”步骤与从构造函数执行的其他“实际工作”不同),或者
- 由类的使用者手动执行。用户可以操作
- 直接在属性或对象上(例如
)myProcessRoutes->doc='someotherstring'
- 通过对对象的函数调用,例如
,或myProcessRoutes.initialise_doc('some other string')
- 通过对象上的setter-我将让您研究这些,因为我在PHP中没有使用它们李>
- 直接在属性或对象上(例如
private $doc = new SimpleXMLElement('routingConfig.xml', null, true);
(也就是说,您正在将'routingConfig.xml'
、null
和true
的值传递给SimpleXMLElement
的新实例,以便该实例的构造函数可以使用您传递给它的值初始化该实例,以备使用)。是\uu构造()
function是否只是一个填充函数,用于执行类似的各种任务?看起来不必要的额外步骤,但我相信这是有原因的…这是类实例化的时候。在这一步中没有不必要的步骤,这在您的情况下是强制性的。\u construction()
函数只是一个填充函数,用于执行像这样的各种任务吗?看起来不必要的额外步骤,但我相信这是有原因的…这是类实例化的时候。在这一步中没有不必要的步骤,这在您的案例中是强制性的。