1.头文件自动加载,这个函数比OC里面要好用,哈哈,可能是iOS开发多了,到处要比较,当然,Swift是自动加载的,不需要做任何动作
spl_autoload_register(function ($class_name) { // 只能加载同目录的文件
require_once $class_name . '.php';
});
2.在类中常量的访问,本来以为是下面的方式
class Math {
const PI = 3.14;
public function circleArea($r = 10) {
return $r * $r * PI;
}
}
发现是错的,既然在类中定义的,当然可以直接访问,下面的方法是正确的。
class Math {
const PI = 3.14;
public function circleArea($r = 10) {
return $r * $r * Math::PI;
}
}
类名:: 可以改为 self:: 原来php中也有self关键字的,第一次发现,self关键字貌似也只能用在const和
static修饰的变量上。
class Math {
const PI = 3.14;
public function circleArea($r = 10) {
return $r * $r * self::PI;
}
}
this是指向当前对象的指针(姑且用C里面的指针来看吧)
self是指向当前类的指针
parent是指向父类的指针(我 们这里频繁使用指针来描述,是因为没有更好的语言来表达)
self与$this的区别
1. 区别:代表不一样的内容:self代表类,$this代表对象
2. 区别:访问的内容也不一样:self访问类常量,$this访问属性和方法(普通)
3. 区别:self与$this访问数据的方式不一样,self使用范围解析操作符(::),$this使用对象访问符(->)
4. 相同:都是在类中使用(都是在方法里面使用)
静态(static)
在类中也有类似函数的静态变量之类的东西,(函数中:不被重复定义,函数的多次调用共有一个静态变量),使用静态修饰的表示该属性或者方法属于类,不会因为对象的实例化而改变其本身的内容。
语法:
1. 静态属性:访问修饰限定符static 属性名字
2. 静态方法:访问修饰限定符static function 方法名字()
静态与非静态的区别
1. 设置出发点:静态是给类使用,非静态是给对象使用
2. 对象不能访问静态属性(对象访问属性只会去对象的内存区域(堆)找,而静态属性在代码区),对象能够访问静态方法(静态方法和普通方法都在代码区里)
3. 类能够访问普通方法(方法里面没有使用$this),类不能访问普通属性(属性是在对象空间里)