https://www.cnblogs.com/sgm4231/p/10084460.html 重要知识点
define("js",123);
static 和 $this 的区别
static 是静态调用使用 (使用方法 static::变量名),$this 是 非静态调用 (使用方法$this-变量名);
class a
{
public $sex = '男';
public static $nation = "中国";
public function person()
{
echo $this->sex;
}
public function person2(){
echo static::$nation;
}
}
class b extends a
{
public static $nation = "新加坡";
public $sex = '女';
public function check(){
$this->person();
}
public function run(){
$this->person2();
}
}
$b = new b();
$b->check();
echo "\n";
$b->run();
exit;
谁调用使用谁
结果
class a
{
public $sex = '男';
public static $nation = "中国";
public function person()
{
echo $this->sex;
}
public function person2(){
echo static::$nation;
}
}
class b extends a
{
// public static $nation = "新加坡";
// public $sex = '女';
public function check(){
$this->person();
}
public function run(){
$this->person2();
}
}
$b = new b();
$b->check();
echo "\n";
$b->run();
exit;
static 静态延迟绑定
但是这样代码是错误的
<?php
class a
{
public $sex = '男';
public static $nation = "中国";
public function person()
{
echo static::$sex;
}
}
class b extends a
{
public static $nation = "新加坡";
public $sex = '女';
}
$b = new b();
$b->person();
exit;
错误信息
self 表示本类调用
class a
{
public function sex()
{
return $sex = '男';
}
public function person()
{
echo self::sex();
}
}
class b extends a
{
public function sex()
{
return $sex = '女';
}
}
$b = new b();
$b->person();
exit;
结果:
或者
class a
{
public static $nation = "中国";
public function sex()
{
return $sex = '男';
}
public function person()
{
echo self::$nation;
}
}
class b extends a
{
public static $nation = "新加坡";
public function sex()
{
return $sex = '女';
}
}
$b = new b();
$b->person();
exit;
parent 则是调用父级的方法和定义的静态变量 ,当调用父级非静态变量则会报错