介绍接口之前,我们要知道,为什么要使用接口,这里向大家介绍一下。那为什么要使用接口呢?计算机语言中,只有少数的面向对象支持多重继承,我们所学习的PHP语言和大多数语言一样,并不支持多重继承。说白了就是一个父类可以有多个子类,但是子类只能有一个父类。什么又是多重继承呢?多重继承就是一个子类,继承了两个或多个父类,就是多重继承,在PHP中是不被允许的。如果要在PHP中实现多重继承功能,那么,我们就要用到接口。接...
在成员方法中,调用成员方法的方法是对象名加方法名,格式就是“对象名->方法名”。但是在定义类的时候,我们往往不知道对象名是什么,所以就没法用对象名,这时,我们就要用到伪变量$this。什么是$this?$this的意思就是本身,在$this中有个指针,谁调用它,他就指向谁,它只能再类内部使用。$this用法实例:我们来举个例子,让大家可以更加清楚的看到这个$this的含义指向。<?php header("content-type:text/html;charset=utf-8")...
什么是操作符“::”?操作符“::”相比伪变量$this只能在类的内部使用来说更为强大。操作符“::”可以在没有任何声明任何实例的情况下访问类中的成员方法活成员变量。操作符“::”语法:使用"::"操作符的通用语法为:关键字::变量名/常量名/方法名注意事项:这里的关键字不再是public、private、protected或者static等,而是以下三种情况:(1)parent :可以调用父类中的成员变量、成员方法和常量;(2)self:可以调用当前类中的静...
什么是面向对象?面向对象编程,也就是我们常说的OOP,其实是面向对象的一部分。面向对象一共有3个部分:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。我们现在将要学习的就是面向对象的编程,而面向对象编程中两个首要了解的也是很重要的概念就是类和对象。类与对象万物皆对象,世间的万物我们都可以看成是对象,因为他们都有各自的属性。比如:人有身高,体重,年龄,性别等等这些属性,也可以唱歌,跳舞,跑...
成员方法之前我们说了php类的定义与实例化方法,举了个例子,创建了一个人的类。但是人不单单有属性,还有行为方式,比如人可以跑步,可以跳舞,可以唱歌,可以吃饭等等。那么,我们改如何去实现这些行为呢?接下来就要用到我们的成员方法去实现了。还是上节课的例子,定义一个人的类,创建一个跑的成员方法class Preson{public $name;public $age;public $gender;public function Run(){ //声明成员方法echo "人在塔在"...
什么是构造函数呢?构造函数又有什么作用呢?构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。可能上面的描述大家还是不能很清楚的了解,我们就举例子向大家讲解下。构造函数的用法实例我们先创建一个类,并且初始化这个类。class Pre...
上篇文章讲解了php面向对象之构造函数,这节课说说与之相对的析构函数。析构函数的作用和构造函数的作用正好相反,是对象被销毁时被调用,作用是释放内存。定义析构函数的格式为:__destruct(),和构造函数一样的是,前面也是两个下划线"_"。析构函数的作用与用法我们用个例子更加深刻了解析构函数的用法。class Preson{ public $name; //定义变量 public $age; public $sex; public $height; function __const...
对象初始化要创建一个新的对象 object,使用 new 语句实例化一个类:<?php class foo {function do_foo(){echo "Doing foo.";} }$bar = new foo; $bar->do_foo(); ?>转换为对象如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变...
这篇文章主要介绍了php面向对象之反射功能与用法,结合实例形式简单分析了php5面向对象反射的概念及具体用法,需要的朋友可以参考下本文实例讲述了php面向对象之反射功能与用法。分享给大家供大家参考,具体如下:个人对反射定义的理解:首先得说说什么叫反射。对于一个新手来说,反射这个概念常常给人一种似懂非懂的 感觉,不知道该如何下手操作。反射是指:指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参...
内置标准类 PHP中,有很多“现成的类”,其中有一个被称为“内置标准类”。这个类“内部”可以认为什么也没有。class stdclass{ }<?php$obj1 = new stdclass(); var_dump($obj1);class A{}$obj2 = new A(); var_dump($obj2);?> 运行结果:object(stdClass)[1]object(A)[2] 可以看到和普通类没什么区别。 内置标准类的作用是,用于存储一些临时的简单数据,如:$obj1->pp1 = 1;$obj2->port = 3306; 也可以在类型转换...
什么是类型约束 就是要求某个变量只能使用(接受,存储)某种指定的数据类型;php属于”弱类型语言“,通常不支持类型约束;相应的,强类型语言,类型约束却是其“基本特征”。php中,只支持局部的部分类型约束 php中,只支持在函数(或方法)的形参上,设定类型的约束目标,形式如下:function 方法名( [要求使用的类型] $p1, [要求使用的类型] $p2, ......){//....}说明:定义一个函数(方法)时,一个形参,可以使用类型约...
tostring()魔术方法 将一个对象当做一个字符串来使用时,会自动调用该方法,并且在该方法中,可以返回一定的字符串,以表明该对象转换为字符串之后的结果。该魔术方法比较常用。 注意:如果没有定义该方法,则对象无法当做字符串来使用!类里面未定义tostring()方法的例子:<?php ini_set(display_errors, 1); class A{public $name; public $age; public $sex; function construct($name, $age, $sex){$this->name...
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化)serialization, 就像我们现在想把一辆汽车通过轮船运到美国去,因为汽车的体积比较大,我们可以把汽车拆开成小的部件,然后我们把这些部件通过轮般运到美国去,到了美国再把这些部件组装回汽车。 通俗来说,序列化就是将一个变量所代表的“内存”数据,转换为“字符串”...
1.对象克隆 clone PHP4面向对象功能一个很大的缺点,是将对象视为另一种数据类型,这使得很多常见的OOP方法无法使用,如设计模式。这些方法依赖于将对象作为引用传递给其他类方法,而不是作为值传递,而按值传递却是PHP的默认做法。幸好,PHP5解决了这个问题,现在所有对象在默认情况下都被视为引用。但是,由于所有对象都被视为引用而不是值,所以现在复制对象更为困难。如果尝试复制一个引用的对象,这只会指向原对象的地址位...
在设计面向对象的程序开发时,通常为每个类的定义都单独建立一个PHP源文件。当你尝试使用一个未定义的类时,PHP会报一个致命错误。可以用include或require包含一个类所在的源文件,毕竟你知道要用到那个类。如果一个页面需要使用多个类,就不得不在脚本页面开头编写一个长长的包含文件的列表,将本页面需要的类全部包含进来。这样处理不仅繁琐,而且容易出错。 PHP提供了类的自动加载功能,这可以节省编程的时间。当你尝试使用...