php面向对象

PHP语言的面向对象编程 面向对象编程是一种通过“对象”来组织代码的编程范式。与传统的过程式编程不同,OOP注重将数据与操作数据的函数封装在一起,从而提高代码的可重用性、可维护性和可扩展性。类(Class):类是创建对象的蓝图或模板,它定义了对象的属性和行为。对象(Object):对象是类的实例,通过类来创建,具有类定义的属性和行为。封装(Encapsulation):通过封装,将对象的内部状态保护起来,外部只能通过公共方法访问或修改这些状态。继承(Inheritance) 阅读详情

面向对象

XXOO Xue Xi Object Oritened

OOP

面向对象编程

OOA

面向对象的分析

OOI

面向对象的封装实现

OOB

面向对象的设计

关系

OOA -> OOD -> OOI

魔术方法

__get() 魔术方法

触发时机:  当你访问一个私有成员属性的时候会触发该函数。
参数: 	必须设置一个形参。 访问的属性名
返回值:	可以返回一个值,也可以不返回。
注意:		为了安全考虑,在使用该方法时需要判断逻辑上是否允许返回值。

__set() 魔术方法

触发时机:  当设置一个私有成员属性的时候回触发该函数。
参数: 	必须设置两个参数。  设置的属性名和值
返回:		不必要设置。
注意:		为了安全考虑,在使用该方法时需要判断逻辑上是否允许返回值。	

__unset() 魔术方法

触发时机:  当对一个私有成员进行unset的情况下触发。
参数: 		必须设置一个形参。 unset的属性名
返回:		不必要设置。
注意:		为了安全考虑,在使用该方法时需要判断逻辑上是否允许返回值。	

__isset() 魔术方法

触发时机:  当对一个私有成员进行isset操作的情况下触发。
参数: 		必须设置一个形参。 isset的属性名
返回:		必须有一个。
注意:		为了安全考虑,在使用该方法时需要判断逻辑上是否允许返回值。	

__call() 魔术方法

触发时机:  访问一个不存在的方法的情况下触发。
参数: 	  必须有2个参数,方法名和实参列表数组
返回:		可以有可以没有。
注意:	一般不推荐以该方法声明方法,因为没有办法进行封装操作。

封装关键字

关键字			在类中   在子类中		在类外
public 			可以		可以		可以
protected		可以		可以		不可以
private			可以		不可以 	不可以
var				可以		可以		可以

注意:var 尽可以修饰成员属性不可以修饰成员方法,推荐使用public

继承特性

父类:被其他类继承的类称之为父类。(基类)
子类:继承其他类的类称之为子类。(派生类)

继承格式:
class 子类名 extends 父类名{

	//声明子类独有的成员属性和方法

	//重载父类的成员属性值和方法

}		

继承的特征:

1.如果子类继承了父类,则具备父类中所有的成员。
2.子类可以声明子类独有的成员属性和方法
3.子类中可以重新声明父类中的方法,用于重载父类方法的功能。
4.子类的封装级别必须大于等于父类的封装级别。否则出现等级错误!	

对象的串行化

对象串行化的作用就是讲对象变为可以存储传输的字符串格式。

串行化操作:

对象字符串 = serialize(对象变量)

反串行化操作:

对象变量 =  unserialize(对象字符串);

注意:进行对象反串行化操作时需要包含原有对象的类,否则有系统分配类创建。

__sleep() 魔术方法

触发时机:在对象进行串行化操作的时候触发。
参数:不需要
返回值:看情况决定,返回一个数组,数组中的成员决定将什么属性进行串行化。
注意:可以不写返回值,如果这样,看功能需求。

__wakeup() 魔术方法

触发时机:在对象进行反串行化操作的时候触发
参数:不需要
返回值:不需要。
注意:没有

final关键字

第一种用法(方法)

可以在声明方法的时候在前面添加的关键字,一旦添加了final关键字,则该方法不可以在子类中进行重载。

