摘要:前言自从进入版本以来,开始全面地支持面向对象编程。好了,进入正题,面向对象的三大特性分别是封装性,继承性以及多态性,使用面向对象开发,让我们的程序可维护以及扩展性大大提高。
前言
自从php进入5.0版本以来,PHP开始全面地支持面向对象编程。嗯,谁说php很low。我们专注web开发好不好;谁说php代码烂,自己水平不行写的代码当然烂了;谁说php框架不优雅的,你用过laravel吗。好了,进入正题,面向对象的三大特性分别是封装性,继承性以及多态性,使用面向对象开发,让我们的程序可维护以及扩展性大大提高。
基本知识类:具有相同属性或方法的一类集合体。比如雪佛兰汽车是一个雪佛兰汽车类,奔驰汽车是一个奔驰汽车类,宝马汽车是一个宝马汽车类,而这三个类又是汽车大类的子类。
对象:类的一个具体实现,比如宝马Q5就是宝马汽车类的一个具体实现。对象地使用是放在内存中的。一下让我们了解一下对象在内存中的分配
使用面向对象,就是灵活地使用以上两个知识点。让我们来创建和使用类与对象
a="opt";//将opt对象中的a属性赋值为opt $opt->funA();//打印出"I am function A" ?>
修饰符:在定义类与类中的属性时,我们可以使用如下三个修饰符,若不加,则默认为public
public:权限最大
protected:权限范围在其本身与其子类
private:权限范围仅在其本身
构造函数与析构函数:在我们对类实例化创建对象时,往往需要对对象进行初始化,这时,我们就需要在类中定义一个构造方法。当我们使用完对象时,就需要释放对象,以减少内存的使用,这时我们就需要使用析构方法。
在php中我们使用__construct()方法与__destruct(),如下代码
a=$a; $this->b=$b; echo "我是构造函数"; } public function __destruct(){ echo "我是析构函数"; } } ?>封装性
当我们开发一些重要的程序模块时,常常不希望别人能轻易访问这些程序模块的数据,因此需要对这些数据进行封装。这时我们要进行数据的访问控制,常常使用private关键字来对这些属性与方法进行封装。
如下
这样,当我们创建对象时就不能调用私有的属性与方法。但是我们可以通过使用魔术方法来对这些私有属性与方法进行访问。
__set()与__get()的使用
通过__set()方法我们可以通过对象直接设置成员属性值
通过__get()方法我们可以通过对象直接获取成员属性值
$oldValue=$newvalue; } public function __get($newvalue){ return $newvalue; } } $opt= new setClass(); $opt->a="sss";//直接设置私有属性值 echo $opt->b;//直接读取私有属性值 ?>
__isset()与__unset()的使用
通过__isset()直接查看对象中私有属性是否存在
通过__unset()直接删除对象中的私有属性
$b); var_dump(unset($opt->$b)); ?>继承性
当我们编写多个类时,常常多个类具有相同的属性与方法,为了简化代码我们引入了继承的概念,子类可以继承父类的一些属性与方法,减少了冗余代码地编写。
如何编写继承类
我们使用关键字extends来编写子类
如上,childClass是parentClass的子类,php仅支持单继承,即一个子类只有一个父类,但父类可以有多个子类。
重写父类方法
当父类中的方法不能满足子类的使用时我们可以重写父类方法。但当我们又想在子类使用父类的方法时,我们可以使用如下语法:parent::方法名
几个重要的关键字
3.1 final
final可以修饰类与方法,不能修饰成员属性; 被final修饰的类不能继承,而用final修饰的方法在子类中不能被重写
3.2 static
static可以修饰成员属性与成员方法,不能修饰类; 使用static修饰的成员与方法可以通过类直接使用,使用如下语法:类名::$属性名或方法名(); 在类中使用时通过如下语法:self::$属性名或方法名.
3.3 const
在类中声明常量使用const,而不是使用define(); 比如 const TT=90 当使用常量时直接使用如下语法self::常量名
3.4 instanceof
使用该关键字可以检测某个实例是否是某个类的实例。
3.5 trait
php只能进行单继承,但它同时提供了另类方式来进行代码复用,解决单继承问题。 如下 ``` ```抽象技术
用abstract关键字修饰的方法与类称为抽象方法或抽象类。
声明抽象类与抽象方法
抽象技术为子类的声明提供了一种规范,限制了类的实例化(抽象类不能实例化)。
接口技术接口是一种特殊的抽象类,接口中只能声明抽象类与常量
声明接口使用interface,实现接口使用implements,修饰符只能是默认的public;
一个子类可以继承多个接口,同时继承一个父类
在php中多态地实现需要一个类通过多个子类地继承实现,如果一个类的方法在多个子类中重写并实现不同的功能,我们称之为多态。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26171.html
摘要:我们目前正处于一个新兴的区块链开发行业中。,一种在以太坊开发人员中流行的新的简单编程语言,因为它是用于开发以太坊智能合约的语言。它是全球至少万开发人员使用的世界上最流行的编程语言之一。以太坊,主要是针对工程师使用进行区块链以太坊开发的详解。 我们目前正处于一个新兴的区块链开发行业中。区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣。由于许多...
摘要:本文将会介绍自起,直至中增加的新特征。弃用的功能以下几个功能被弃用,若在配置文件中启用,则会在运行时发出警告。该类的完整限定名是其中第一个反斜杠表示全局命名空间。目的在于模仿的不对,目的是为了让发布应用程序更加方便。 截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
阅读 4275·2021-10-13 09:39
阅读 481·2021-09-06 15:02
阅读 3229·2019-08-30 15:53
阅读 1039·2019-08-30 13:04
阅读 2028·2019-08-30 11:27
阅读 2009·2019-08-26 13:51
阅读 2091·2019-08-26 11:33
阅读 2901·2019-08-26 10:36