无需生成对象,通过类名字直接调用其属性和方法.
1 | class Math{ |
就是类里面的全局常量,优点说防止定义的名和全局常量冲突
1 |
|
一个类只能定义一个对象
1 | /* |
- self 代表本类
- parent 代表父类
- $this 代表本对象
self
1 | class Single{ |
parent
1 | class Human{ |
- 魔术方法
阻止随意向类里面写入方法和属性.会报一个NOTICE错误.
- __construct(): 构造方法,new 实例时,自动调用
- __destruct(): 析构方法,对象销毁时自动调用
- __get(属性名): 当读取对象的一个不可见属性时,自动调用,并返回值
- __set(属性名,属性值): 当对一个不可见的属性赋值时,自动调用
- __isset(属性名): 当用isset,或empty判断一个不可见属性时,自动调用
- __unset(属性名): 当unset一个不可见属性时,自动调用
不可见: 未定义或者无权访问
class demo{
public function __construct(){
echo "construct is done<br>";
}
public function __get($data){
echo $data;
echo "<br>";
}
public function __set($a,$b){
echo "set".$a."value".$b;
echo "<br>";
}
public function __isset($data){
echo "exists".$data;
echo "<br>";
}
public function __unset($data){
echo "unset value".$data;
echo "<br>";
}
public function __destruct(){
echo "desctruct is done";
}
}
$a = new demo();
$a->sublime;
$a->name = 123;
isset($a->json);
unset($a->connie);
///////////////////////////////////////
class Bar{
public function __set($name,$val){
echo "you have no power here";
}
}
$bar = new Bar();
$bar->age = 9; //Undefined property: Bar
``