首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中隐式声明类变量?

在php中隐式声明类变量?
EN

Stack Overflow用户
提问于 2010-06-25 10:06:53
回答 3查看 3.6K关注 0票数 3

我一直在看一些代码,在php类中很难弄清楚变量声明。具体地说,我正在查看的代码似乎在使用类变量之前没有声明它们。这可能是意料之中的,但我找不到任何信息来说明这是可能的。那么你会期待这样的结果吗:

代码语言:javascript
复制
class Example
{

    public function __construct()
    {
        $this->data = array();
        $this->var = 'something';

    }

}

去上班?这会在后面要使用的类实例上创建这些变量吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-25 10:17:38

这与普通变量声明的工作方式相同:

代码语言:javascript
复制
$foo = 'bar'; // Created a new variable

class Foo {
    function __construct() {
        $this->foo = 'bar'; // Created a new variable
    }
}

PHP类与其他语言不完全相同,在其他语言中,成员变量需要指定为类声明的一部分。PHP类成员可以在任何时候创建。

话虽如此,应该在类声明中像public $foo = null;一样声明变量,如果它应该是类的永久成员,以清楚地表达意图。

票数 4
EN

Stack Overflow用户

发布于 2010-06-25 10:17:20

所以你会期望这个:(代码样本)工作吗?

是。这是一种非常糟糕的做法(至少它让我的C++皮肤起鸡皮疙瘩),但我一点也不会感到惊讶。有关在不事先声明的情况下使用另一个类的示例,请参见下一页中的示例2。如果启用了E_STRICT,http://www.php.net/manual/en/language.oop5.basic.php将抛出错误。

这会在后面要使用的类实例上创建这些变量吗?

是啊。PHP不是很有趣吗?来自C++/C#背景的PHP花了一段时间才逐渐适应它的松散类型,但它也有它的优点。

票数 2
EN

Stack Overflow用户

发布于 2010-06-25 10:22:27

这完全是功能性的,尽管观点会有所不同。因为类成员变量的创建在构造函数中,所以除非被删除,否则它们将存在于对象的每个实例中。

通常使用信息性注释来声明类成员变量:

代码语言:javascript
复制
class Example
{
    private $data;  // array of example data

    private $var;   // main state variable

    public function __construct()
    {
        $this->data = array();
        $this->var = 'something';
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3115115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档