class 类名{

	//方法
	final public function 方法名(){
		//此方法添加了final关键字不可以重载操作
	}
}

注意:封装关键字和final关键字之间互不冲突!所以可以同时在一个方法上存在。

第二种用法(类)

可以在声明类的时候在class前添加关键字,一旦类添加了final关键字,则该类不可以被继承。

final class 类名{
	//此类不可以被继承
}

const关键字

在类中成员属性不仅有变量类型,也可以声明常量类型,声明常量需要使用const关键字

格式  class 类名{

		//定义常量
		const 常量名=值;

}

访问:		
	类外访问方式:

	类名::常量名  类外仅此一种访问方式。
	
	类中访问方式:

	类名::常量名  
	self::常量名  表示访问当前类的常量
	parent::常量名  表示当前类的父类的常量

注意:常量归类所有而不属于任何一个对象。

static 关键字

在类中使用用于声明某个成员(包括属性和方法)归类所有而非归对象所有。

格式:
class 类名{
	//成员属性
	//声明和静态成员属性

	static 封装关键字 $变量 = 值;

	//非静态成员属性

	封装关键字 $变量 = 值;
	封装关键字 $变量 = 值;
	

	//成员方法
	//声明和静态成员方法
	static 封装关键字 function 函数名(){
		//绝对不可以出现任何的动态内容  (就是$this)
	}

	//非静态成员方法
	封装关键字 function 函数名(){
		
	}

	封装关键字 function 函数名(){
		
	}

}


访问方式:

		类中
			self::静态成员属性名
			self::静态成员方法名()
			

		类外
			类名::静态成员属性名
			类名::静态成员方法名()
			对象名->静态成员方法名()

注意:一旦成员声明为静态,则不归任何对象所有,而归类所有。可以改变值,这是和常量的区别。声明静态方法时,方法内不可以有任何非静态内容。

instanceof运算符

检测某个对象实例是否有指定的类实例化而来。,

格式:
	结果变量 = 对象 instanceof 类名字符串

注意:该运算符的功能和函数中的is_a() 效果一致。
如果对象属于该类或该类是此对象的父类则返回 TRUE

__toString() 魔术方法

触发时机:在echo 一个对象的时候自动触发。
参数:不需要
返回值:必须是一个字符串类型。
注意:返回值处不会进行自动类型转换,必须返回字符串或者强制转换类型。

clone关键字

克隆操作就是通过一个对象来获取另外一个新的对象的过程。

格式: 新对象变量 =  clone 对象变量

__clone() 魔术方法

触发时机:在进行对象clone操作时触发。
参数:不需要
返回值:不需要。
注意:一般用于克隆对象时自动改变属性值。

注意:在对象中所有的对象赋值操作默认都是引用赋值方式。

设计模式

是一种编程经验的基类。  

单例设计模式、MVC设计模式、观察者模式.....

单例设计模式:

原理:先禁止实例化对象,然后在类中开一个后门(静态方法),在后门方法中实例化对象,同时在该方法中还要检测是否已经实例化过

class 类名 {
	//静态成员属性 
	static private $obj=null;	

	//私有化构造方法  禁止使用new运算符
	private function __construct(){
		
	}

	//静态方法中实例化对象
	static function createObj(){
		//判断是否已经实例化过对象
		if(self::$obj){ //已经实例化
			return self::$obj;//返回原有对象
		}else{//未实例化
			self::$obj = new 类名;
			retrurn self::$obj;
		}	
	}

}

类的自动加载操作__autoload()

__autoload() 这是一个可以实现了类自动加载的函数,而不是一个方法。

注意:当页面需要使用一个类,而当前页面中又不存在这个类的时候回自动触发__autoload() 方法

function __autoload(接收类名的变量){
	//一般使用include 语句进行类文件的包含
}

触发时机:当需要一个类,而页面又不存在这个类时触发。
参数:有一个  接收类名的变量
返回值:没有

