您的位置 首页 php

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 com\session\computer();

受命名空间影响的有,类(包括 抽象类 ,traits),接口,函数,常量(const和 define 都是用来声明常量的(它们的区别不详述),但是在命名空间里,define的作用是全局的,而const则作用于当前空间。)

要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,下面的写法都是错误的:

由于每次调用都要写上路径,很麻烦,所以出现use的用法(use引入必须带类名或者函数名)

在调用时先用use引入,use 目录\子目录\类;还可以起个别名区别 as

重点:在命名空间里面调用全局的类,函数,常量的区别,

页面a定义了命名空间 namespace venter;引入b页面(全局空间)后,此时想调用b页面的类,必须:

New \venter() 加个\代表全局空间下的

但是调用函数和常量时,就不需要加,因为他会自动寻找,向全局寻找。

类自动加载:

当你实例化一个类时,这个类不存在,就会自动执行我们写的 function __autoload($className){},在这个自动函数的内部去执行我们想要操作的代码,参数就是我们实例化的类名,因此可以根据参数去引入php文件。

__autoload将被淘汰,使用新的函数 spl_autoload_register();参数可以传函数名或者匿名函数

文章来源:智云一二三科技

文章标题:PHP面向对象的小总结

文章地址:https://www.zhihuclub.com/152037.shtml

关于作者: 智云科技

热门文章

网站地图