0

0

PHP面向对象之旅:类和对象_PHP教程

php中文网

php中文网

发布时间:2016-07-14 10:08:44

|

871人浏览过

|

来源于php中文网

原创

从OOP的视角看,不应区分语言。无论是C++、无论是Java、无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃。便没有对于Java、.net、PHP 之间谁强谁弱的争执了。

希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程。
相对PHP4,PHP5在面向对象方面改变了很多。我们将只介绍PHP5环境下的面向对象。而我们必须改变自己来跟随PHP5的发展。如果代码结果在你的环境下执行不一致,请确认你的环境为PHP5。
我们假设读者没有任何面向对象的知识,即使你是第一次听说OOP,也可以读懂这文章。但我希望你必须对PHP有一些了解。
在后面我们将使用一些例子,来逐渐分析PHP5的OO基础。
面向对象只解决了两个问题,代码的可扩展性 、代码的可维护性。
不得不说句,php越来越像Java了。
Everything is Object:万事万物皆对象。
面向对象的编程(OOP)思想力图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。面向对象语言与我们的生活是想通的,面向对象语言学习起来其实很简单。在应用中更符合我们的生活逻辑。
类(Class)是用来描述一个对象(Object):
类描述了每个对象应包括的数据,类描述了每个对象的行为特征。
Class/Object:类(class)和对象(object)是面向对象方法的核心概念。
类是对一类事物描述,是抽象的、概念上的定义;
对象是实际存在的该类事物的每个个体,因而也称实例(instance)。在计算机中,可以理解为,在内存中创建了实实在在存在的一个内存区域存储着这个对象。
创建对象的过程称为创建对象,也称为实例化。
PHP5中的类和对象
我们先建立一个基础的类。
PHP中使用关键字 class 来定义一个类。类的命名一般使用首字符大写,而后每个单词首字符大写连接的方式方便阅读。
view sourceprint?
1  
2 class Person  
3 { 
4    
5 } 
6 $p = new Person(); 
7 echo $p; 
8 ?> 
这样,我们就拥有了第一个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-> 符号调用同一对象的属性。
view sourceprint?
01  
02 class Person{ 
03    public $name = "Gonn"; //定义public属性 $name. 
04    public $age = 20; // 定义 public 属性 $age; 
05 } 
06 $p = new Person(); // 创建对象 
07 echo $p."
";    // 输出对象 
08 echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name; 
09 echo "
"; 
10 echo '他的年龄是 '$p->age; //输出age属性. 
11 ?> 
程序输出结果为:
view sourceprint?
1 他的名字是 Gonn 
2 他的年龄是 24 
Person类有两个属性,$name 和 $age , 在实例化后,使用$p->name 和 $p->age 打印出属性的内容。
当然,你可以在属性定义时不设置初始值,那样的话,就打印不出任何结果了。
改变对象的属性,注意 8行和9行代码,还有输出结果的变化。我们看到输出的属性值被改变了。
view sourceprint?
01  
02 // 1-4.php 
03 class Person{ 
04    public $name = "NoName"; //定义public属性 $name. 
05    public $age = 20; // 定义 public 属性 $age; 
06 } 
07 $p = new Person(); // 创建对象 
08 $p->name = 'Tom'; //变更姓名为 Tom 
09 $p->age = 25 ; // 变更年龄为 25 岁. 
10 echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name; 
11 echo "
"; 
12 echo '他的年龄是 '.$p->age; //输出age属性. 
13 ?> 
创建一个Person的对象,改变这个对象的属性。为它命名,查看它的名字。你就是机器里面这个Person对象的上帝,按照你定义的规则,这个实实在在内存中的Person对象被创建了,而且它有了可以改变的属性。
现在,我们就是计算机世界的上帝,准备好创造世界吧。
Private 修饰的属性,在当前对象以外不能访问。设置私有属性是为了进行数据的隐藏。
隐藏:指对象的一种保护机制,使得它的属性或方法不被外部的程序直接访问。
view sourceprint?
1  
2 // 1-3.php 
3 class Person{ 
4    private $name = "Gonn"; //定义public属性 $name. 
5    public $age = 20; // 定义 public 属性 $age; 
6 } 
7 $p = new Person(); // 创建对象 
8 echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name; 
9 ?> 
运行此程序将会输出:
view sourceprint?
1 Fatal error: Cannot access private property Person::$name in E:\PHPProjects\test.php on line 9
私有属性不能被外部访,这样做的好处后面会介绍到。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477751.htmlTechArticle从OOP的视角看,不应区分语言。无论是C++、无论是Java、无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号