0

0

PHP中面相对象对象的知识点整理

php中文网

php中文网

发布时间:2016-09-11 11:19:39

|

1036人浏览过

|

来源于php中文网

原创

面向对象

万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性.
__________________________________________________________________

类的概念

是一种抽象的概念,是具有相同语义定义对象的集合(具有相同属性和方法的集体),使用具体的类是不可行的,只能实例化。拿汽车举例,汽车的设计图纸就是类,汽车是对象。设计中重点是类的创建
 
现实生活中类的概念
万物皆为对象如我们使用的具体电脑就是对象,那电脑就是一个类。你去幼儿园接孩子,你说接孩子,人家一定不给你(除非认识你和知道你的孩子是谁),你要说出你孩子的名子,你的孩子就是具体的对象,孩子就是一个类
 
类名书写规范
     类名首字母大写一个类定义在一个文件中,并以.class.php做为文件名结尾
 
__________________________________________________________________
  对象
对象句柄
用于区分不同对象。对象创建后,在内存中获取一块存储空间,储存空间的地址就是对象的标识或句柄
 
属性
在类中定义的变量,即为成员属性,用于描述对象静态特性的数据。如人的姓名,性别,首字母小写
 
方法
函数定义在类中即为成员方法,用于描述对象动态特性的操作行为,方法名不区分大小写,不可重名,首字母小写
对象的生命周期
创建后,生命周期开始,当程序结束后或程序员清除对象后即销毁,PHP会自动销毁对象
 

对象的生命周期

1 程序执行完成后,PHP运行回收机制,删除内存的对象
2 删除所有
对象的引用后,对象即为垃圾,回收机制自动删除垃圾
 

 对象产生的步骤

1 在内容中开辟出对象的空间
 
2 执行构造方法
 
3 将对象的引用地址返回

对象的内存分布:

1 对象引用被放到了“栈内存”里(栈存放固定内容)
 
2 对象是放在“堆内存”里(堆存放可变内容)
 
3 而静态成员则放到了“数据区”,在第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享
 
4 函数和方法放在代码区

 
 

面向对象的特性

抽象性
把一类对象的共有属性和方法抽象出来,形成类,这种思考方式为抽象
 
封装性:
把成员方法和成员属性封装到类中,隐藏属性和方法,隐藏方法实现的细节,通过public protected private final static  限定类成员的访问权限,数据被保护在内部,只有通过被授权的成员方法才可以操作。尽可能的对成员进行封装
 
继承extends:
可以使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类。extends 关键字 实现继承关系
 
多态:
子类继承父类,通过对父类方法重写实现多态
__________________________________________________________________________________________

访问修饰符(作用域描述符)

 
publlic 公有
在类的内部与外部或子类都可以访问,是最开放的权限
private 私有的
定义类的属性和方法,在类的内部可以访问,在类的外部或子类都不可以访问
protected 受保护的
定义类的属性和方法,在类的内部或子类可以访问,类的外部不可以访问
模块设计
强内聚(功能尽量在类的内部完成),弱耦合(开放尽量少的方法给外部调用)。例:公司销售接项目,具体工作交给公司内部程序员,设计人员,服务器管理人员协同完成
 
__________________________________________________________________________________________
 

static静态属性与静态方法

需要一个数据对象只服务于类,即类内部可用,对外不可用时。建对象是极其耗费资源的,因此当一个方法具有比较强的公用性的时候,没有必要为了调用这个方法而重新再生成该类的实例。定义的方法或变量在程序第一次加载时即驻留内存,程序结束释放。
静态方法不能被非静态方法重写,构造方法不允许声明为static的
static变量:
通过static声明的成员变量为静态变量或叫类变量,是该类的公共变量,在第一次使用时即生成,对于该类的所有对象只有一份,是属于类的,不是属于对象的。static变量是属于类而不属于对象,可以在任何地方通地类来访问,是类的全局变量,类创建时即存入内存。对多个对象来说,静态数据成员只存储一处,可以节省内存。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值。
static方法:
用static声明的方法为静态方法或叫类方法,执行该方法时不会将对象引用传给函数,所以我们不能访问非静态成员,只能访问静态方法或静态变量。只能使用关于类的方式如self   static  parent等。使用时不用生成对象即可执行
 
$this     self::    parent::
 
$this    
是当前对象的引用, 一般出现在方法里,用于获取类的成员属性,或执行类的成员方法
self ::
对本类的引用 ,用于获取当前类的表态成员属性或静态成员方法self::run()
parent ::
对父类的引用,调用父类的方法或属性。
_________________________________________________________________________________

构造方法&析构方法

构造方法__construct()
在创建对象时自动执行,没有返回值,用于执行类的一些初始化工作,如对象属性的初始化工作,PHP4中构造方法必须与类同名,php5中规定构造方法为__construct(),优点是不受类名的影响,如果不存在__construct  php搜索与类同名的方法自动执行。
可以在构造方法中传递参数,用于定义属性,在父类和子类都定义构造方法时,执行子类的构造方法
 
析构方法__destruct():
用于对象在内存中被销毁时自动执行的方法,不带任何参数
_________________________________________________________________________________

对象 final const

 
  1. //类里面的方法不能修改
  2. //类不能被继承
  3. final class souji {
  4. final public $pinpai; //报错
  5. final function congdian() { //无效
  6. echo $this->pinpai . "手机通过10v电压来充电";
  7. }
  8. public function kaijidonghua() {
  9. echo ">>>";
  10. }
  11. }
  12. class moto extends souji {
  13. public function __construct() {
  14. // $this->pinpai = "摩托罗拉";
  15. $this->congdian();
  16. }
  17. public function kaijidonghua() {
  18. echo "摩托罗拉商标";
  19. }
  20. }
  21. $li = new moto();
  22. $li->kaijidonghua();
  23. //定义常量
  24. define("WEBNAME", "文豆");
  25. function aa(){
  26. echo WEBNAME."专注PHPWEB开发";
  27. }
  28. aa();
  29. class caiwu{
  30. const suilv=0.05;
  31. function __construct(){
  32. echo WEBNAME;
  33. }
  34. function kaigonzi($xingming,$gongzi){
  35. $gongzi = $gongzi-$gongzi*self::suilv;
  36. return $xingming."的工资是:".$gongzi."元";
  37. }
  38. }
  39. /*员工类*/
  40. class yuangong{
  41. private $xingming;//姓名
  42. private $gongzisu;//工资数
  43. function __construct($xingming,$gongzisu){
  44. $this->xingming = $xingming;
  45. $this->gongzisu = $gongzisu;
  46. }
  47. function kaizi(){
  48. $caiwu = new caiwu();
  49. return $caiwu->kaigonzi($this->xingming, $this->gongzisu);
  50. }
  51. }
  52. $lisi = new yuangong("李四", "6000");
  53. echo $lisi->kaizi();
 
 
 
 
 
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

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

下载

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

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
550W粉丝大佬手把手从零学JavaScript
550W粉丝大佬手把手从零学JavaScript

共1课时 | 0.2万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

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

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