MVC设计模式

M:Model ->模型
V:View ->视图
C:controller->控制器

注意:在使用MVC设计模式访问的过程当中 m表示模块(控制器类) a表示操作(方法)

抽象类

抽象类就是一个没有完全完成的类。属于一个半成品类。

抽象方法:没有具体方法体的方法就是抽象方法。

抽象类:包含抽象方法的类就是抽象类。

格式:
	abstract class 类名{
		//成员属性随便添加

		function 方法名(参数...){
			//完整的方法
		}


		//抽象方法
		abstract function 方法名(参数...);

		//抽象方法
		abstract function 方法名(参数...);
	}

注意:

  1. 声明抽象方法和抽象类使用abstract关键字。
  2. 具有抽象方法的类必须声明为抽象类,否则会报错。
  3. 抽象方法不能具有任何的方法体,但是可以具有参数。
  4. 抽象方法不可以直接使用,必须继承之后完善了所有抽象方法之后才可以使用。
  5. 抽象方法在继承之后如果抽象方法中包含参数,则实现时必须设置参数。

接口

抽象的不能再抽象的类就是接口。

接口的作用具有抽象类的作用,就是定义规则。

接口主要用于实现多继承操作。

定义接口:

interface 接口名{
	//接口中只能定义常量属性
	const 常量名 =值;

	//定义方法

	function 方法名();
	function 方法名();
	function 方法名();
	
}

注意:

  1. 定义接口需要使用interface 而不是class 。
  2. 接口中包含的所有方法都必须是抽象方法,存在非抽象方法会报错
  3. 定义接口中抽象方法时不需要使用abstract关键字,因为本来都是抽象。
  4. 定义接口中不能包含正常的成员属性,尽可以定义常量
  5. 接口不可以直接使用,必须有其他类继承之后完全实现所有抽象方法才可以使用。
  6. 接口可以继承多个,使用implements关键字继承,多个接口之间使用逗号分隔

多态

多态:就是多种状态,指的是一个对象能够用同一个方法可以实现不同的结果。

PHP基础之面向对象 面向对象是一个编程思想。编程思想有面向过程和面向对象面向过程:编程思路集中的是过程上面向对象:编程思路集中在参与的对象以去饭馆吃饭为例:​ 面向过程:点菜——做菜——上菜——吃饭——结账——收拾​ 面向对象:服务员,厨师,客人构造方法也叫构造函数,当实例化对象的时候自动执行。} 注意:前面是两个下划线例题 阅读详情

相关推荐

PHP||PHP面向对象编程相关题目

::“可以在没有声明任何实例的情况下访问类中的成员,在子类的重载方法中调用父类中被覆盖的方法,分三种情况下使用,使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。.当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在父类。,类中的变量有用户名、密码和记录用户数量的变量,定义类。的构造方法、获取和设置密码的方法和显示用户信息的方法。,修饰的成员属性可以被同一个类中的所有对象共享;,修饰的成员属性可以被不同类中的所有对象共享。.如果没有定义类的构造函数,则无法创建类的对象。

weixin_63378697的博客 1002

PHP面向对象编程

万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性好。具有抽象方法的类为抽象类,抽象方法即为没有内容的空方法,要求子类进行完善内容,抽象类不能实例化,只能继承,通过 extends 来实现,抽象类中也可以定义普通方法。接口(Interface)是一种定义了一组方法的抽象类型,它只定义了方法的签名(名称、参数和返回类型),而没有具体的实现。抽象类可以包含具体的方法实现,也可以包含抽象方法的声明。

代码炼金术 6788

PCIe Gen4 Switch芯片PM40028调试踩坑实录:从boot引脚设置到串口无输出的诡异问题

本文记录了PCIe Gen4 Switch芯片PM40028的实战调试过程,重点剖析了从boot引脚配置错误导致串口无输出,到使用逻辑分析仪定位并解决启动问题的完整排障思路。文章深入探讨了芯片启动流程、硬件信号测量方法,并总结了高速硬件调试的核心经验与系统性排查清单,为工程师解决类似PCIe Gen4设备调试难题提供实用指南。

