我一直在看一些代码,在php类中很难弄清楚变量声明。具体地说,我正在查看的代码似乎在使用类变量之前没有声明它们。这可能是意料之中的,但我找不到任何信息来说明这是可能的。那么你会期待这样的结果吗:
class Example
{
public function __construct()
{
$this->data = array();
$this->var = 'something';
}
}去上班?这会在后面要使用的类实例上创建这些变量吗?
发布于 2010-06-25 10:17:38
这与普通变量声明的工作方式相同:
$foo = 'bar'; // Created a new variable
class Foo {
function __construct() {
$this->foo = 'bar'; // Created a new variable
}
}PHP类与其他语言不完全相同,在其他语言中,成员变量需要指定为类声明的一部分。PHP类成员可以在任何时候创建。
话虽如此,应该在类声明中像public $foo = null;一样声明变量,如果它应该是类的永久成员,以清楚地表达意图。
发布于 2010-06-25 10:17:20
所以你会期望这个:(代码样本)工作吗?
是。这是一种非常糟糕的做法(至少它让我的C++皮肤起鸡皮疙瘩),但我一点也不会感到惊讶。有关在不事先声明的情况下使用另一个类的示例,请参见下一页中的示例2。如果启用了E_STRICT,http://www.php.net/manual/en/language.oop5.basic.php将抛出错误。
这会在后面要使用的类实例上创建这些变量吗?
是啊。PHP不是很有趣吗?来自C++/C#背景的PHP花了一段时间才逐渐适应它的松散类型,但它也有它的优点。
发布于 2010-06-25 10:22:27
这完全是功能性的,尽管观点会有所不同。因为类成员变量的创建在构造函数中,所以除非被删除,否则它们将存在于对象的每个实例中。
通常使用信息性注释来声明类成员变量:
class Example
{
private $data; // array of example data
private $var; // main state variable
public function __construct()
{
$this->data = array();
$this->var = 'something';
}
}https://stackoverflow.com/questions/3115115
复制相似问题