2

很抱歉问了一些被广泛记录的东西,但是我遇到了很多不同的方法,我非常非常困惑。

  1. public static
  2. public $foo
  3. global,这似乎是一种不好的做法
  4. define()
  5. const constant = 'constant value';

我是否低估了我在这里尝试做的事情的复杂性?

class MyClass
    {

    $foo = 'bar';

    function DoStuff()
        {
        echo $foo;
        }

    } //MyClass
4

4 回答 4

5
Class Example
{
    private $foo = 5;

    function bar()
    {
        echo $this->foo;
    }
}
于 2012-08-15T09:08:13.270 回答
4

如果它应该只在你的课堂上可用,我建议这样做:

class MyClass {
   private $foo = 'bar';

   public function DoStuff() {
      echo $this->foo;
   }

}

如果它应该可以从其他类中获得,你应该实现 getter 和 setter。

于 2012-08-15T09:09:29.067 回答
1

静态变量在没有类实例的情况下可用,并且在所有实例之间共享

const 是恒定的 - 它的值不能改变

公共属性属于特定实例,可以由任何对象更改,而不仅仅是实例。

都是有效的数据声明方式,这取决于你需要什么。

您是否需要数据不可更改?(const) 你需要数据在课堂之外可见吗?(公共)您是否需要在实例之间共享数据(静态;注意您也可以拥有私有静态)

于 2012-08-15T09:13:25.867 回答
1

public $foo是每个人都可以访问$my = new MyClass(); $my->foo并且可以设置的变量

public static $fooMyClass::foo是一个每个人都可以访问但不能设置的变量

global $foo是每个人都可以设置和获得的变量$foo

define("FOO","myString")是一种全球性的,但可以通过FOO但不能设置

const foo就像一个静电

于 2012-08-15T09:13:49.947 回答