有一个类属性值的变量?
问题描述:
在我的班级我有一些属性。我希望这些值有一个另外的属性。但我注意到它不可能。有一个类属性值的变量?
代码:
$property = "my name is: $this->name";
产生错误。
我用构造函数设置$ this-> name。
你能以某种方式完成这个吗?我希望在属性中定义“我的名字是:”,如果可能的话,不在构造函数中定义。
谢谢。
答
你可以做一些可变的变量:
$property = 'name';
echo "my name is: {$$property}";
在这种情况下,$属性的计算结果为“名”和$被预先计划,因此$名称是结果。这种方法可能会有危险,因为我希望你能欣赏。
我会质疑你在这里做什么。如果你想模板的消息,可以考虑这样的事情:
$template = 'hi my name is %name%';
echo str_replace('%name%', $name, $template);
更一般地,使用对象的属性作为语言的设计和添加方法在必要时产生输出字符串。变量变量通常是不必要的。
答
你必须使用$ this->变量来访问一个对象自己的变量。
$this->property = "my name is: " . $this->name;
这只适用于对象本身。你可以在这里找到更多的信息:http://ch2.php.net/manual/en/language.oop5.visibility.php。
+0
它没有工作... – ajsie 2010-02-21 19:10:30
答
所有你需要做的就是添加括号。
$property = "my name is: {$this->name}";
虽然它也取决于它给出的错误。它是否说错误发生在这个特定的线上?
是的,这是为了模板的目的。你的第二个解决方案看起来不错 – ajsie 2010-02-21 19:12:23