定义一个静态变量或方法:
static public $b = 1;
public static function b()
{
echo "Hello Work";
}
首先明白,static静态的定义,它是属于一个类中的东西,不属于一个对象的东西
所以:
- 定义为static,是为了在类内部使用。在类的外部,比如实例化或继承都是不可调用的。
- 类的静态方法可以被网页访问
- 在类的内部,调用静态变量或方法,不能用$this调用,而是用self::[$变量名]/[方法名]调用
在非静态方法中
//初不初始化值随便
public $a = 1;//非静态变量
static public $b = 1;//静态变量
//非静态方法
public function a()
{
$this->a;//调用非静态变量
$this->d();//调用非静态方法
self::$b;//调用静态变量
self::b();//调用静态方法
echo "Hello Work";
}
在静态方法内
- 可以用self::调用静态变量或方法
- 不能使用$this调用非静态变量或方法
- 不可以用self::调用非静态变量
- 可以用self::调用非静态方法
//初不初始化值随便
public $a = 1;//非静态变量
static public $b = 1;//静态变量
//非静态方法
public function a()
{
$this->a;//调用非静态变量
$this->d();//调用非静态方法
self::$b;//调用静态变量
self::b();//调用静态方法
echo "Hello Work";
}
//静态方法
public static function b()
{
self::$b;//调用静态变量
self::c();//调用静态方法
//不能用$this调用非静态变量或方法
// $this->a;
// $this->d();
// self::$a;//不能用self调用非静态变量
self::d();//静态方法内调用非静态方法,但会有警告
echo "Hi Work";
}
//静态方法
public static function c()
{
echo "Hey Work";
}
//非静态方法
public function d()
{
echo "end Work";
}
//静态方法
public function e()
{
$this->d();//d()被self::调用后没有变为静态方法
echo "begin Work";
}