PHP面向对象编程详解:类和对象_PHP教程
PHP面向对象编程详解:类和对象
PHP面向对象编程详解:类和对象
希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程。
相对PHP4,PHP5在面向对象方面改变了很多。我们将只介绍PHP5环境下的面向对象。而我们必须改变自己来跟随PHP5的发展。如果代码结果在你的环境下执行不一致,请确认你的环境为PHP5。
我们假设读者没有任何面向对象的知识,即使你是第一次听说OOP,也可以读懂这文章。但我希望你必须对PHP有一些了解。
在后面我们将使用一些例子,来逐渐分析PHP5的OO基础。
面向对象只解决了两个问题,代码的可扩展性 、代码的可维护性。
不得不说句,php越来越像Java了。
整理参考:http://www.lai18.com/content/425094.html
Everything is Object:万事万物皆对象。
面向对象的编程(OOP)思想力图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。面向对象语言与我们的生活是想通的,面向对象语言学习起来其实很简单。在应用中更符合我们的生活逻辑。类(Class)是用来描述一个对象(Object):
类描述了每个对象应包括的数据,类描述了每个对象的行为特征。
Class/Object:类(class)和对象(object)是面向对象方法的核心概念。
类是对一类事物描述,是抽象的、概念上的定义;
对象是实际存在的该类事物的每个个体,因而也称实例(instance)。在计算机中,可以理解为,在内存中创建了实实在在存在的一个内存区域存储着这个对象。
创建对象的过程称为创建对象,也称为实例化。
PHP5中的类和对象
我们先建立一个基础的类。PHP中使用关键字 class 来定义一个类。类的命名一般使用首字符大写,而后每个单词首字符大写连接的方式方便阅读。
<!--? class Person { } $p = new Person(); echo $p; ?-->
这样,我们就拥有了第一个PHP类。
我们继续来使用这个类,使用 new 这个关键字创建对象,用echo打印$p
我们定义了一个变量 $p ,使用 new 这个关键字创建了一个Person的对象。
打印变量$p,我们看到输出Object id #1 提示这是一个对象。
$p = new Person();也可以写成 $p = new Person;,但不建议使用后面的这种方式。
PHP5 中的属性
属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)在PHP5中,属性指在class 中声明的变量。在声明变量时,必须使用 public private protected 之一进行修饰,定义变量的访问权限。
Public(公开): 可以自由的在类的内部外部读取、修改。
Private(私有): 只能在这个当前类的内部读取、修改。
Protected(受保护):能够在这个类和类的子类中读取和修改。
属性的使用:通过引用变量的 -> 符号调用变量指向对象的属性。
在方法内部通过 $this-> 符号调用同一对象的属性。
<!--? class Person{ public $name = "Gonn"; //定义public属性 $name. public $age = 20; // 定义 public 属性 $age; } $p = new Person(); // 创建对象 echo $p."<br-->"; // 输出对象 echo "他的名字是 ".$p->name; // 输出对象$p的属性 $name; echo " "; echo '他的年龄是 '$p->age; //输出age属性. ?>
程序输出结果为:
他的名字是 Gonn 他的年龄是 24
Person类有两个属性,$name 和 $age , 在实例化后,使用$p->name 和 $p->age 打印出属性的内容。
当然,你可以在属性定义时不设置初始值,那样的话,就打印不出任何结果了。
改变对象的属性,注意 8行和9行代码,还有输出结果的变化。我们看到输出的属性值被改变了。
<!--? // 1-4.php class Person{ public $name = "NoName"; //定义public属性 $name. public $age = 20; // 定义 public 属性 $age; } $p = new Person(); // 创建对象 $p--->name = 'Tom'; //变更姓名为 Tom $p->age = 25 ; // 变更年龄为 25 岁. echo "他的名字是 ".$p->name; // 输出对象$p的属性 $name; echo " "; echo '他的年龄是 '.$p->age; //输出age属性. ?>
创建一个Person的对象,改变这个对象的属性。为它命名,查看它的名字。你就是机器里面这个Person对象的上帝,按照你定义的规则,这个实实在在内存中的Person对象被创建了,而且它有了可以改变的属性。
现在,我们就是计算机世界的上帝,准备好创造世界吧。
Private 修饰的属性,在当前对象以外不能访问。设置私有属性是为了进行数据的隐藏。
隐藏:指对象的一种保护机制,使得它的属性或方法不被外部的程序直接访问。
<!--? // 1-3.php class Person{ private $name = "Gonn"; //定义public属性 $name. public $age = 20; // 定义 public 属性 $age; } $p = new Person(); // 创建对象 echo "他的名字是 ".$p--->name; // 输出对象$p的属性 $name; ?>
运行此程序将会输出:
Fatal error: Cannot access private property Person::$name in E:\PHPProjects\test.php on line 9
私有属性不能被外部访,这样做的好处后面会介绍到。
延伸阅读
此文章所在专题列表如下:PHP面向对象编程详解:类和对象
PHP面向对象编程详解:类的属性
PHP面向对象编程详解:类的方法
PHP面向对象编程详解:对象的比较
PHP面向对象编程详解:构造函数
PHP面向对象编程详解:类的继承
PHP面向对象编程详解:访问控制
PHP面向对象编程详解:方法覆盖
PHP面向对象编程详解:this关键字
PHP面向对象编程详解:parent::关键字
PHP面向对象编程详解:再谈重载
PHP面向对象编程详解:获取用户数据
PHP面向对象编程详解:用户权限管理类
PHP面向对象编程详解:static变量与方法
PHP面向对象编程详解:单例模式
PHP面向对象编程详解:final类和方法
PHP面向对象编程详解:PHP中的常量
PHP面向对象编程详解:抽象类
PHP面向对象编程详解:抽象方法
PHP面向对象编程详解:抽象类继承抽象类
PHP面向对象编程详解:静态抽象方法
PHP面向对象编程详解:模板模式
PHP面向对象编程详解:接口与抽象方法
PHP面向对象编程详解:接口的实现
PHP面向对象编程详解:接口的继承
PHP面向对象编程详解:类型提示
PHP面向对象编程详解:PHP的多态
PHP面向对象编程详解:instanceof运算符
PHP面向对象编程详解:接口与组合模拟多继承
PHP面向对象编程详解:一个接口实例
PHP面向对象编程详解:简单工厂模式

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,已经成为Web应用程序之间数据交换的常用格式。PHP的json_encode()函数可以将数组或对象转换为JSON字符串。本文将介绍如何使用PHP的json_encode()函数,包括语法、参数、返回值以及具体的示例。语法json_encode()函数的语法如下:st

楔子我们知道对象被创建,主要有两种方式,一种是通过Python/CAPI,另一种是通过调用类型对象。对于内置类型的实例对象而言,这两种方式都是支持的,比如列表,我们即可以通过[]创建,也可以通过list(),前者是Python/CAPI,后者是调用类型对象。但对于自定义类的实例对象而言,我们只能通过调用类型对象的方式来创建。而一个对象如果可以被调用,那么这个对象就是callable,否则就不是callable。而决定一个对象是不是callable,就取决于其对应的类型对象中是否定义了某个方法。如

PHP中的Request对象是用于处理客户端发送到服务器的HTTP请求的对象。通过Request对象,我们可以获取客户端的请求信息,比如请求方法、请求头信息、请求参数等,从而实现对请求的处理和响应。在PHP中,可以使用$_REQUEST、$_GET、$_POST等全局变量来获取请求的信息,但是这些变量并不是对象,而是数组。为了更加灵活和方便地处理请求信息,可

将MySQL查询结果数组转换为对象的方法如下:创建一个空对象数组。循环结果数组并为每一行创建一个新的对象。使用foreach循环将每一行的键值对赋给新对象的相应属性。将新对象添加到对象数组中。关闭数据库连接。

使用Python的__contains__()函数定义对象的包含操作Python是一种简洁而强大的编程语言,提供了许多强大的功能来处理各种类型的数据。其中之一是通过定义__contains__()函数来实现对象的包含操作。本文将介绍如何使用__contains__()函数来定义对象的包含操作,并且给出一些示例代码。__contains__()函数是Pytho

标题:使用Python的__le__()函数定义两个对象的小于等于比较在Python中,我们可以通过使用特殊方法来定义对象之间的比较操作。其中之一就是__le__()函数,它用于定义小于等于比较。__le__()函数是Python中的一个魔法方法,并且是一种用于实现“小于等于”操作的特殊函数。当我们使用小于等于运算符(<=)比较两个对象时,Python

PHP中,数组是有序序列,以索引访问元素;对象是具有属性和方法的实体,通过new关键字创建。数组访问通过索引,对象访问通过属性/方法。数组值传递,对象引用传递。

在C++中,函数返回对象需要注意三点:对象的生命周期由调用者负责管理,以防止内存泄漏。避免悬垂指针,通过动态分配内存或返回对象本身来确保对象在函数返回后仍然有效。编译器可能会优化返回对象的副本生成,以提高性能,但如果对象是值语义传递的,则无需副本生成。