i8j9k0l1的博客 252

PHP 面向对象

PHP 定义类通常语法格式如下:phpvar $var1;[..][..]?解析如下:类使用class关键字后加上类名定义。类名后的一对大括号({})内可以定义变量和方法。类的变量使用var来声明, 变量也可以初始化值。函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。

xiaoniu0168的博客 1064

Zynq裸机调试RTL8211FS网卡踩坑记:从ping不通到完美兼容的完整代码修改

本文详细记录了在Zynq平台上使用Xilinx SDK(XSDK)调试RTL8211FS网卡的完整过程,从最初的ping不通问题到最终实现完美兼容的解决方案。通过分析PHY芯片的寄存器配置差异,提供了关键代码修改和调试技巧,帮助开发者快速解决类似问题。

weixin_42550597的博客 422

python等级考试——一级知识点汇总(不包含turtle画图)

本篇文章是针对中国电子学会青少年编程等级考试的,适合初学者以及青少年编程学习者

weixin_65350557的博客 9030

PHP面向对象

面向对象的程序设计思路是现代程序设计由面向过程演变面向对象的必然趋势,所以面向对象的而设计思路必然有它不同的时代意义,必然有着不同面向过程的不同历史使命,而php 5以后成功添加面向对象的设计思路其实是必然的过程。面向对象的设计主要思路就是将程序和数据封装在一个叫对象的基本单位之中来提高重用性,灵活性和可扩展性。他同面向过程和函数式编程的设计思路一样是编程语言的一种范式,是一种规范编程程序的设计方...

lulailei的博客 487

KEPServerEX 6 之驱动协议(UDD)实战 HTTP协议对接OpenWeatherMap天气 API全流程指南

本文分享了基于 KEPServerEX 6 的通用设备驱动(UDD)对接OpenWeatherMap天气API的实战方案。该方案针对工业物联网场景进行了深度优化,具有动态城市切换、运行时热配置、老旧JS引擎兼容等核心特性。文章详细介绍了从环境准备、脚本部署到Tag配置的全流程,重点解析了Legacy JS语法适配、Float类型安全处理等关键实现细节,并提供了完整的避坑指南和故障排查方法。该方案经过生产环境验证,可稳定实现气象数据采集与动态切换功能,适用于SCADA/MES系统集成场景。

-雲飛兄-博客 716

PHP之面向对象PHP之面向对象(面向对象是什么)

PHP之面向对象(面向对象是什么) 一、总结 一句话总结: 面向对象就是类:类都要 属性 和 方法 比如人:属性比如身高体重,方法比如吃饭喝水 面向对象中,方法即是函数;属性即是变量,只是面相对象中一般说方法和属性 1、面向对象自己涉及到的实例? 比如怪物,有普通怪物,精英怪物,boss怪物,不同怪物的血量,攻击防御等都是不同的,先设置怪物基类,里面有基...

weixin_30359021的博客 110

CloudCompare 二次开发:插件中的 PCL 环境配置与编程

在进行 CloudCompare 的二次开发过程中,我们常常需要使用点云库(Point Cloud Library,简称 PCL)来处理和分析点云数据。在 CloudCompare 的界面中,选中一个点云对象,然后点击菜单栏中的 “插件” -> “MyPluginAction”。插件将对选中的点云对象进行体素滤波处理,并更新显示结果。下面我们将展示一个简单的插件编程示例,该示例使用 PCL 对输入的点云数据进行体素滤波处理。方法进行体素滤波处理,并将结果点云赋值给选中的点云对象。文件并点击 “打开”。

2301_79331387的博客 283

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

