PHP面向对象开发(一)

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

一、什么是面向对象

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。现在,面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。

面向对象的分析根据抽象关键的问题域来分解系统。面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。面向对象程序设计(OOP)可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。

二、类和对象

类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥有名字、轮胎、速度、重量等属性,可以有换挡、前进、后退等操作方法。

1、通常定义一个汽车类的方法为:

//定义一个类:使用class关键字,在大括号内声明变量和方法
class Car {
	public $name = "汽车"; //public指定作用范围。在类中定义成员变量,必须要指定作用范围。后续内容中有详细说明。
	function getName() {
		return $this->name; //使用"->"访问类的属性和方法(注意:name前没有使用$)。关于$this关键字的用法,下面有介绍
	}
	function stuThis() { //这个函数用于辅助说明this的用法
		return $name;
	}
}

2、对象通过new关键字进行实例化:

//创建一个对象
$car = new Car();
$car->name = "奥迪A8"; //设置对象的属性值
echo $car->getName(); //调用对象的方法
//也可以使用变量创建对象,如:
$className = "Car";
$car2 = new $className;

NOTE:类和对象的区别:类是抽象的概念,对象是具体的实例。类可以使程序具有可重用性。

NOTE:类和对象的命名规则:一般情况类名首字母大写,类和对象的其他命名规则基本和变量命名规则一致。

3、$this关键字

$this是指向当前对象的指针。类的方法体内想访问调用者的属性,必须用$this。如果不加,则理解为方法内部的一个局部变量。

如:echo $car2 -> stuThis();       //会报错,错误信息为:Notice: Undefined variable: name in D:\PHPnow-1.5.6\XXXX\xxx.php on line 18

三、访问控制

对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。 

1、类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。

2、类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。 

3、同一个类的对象即使不是同一个实例也可以互相访问对方的私有与受保护成员。这是由于在这些对象的内部具体实现的细节都是已知的。

四、构造函数和析构函数

1、构造函数

void  __construct  ([ mixed  $args  [, $...  ]] )
具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。 

Note: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct() 。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。 

2、析构函数

void  __destruct  ( void )
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 

和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct() 。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。 

Note: 析构函数在脚本关闭时调用,此时所有的 HTTP 头信息已经发出。脚本关闭时的工作目录有可能和在 SAPI(如 apache)中时不同。 
Note: 试图在析构函数(在脚本终止时被调用)中抛出一个异常会导致致命错误。 

五、Static关键字

1、声明类属性或方法为静态,就可以不实例化类而直接访问,而是直接使用类名::方法名的方式进行调用。

2、静态属性不可以由对象通过 -> 操作符来访问(但静态方法可以)。 

3、为了兼容 PHP 4,如果没有指定访问控制,属性和方法默认为公有。 
4、由于静态方法不需要通过对象即可调用,所以伪变量 $this  在静态方法中不可用。 
5、用静态方式调用一个非静态方法会导致一个 E_STRICT  级别的错误。 (这是官方手册中文翻译原话。我写代码验证时,有两种情况。一种是非静态方法中没有调用非静态变量时,不会报错;调用了时,会报错。所以建议不要这样做。)
6、就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。 
7、自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。

