PHP 对象类变量

发布于 2024-08-03 22:14:42 字数 267 浏览 5 评论 0原文

我在 PHP 中构建了一个类,并且必须将类变量声明为对象。每次我想声明一个空对象时,我都会使用:

$var=new stdClass;

但是如果我用它来声明一个类变量,则会

class foo
{
    var $bar=new stdClass;
}

发生解析错误。有没有办法做到这一点,或者我必须在构造函数中将类变量声明为对象?

PS:我使用的是 PHP 4。

I have built a class in PHP and I must declare a class variable as an object. Everytime I want to declare an empty object I use:

$var=new stdClass;

But if I use it to declare a class variable as

class foo
{
    var $bar=new stdClass;
}

a parse error occurs. Is there a way to do this or must I declare the class variable as an object in the constructor function?

PS: I'm using PHP 4.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冬天的雪花 2024-08-10 22:14:42

您只能以这种方式为类成员声明静态值,即 intsstringsboolsarrays 等在。您不能执行任何涉及任何类型处理的操作,例如调用函数或创建对象。

您必须在构造函数中执行此操作。

相关手册部分

在 PHP 4 中,仅允许 var 变量的常量初始值设定项。要使用非常量值初始化变量,您需要一个初始化函数,该函数在从类构造对象时自动调用。这样的函数称为构造函数(见下文)。

You can only declare static values this way for class members, i.e. ints, strings, bools, arrays and so on. You can't do anything that involves processing of any kind, like calling functions or creating objects.

You'll have to do it in the constructor.

Relevant manual section:

In PHP 4, only constant initializers for var variables are allowed. To initialize variables with non-constant values, you need an initialization function which is called automatically when an object is being constructed from the class. Such a function is called a constructor (see below).

半窗疏影 2024-08-10 22:14:42

类和对象 (PHP 4)。每次都读得好!

Classes and Objects (PHP 4). A good read everytime!

带刺的爱情 2024-08-10 22:14:42

你不应该在这里创建你的对象。

你应该更好地编写setter和getter

<?php
    class foo
    {
       var $bar = null;

       function foo($object = null)
       {
          $this->setBar($object);
       }

       function setBar($object = null)
       { 
          if (null === $object)
          {
             $this->bar = new stdClass();
             return $this;
          }

          $this->bar = $object;
          return $this;
       }
    }

顺便说一句,你应该使用PHP5来与OOP一起工作,这更灵活......

You should not create your object here.

You should better write setter and getter

<?php
    class foo
    {
       var $bar = null;

       function foo($object = null)
       {
          $this->setBar($object);
       }

       function setBar($object = null)
       { 
          if (null === $object)
          {
             $this->bar = new stdClass();
             return $this;
          }

          $this->bar = $object;
          return $this;
       }
    }

By the way, you should use PHP5 to work with OOP, which is more flexible...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文