全志V821芯片适配IMX219 MIPI摄像头(2lane)教程,基于FoxPi开发板V1.2 SDK。文章详细介绍了IMX219的技术参数(800万像素、1/4英寸CMOS、支持1080P@30fps输出)及模组接口原理图。重点展示了设备树配置方法,包括PIO引脚定义(TWI0使用PA3/PA4,复位引脚PA2)、TWI0节点设置(100kHz时钟)以及VIND0节点中sensor0的完整配置(I2C地址0x20、MCLK0、RAW格式输出等)。配置过程强调需注意IMX219的器件地址转换(0x10→0

第四维度的博客 2254

php面向对象详解,php面向对象详解

前言自从php进入5.0版本以来,PHP开始全面地支持面向对象编程。嗯,谁说php很low。我们专注web开发好不好;谁说php代码烂,自己水平不行写的代码当然烂了;谁说php框架不优雅的,你用过laravel吗。好了,进入正题,面向对象的三大特性分别是封装性,继承性以及多态性,使用面向对象开发,让我们的程序可维护以及扩展性大大提高。基本知识类:具有相同属性或方法的一类集合体。比如雪佛兰汽车是一个...

weixin_29075633的博客 274

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Rockyoung 1万+

php中面向对象的理解

来源 今天来和大家介绍一下PHP的面向对象。说到面向对象,我不得不提一下面向过程,因为本人在初学时,常常分不清楚面向对象和面向过程, 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持。如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发构架都是非常有意义的。下面我们就通过实例来说明使用PHP的OOP进行编程的实际意义和...

乐逍遥 954

Allegro因为精度问题导致走线连接不上的解决办法

在用Allegro做PCB设计的时候,尤其是从其它单板上导数据过来的时候,有时会因为精度不一致导致连接不上,如下图。一般来说,可以逐个重新连接一下,但是如果连接点位比较多的话,需要花费较多时间。下面介绍如何使用Allegro自带的功能解决这个问题,具体操作如下。和Convert Figure Stackups to vias。因为精度问题导致走线连接不上的解决办法。线和过孔因为精度有微小的连接偏差。

weixin_54787054的博客 2613

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

php发属史,PHP面向对象的历史

PHP面向对象的历史PHP最开始的perl脚本,到C语言版的PHP/FI,再到PHP/FI 2.0、PHP3.0,直到PHP4,引入Zend Engine使PHP更加的强大,并在PHP5引入新的Zend Engine2,重写PHP的面向对象模型,使PHP不仅可以快速开发,同时也可以实现更加复杂的架构,甚至满足企业应用。PHP最开始并没有面向对象,直到PHP4才有一些面向对象的影子,到PHP5才真正...

weixin_36036271的博客 235

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

php 中面向對象,PHP中面向对象

本篇文章主要介绍php中的面向对象,感兴趣的小伙伴了解下,希望对大家有所帮助。1.面向对象的基本概念面向对象包括3部分:面向对象分析(Object Oriented Analysis,OOA),面向对象设计(Object Oriented Design,OOD)以及面向对象编程(Object Oriented Program),面向对象两个重点概念是类和对象。类:类是变量与作用于这些变量的方法的集...

weixin_32589877的博客 133

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PHP的面向对象

php面向对象详解!!!

weixin_51884452的博客 1745

PHP面向对象之封装

市面上,很多讲解PHP的书对面向对象的内容讲的很简单。而官方文档也不足之处,例如有些语法细节没有说清楚。还有,官方文档的内容感觉比较散,不能将所有面向对象的内容串联起来。所以,现做个学习笔记,将自己学习的PHP面向对象输出出来。 首先,面向对象的三个特点:封装、继承、多态。我将从这三个方面把PHP面向对象的内容都串联起来。接下来,将从封装的角度讲解PHP面向对象。 (一)所谓封装,最直观的理解

码出幸福人生 2570
上一篇: php7自动加载spl_autoload_register
下一篇: php使用mysqli连接数据库增删改查
穿凉鞋的大力哥
博客等级 码龄9年 66粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值