大家好,今天为大家带来最新一期内容,欢迎观看。
面向对象特性:
*重用性 (每个模块都可以在项目中重复使用)
*灵活性 (每个模块都很轻松被替换更改的)
*拓展性(在模块上添加新功能是很方便的)
类和对象的关系(类生成对象)
用class 声明一个类,在类里面只能有 成员属性 和 成员方法!!!!不能有其他,在一个脚本中不能有两个同名类,实例化类可以有多个对象
类的属性和方法
访问控制:
public 公有 都可以访问
private 私有 只有类本身内部可以访问
protected 受保护 继承的子类和类本身内部可以访问,外部访问不了,如: $computer->output();如果output()方法设了protected,则报错。
类里面的方法:
方法里面调用一个属性,需要实例化类才能访问属性,而$this可以理解为是这个类的一个实例
构造方法与析构方法(实例化时执行和销毁时执行)
构造方法可以传递参数,在实例化时传入
析构方法:不能有参数
类常量
内部访问 self::常量名
外部访问不需要实例化:类名::常量名
$this 和 self 的区别
一个是对象$this 相当于实例化后,可以说除了静态和const常量,基本上其他都可以使用this联络 ;
self则是类本身 self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。用self时,可以不用实例化的
子类也可以覆盖父类的方法
子类没有构造方法时,会调用父类的构造方法,有则调用自己的,
用关键字 parent:: __construct();可以调用父类的构造方法
用final关键字加在类前面就不会被继承;加到方法面前,此方法就不会被重写
命名空间(解决命名冲突问题)
利用文件系统不用目录的原理
被引入的php文件中加入 namespace 目录子目录;
使用时调用:new 目录子目录类名();如 new comsessioncomputer();
受命名空间影响的有,类(包括抽象类,traits),接口,函数,常量(const和define都是用来声明常量的(它们的区别不详述),但是在命名空间里,define的作用是全局的,而const则作用于当前空间。)
要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,下面的写法都是错误的:
由于每次调用都要写上路径,很麻烦,所以出现use的用法(use引入必须带类名或者函数名)
在调用时先用use引入,use 目录子目录类;还可以起个别名区别 as
重点:在命名空间里面调用全局的类,函数,常量的区别,
页面a定义了命名空间 namespace venter;引入b页面(全局空间)后,此时想调用b页面的类,必须:
New enter() 加个代表全局空间下的
但是调用函数和常量时,就不需要加,因为他会自动寻找,向全局寻找。
类自动加载:
当你实例化一个类时,这个类不存在,就会自动执行我们写的 function __autoload($className){},在这个自动函数的内部去执行我们想要操作的代码,参数就是我们实例化的类名,因此可以根据参数去引入php文件。
__autoload将被淘汰,使用新的函数 spl_autoload_register();参数可以传函数名或者匿名函数
谢谢观看完毕,祝大家天天开心,记得分享一下哦
领取专属 10元无门槛券
私享最新 技术干货