我很困惑:为类中的所有函数定义变量的最简单方法是什么


I'm confused: What is the easiest way to define a variable for all functions in a class?

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

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

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

class MyClass
    {
    $foo = 'bar';
    function DoStuff()
        {
        echo $foo;
        }
    } //MyClass
Class Example
{
    private $foo = 5;
    function bar()
    {
        echo $this->foo;
    }
}

如果它应该只在你的类中可用,我建议这样做:

class MyClass {
   private $foo = 'bar';
   public function DoStuff() {
      echo $this->foo;
   }
}

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

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

常量

是常量 - 它的值无法更改

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

所有这些都是声明数据的有效方法,这取决于您需要什么。

您是否需要数据不可更改?(常量)您是否需要数据在类外可见?(公开)您是否需要在实例之间共享数据(静态;请注意,您也可以使用私有静态数据)

>public $foo是一个变量,每个人都可以访问它,就像$my = new MyClass(); $my->foo一样,并且可以设置

public static $foo是一个变量,每个人都可以访问,就像MyClass::foo一样,但不能设置

global $foo是一个变量,每个人都可以设置并得到$foo

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

const foo就像一个静态的