<?php
/*
 * Created on 2014-11-3
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 header("Content-Type:text/html;charset=utf-8");
 class Car{
	static $name = "奥迪A9";				//静态属性
	public $color = "黑色";
	static function getName(){			//静态方法
		//return $this->name;			//错误用法,$this不可以在静态方法中使用
		return self::$name;				//静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。
	}
	public function test(){
		return "我的车名:".self::$name.",颜色:".$this->color;					//正确
		//return $this->name;				//错误用法。在这里虽然不报错,但在类外使用实例化的对象调用此方法时会报错
	}
 }

//直接使用类名::属性名、类名::方法名访问静态属性和静态方法
echo "我的车名字是:".Car::$name."<br />";
Car::getName();

$car = new Car();
//使用对象可以访问静态方法
echo $car->getName() ."<br />";

echo $car->test();			//测试$this

//echo Car::$color;				//用静态方式访问非静态变量,报错!
//echo Car::test();				//错误用法。当在非静态方法test()中没有调用非静态变量时,不会报错。但当非静态方法test()中调用了非静态的变量时,程序会报错,报错行在类中test()方法体内调用非静态变量的地方

//$className = "Car";
//echo "我的车名字是:".$className::getName();				//自 PHP 5.3.0 起,可以用一个变量来动态调用类。而我现在的环境使用的是PHP5.2.14,所以这个暂时未验证。
?>


【PHP 面向对象】面向对象(OOP)编程知识点归纳总结(一) 面向对象OOP编程一、面向对象的概念对象的基本组成对象特点类的概念类的实例化类的定义二、OOP面向对象编程1. PHP class:定义类定义类访问权限成员属性成员方法2. PHP new:实例化对象实例化对象对象的访问$this当前对象构造函数3. PHP 类的自动加载机制spl_autoload_register() 函数4. PHP static:类的静态成员Static(静态)关键字5. PHP extends:类的继承数据访问总结6. PHP instanceof:判断对象是否属于某个类 一、面 阅读详情

相关推荐

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

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

weixin_63378697的博客 1002

PHP的面向对象

php面向对象详解!!!

weixin_51884452的博客 1745

嵌入式常见英文2500词总结

嵌入式常见英文总结

qq_28576837的博客 1万+

PHP进阶——面向对象:

PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶PHP进阶

lilcur的博客 709

Go语言集成Ollama本地大模型:gollama库实战指南

在当今的AI应用开发中,大型语言模型(LLM)的集成已成为关键技术。其核心原理是通过API调用,将自然语言处理能力嵌入到各类应用中。从技术价值看,本地化部署的LLM解决了数据隐私、网络延迟和持续成本三大痛点,尤其适合处理敏感数据或对实时性要求高的场景。在工程实践中,开发者常使用专门的客户端库来简化与模型服务的交互,例如通过封装REST API、提供类型安全接口和流式处理支持,从而提升开发效率和代码健壮性。具体到Go语言生态,结合Ollama这一流行的本地大模型运行工具,可以实现完全离线、低延迟的AI功能集成

weixin_28728443的博客 605

FM收音机调试-RDA5807M

收音机调试 IC型号:RDA5807M

mangofu的博客 6167

php面向对象

面向对象 引入:计算机编程在历史的发展长河中,经历了多次版本变革,变化的轨迹是伴随着硬件的发展和人们对于计算机的认知以及需求。 机器语言:即开发者(科学家)使用 0 和 1 组成命令,然后在特定计算机上执行 优点:执行效率高 缺点:开发难度大、移植性差、开发成本高 汇编语言:开发者使用简洁英文字母和符号组成,让计算机读取后根据符号进行加工执行 优点:指令简单明了、推广性高 缺点:移植性差、功能简单 高级计算机语言:开发者使用类似自然语言的符号组成,高级语言根据编程思想分为

weixin_44576725的博客 2256

github创建账号第一步始终出错

github创建账号总结:第一次注册GitHub,填好用户名邮箱密码后进入下一步就卡在哪里,上面还提示Unable to verify your captcha response等,进入网址的解决办法以及下载其他的浏览器也无法解决,用手机浏览器抱着试一试的心态竟然成功了,分享给大家。手机下载谷歌浏览器,进入GitHub正常注册,能向下继续,邮箱验证完以后再用电脑登陆就ok啦

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4376

php面向对象的开发方法,php面向对象方法

php面向对象之静态方法使用什么是静态方法?不是所有的变量和方法都要通过创建对象来调用。可以通过给变量和方法加上static关键字来直接调用。调用静态成员的语法格式为:关键字::静态成员关键字可以是:(1)self,在类内部调用静态成员时所使用。(2)静态成员所在的类名,在类外调用类内部的静态成员时所使用。注意:在静态方法中,只能调用静态变量,而不能调用普通变量;而普通方法则可以调用静态变量。st...

weixin_30852391的博客 169

matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决

matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 目录 matplotlib保存图片设置分辨率总是96dpi,好烦躁,教你一招轻松解决 #使用plt.savefig("cm.png",dpi = 300)为什么不管用 #plt.rcParams也不管用 #解决方案 在做论文的过程中,许多期刊或者会议对图片的分辨率有明确的要求,例如,dpi=300。 之前画曲线图都是采取保存方式为savefig(dpi=300),然后查看保存图片的属性信息,然而你看到的现象是

data+scenario+science+insight 8800

Centos7系统添加中文支持(附中文语言包)

这里以centos7.6为例,在安装系统是没有选择中文,之后如果需要添加中文支持。在命令行执行后,会提示启动图形模式失败,转为启动文本模式。文本模式其实和图形模式差不多,操作需要用键盘而不是鼠标。在弹窗后,通过上下键选择Chinese(P.R of China) - 中文(简体):然后,按Tab键选择Yes,点击回车。rebootlocale可以看到系统语言已经变成了zh_CN.utf-8:之后,服务器上的中文名称就可以正常显示正常了。

悦分享 683

PHP面向对象开发的学习(一)

传统开发方法存在的问题:软件重用性差,软件可维护性差,无很好的扩展性。面向对象的要素:抽象性,封装性,共享性,强调对象结构而不是程序结构。面向对象的三大特点:封装,继承,多态,缺一不可。缺少一个都不能成为是正宗的面向对象。In my opinion ,PHP的面向对象跟Java的面向对象差不多,只是在细节上有一些差别,主要是语法规则的差别。例如 ,Java对象引用方法或者变量的

Kevinzhangfei的专栏 734

太阳敏感器:卫星姿态控制的“指南针

在卫星姿态控制系统中,太阳敏感器(Sun Sensor) 是至关重要的光学姿态敏感器之一。它通过探测太阳光的方向,为卫星提供关键的姿态参考信息,确保卫星能够正确调整自身方位,维持稳定的对日定向,保障能源供应和任务执行。

ScilogyHunter的博客 1731

php面向对象项目,PHP的面向对象编程:开发大型PHP项目的方法(一)

PHP(PHP培训 php教程 )的面向对象编程:开发大型PHP项目的方法(一)作者:Luis Argerich 译者:limodou这篇文章介绍了在PHP中的面向对象编程(OOP,Object Oriented Programming)。我将向你演示如何通过使用一些OOP的概念和PHP的技巧来减少编码和提高质量。祝你好运!面向对象编程的概念:不同的作者之间说法可能不一样,但是一个OOP语言必须有...

weixin_36252577的博客 119

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

php面向对象实战项目,php的面向对象编程:开发大型php项目的方法(一)_php实例

limodou这篇文章介绍了在PHP中的面向对象编程(OOP,Object Oriented Programming)。我将向你演示如何通过使用一些OOP的概念和PHP的技巧来减少编码和提高质量。祝你好运!面向对象编程的概念:不同的作者之间说法可能不一样,但是一个OOP语言必须有以下几方面:抽象数据类型和信息封装继承多态在PHP中是通过类来完成封装的:———————————————————————...

weixin_36197581的博客 212

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

PHP面向对象开发的学习(一)

OOP;面向对象的三大特点(封装,继承,多态);

gzdbaer的专栏 531

php 面向对象开发 类的学习 一

面向对象的学习 一,如何创建一个类 class 类名 { 成员属性 成员方法 } classMyclass{public$name;public$type;functionMyfun(){return"这是我的方法";}} 二,实例化一个对象 new函数 $myclass=newMyclass();//只有实例化一个对...

weixin_33859665的博客 71

PHP的面向对象编程:开发大型PHP项目的方法(一)

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 223

我的php学习笔记(十四)php的面向对象开发(一)

一、面向对象的解释         面向对象,我的理解是面向对象编程是将一些类写好之后,然后需要用到的时候互相引用,要用的时候引用该类或接口,如果要增加功能可以重载或者使用继承。再者,面向对象不像面向过程那样每一步怎么实现都要写出来,只需要知道类有什么功能,然后使用就可以了。 OOP:面向对象编程 二、面向对象的要素 抽象性,封装性,共享性,强调的是对象的结果而不是程序的结果。

yipiankongbai的专栏 620

PHP学习(8)面向对象开发学习(一)

lzf0514的专栏 106

高洛峰细说php百度贴吧_高洛峰细说PHP视频教程推荐

PHP(“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。《高洛峰细说PHP视频教程》详细的向大家介绍了以HTML为基础的PHP的所有基础知识点。课程播放地址:http://www.php.cn/course/511.html该老师讲课风格:教师讲...

weixin_39918588的博客 243

php编程 第一节,第一节--面向对象编程

第一节--面向对象编程更新时间:2006年11月16日 00:00:00 作者:+---------------------------------------------------------------------+|=本文为Haohappy读<>|=中ClassesandObjects一章的笔记|=翻译为主+个人心得|=为避免可能发生的不必要的麻烦请勿转...

weixin_33132251的博客 142

PHP即将退出,PHP4即将退出历史舞台

http://www.phpeye.com/bbs/viewthread.php?tid=92 PHP官方团队在php.net上发布了一则公告: Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP ...

weixin_35521315的博客 155

探索 ThinkPHP3.2.3 完全开发手册与源码: PHP 开发者的必备工具

探索 ThinkPHP3.2.3 完全开发手册与源码: PHP 开发者的必备工具 去发现同类优质开源项目:https://gitcode.com/ 在现代网页开发中,选择一个合适的框架能够极大地提升开发效率和项目质量。今天,我们将为您介绍一个广受欢迎的PHP框架——ThinkPHP3.2.3 完全开发手册与源码。以下是这个项目的核心功能、技术分析、应用场景及特点。 项目核心功能/场景 为您提供全面...

gitblog_06768的博客 1079

PHP面向对象编程

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

代码炼金术 6788
上一篇: PHP留言板
下一篇: Dede小企业网站开发流程及常用标签(四)
从来_没有过
博客等级 码龄12年 10粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值