类的静态成员以及类的引用,接口和抽象类,后期绑定和命名空间
1.类的静态成员
类的静态属性
//声明静态属性的关键字:static
public static string $uname;
private static int $salary;
public static string $siteName = 'php中文网';
类的静态方法
//静态成员都可以省略public
public static function getBK(){
return self::$uname;
}
使用self::来访问静态成员和类常量
self::$uname = $uname;
self::$salary = $salary;
2.接口,抽象类,trait
接口
接口实现了php的多态性
接口里所有成员都是公开的,即都用public标识符
接口里的方法只有声明,没有实现
//通过interface关键字定义接口
interface Idemo{}
抽象类
抽象类里可以存在抽象方法和工作方法,因此抽象类不能被实例化
抽象方法就是没有实现功能的方法
一个抽象类可以实现多个接口
//通过关键字abstract定义抽象类
abstract class aDemo implements Idemo{}
trait
因为php只能是单继承,因此为了不破坏程序的结构,引入了trait
trait用于不修改父类的情况下扩展类的功能
写法和类类似
//用关键字 trait定义
trait t1{
public dd(){}
}
//用法,用关键词use 实现引入trait
class Work extends aDemo{
use t1;
pubic function fun(){}
}
3. 后期静态绑定
后期静态绑定关键字:static
static 后期静态绑定 一般是用在静态继承上下文里
如果此类不需要被人继承可以直接使用self::
class demo1{
public static fun1(){
return 'car';
}
public fun2(){
return static::fun1(); //static实现后期绑定
}
}
4. use在命名空间中的使用
可以用as为命名空间起别名
如果没有用as 默认是最后一个单词为别名
需要在文件的顶部通过设置命名空间,关键字namespace ns1;以此来解决全局变量的命名冲突问题.
//用关键字use 引入类
use app\controller\Index;
// 别名
use app\controller as pr;
//如果没用as,默认最后一个单词为别名 Index
use app\controller\Index;