PHP面向对象的小总结

大家好,今天为大家带来最新一期内容,欢迎观看。

面向对象特性:

*重用性 (每个模块都可以在项目中重复使用)

*灵活性 (每个模块都很轻松被替换更改的)

*拓展性(在模块上添加新功能是很方便的)

类和对象的关系(类生成对象)

用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();参数可以传函数名或者匿名函数

谢谢观看完毕,祝大家天天开心,记得分享一下哦

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019A0H6IQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券