我一直在查看一些代码,并且很难在php类中编写变量声明。具体来说,我正在看的代码似乎没有在使用它们之前声明类变量。现在这可能是预期的,但我找不到任何表明它是可能的信息。所以你期待这个:
class Example
{
public function __construct()
{
$this->data = array();
$this->var = 'something';
}
}
上班?这是否会在以后要使用的类实例上创建这些变量?
答案 0 :(得分:4)
这与普通变量声明的工作方式相同:
$foo = 'bar'; // Created a new variable
class Foo {
function __construct() {
$this->foo = 'bar'; // Created a new variable
}
}
PHP类与其他语言不完全相同,其他成员变量需要指定为类声明的一部分。可以随时创建PHP类成员。
话虽如此,你应该在类声明中声明类似public $foo = null;
的变量,如果它应该是类的永久成员,则清楚地表达意图。
答案 1 :(得分:2)
那么你期望这个:(代码样本)能够工作吗? 是。这是非常糟糕的做法(至少它让我的C ++皮肤爬行),但它丝毫不会让我感到惊讶。有关使用另一个类而未预先声明它的示例,请参阅下一页中的示例2。 http://www.php.net/manual/en/language.oop5.basic.php如果启用了E_STRICT,则会抛出错误。
这是否会在以后要使用的类实例上创建这些变量?
是的。 PHP不是很有趣吗?来自C ++ / C#背景,PHP花了很长时间才在我身上发展,因为它非常宽松,但它有其优点。
答案 2 :(得分:1)
这完全是功能性的,但意见会有所不同。由于类成员变量的创建在构造函数中,因此它们将存在于对象的每个实例中,除非被删除。
通常使用信息性注释来声明类成员变量:
class Example
{
private $data; // array of example data
private $var; // main state variable
public function __construct()
{
$this->data = array();
$this->var = 'something';
}
}