很抱歉问一些广泛记录的东西,但我遇到了这么多不同的方法,我非常非常困惑。
-
public static
-
public $foo
-
global
,这似乎是一种糟糕的方法 -
define()
-
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
就像一个静态的