好吧,我认为这可能是非常基本的,但它仍然让我感到困惑。在回答我的问题之前,让我通过这个工作示例来演示我的问题所基于的概念:
<?php
$a = 'Stack';
$b = $a.' Overflow';
echo $b; // Result: "Stack Overflow"
?>
在上面的示例中,$b
被定义为 $a
和 'Overflow'
的组合。
现在,假设我想做与上面相同的事情,除了我不想使用全局变量。我想使用类。这就是我尝试实现这一目标的方法:
<?php
class ClassName {
public $a = 'Stack';
public $b = $this->a.' Overflow'; // This gives me: "Parse error: syntax error, unexpected '$this'"
}
$instantiate = new ClassName;
echo $instantiate->$b; // Desired result: "Stack Overflow"
?>
如上所述,此尝试会导致错误。对我来说,这种尝试似乎合乎逻辑,但我猜 PHP 并不这么认为。
问题:这可能吗?如果可以,我该如何实现预期的结果?另外,如果你能解释为什么我的尝试失败了(逻辑上),那就太好了。
我已经连续搜索和研究了几个小时,试图找到答案或自己解决这个问题,但在我的一生中,我找不到任何人或任何东西,甚至触及这个(包括其他堆栈溢出线程) )。我什至找不到任何地方说这是不可能的或类似的事情。
我是 PHP 新手,所以我可能需要比其他人更多的解释,但任何类型的帮助或一般指导将不胜感激。谢谢。
最佳答案
定义类时不能使用 $this,因为它引用实例化后可用的具体对象上下文。您可以使用构造函数来完成此类任务。
class ClassName
{
public $a = 'Stack';
public $b = "";
function __construct()
{
$this->b = $this->a.' Overflow';
}
}
$instantiate = new ClassName;
echo $instantiate->b;
关于PHP:如何在类中创建动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257052/