25 php static private class member
我在PHP中有以下类
class MyClass
{
// How to declare MyMember here? It needs to be private
public static function MyFunction()
{
// How to access MyMember here?
}
}
Run Code Online (Sandbox Code Playgroud)
我对使用哪种语法感到困惑
$MyMember = 0;
和 echo $MyMember
要么
private $MyMember = 0;
和 echo $MyMember
要么
$this->MyMember = 0;
和 echo $this->MyMember
谁能告诉我怎么做?
在OOPS中我有点不强.
你能在第一时间做到吗?
如果没有,我应该如何声明成员,以便我可以在静态函数中访问它?
Vol*_*erK 69
class MyClass
{
private static $MyMember = 99;
public static function MyFunction()
{
echo self::$MyMember;
}
}
MyClass::MyFunction();
Run Code Online (Sandbox Code Playgroud)
请参阅php手册的oop5章节中的可见性和范围解析运算符(::).
小智 9
这是一个超级迟到的反应,但它可能会帮助某人..
class MyClass
{
private $MyMember;
public static function MyFunction($class)
{
$class->MyMember = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
这样可行.你可以通过这种方式访问私有成员,但如果你有$ class,你应该让MyFunction成为类的方法,就像你只需要调用$ class-> MyFunction()一样.但是,您可以拥有一个静态数组,每个实例都添加到类构造函数中,此静态函数可以访问并迭代,更新所有实例.即..
class MyClass
{
private $MyMember;
private static $MyClasses;
public function __construct()
{
MyClass::$MyClasses[] = $this;
}
public static function MyFunction()
{
foreach(MyClass::$MyClasses as $class)
{
$class->MyMember = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)