0

0

浅谈PHP面向对象编程

不言

不言

发布时间:2018-04-09 15:31:42

|

11501人浏览过

|

来源于php中文网

原创

本篇文章给大家分享的内容是关于浅谈php面向对象编程 ,有着一定的参考价值,有需要的朋友可以参考一下

一、PHP面向对象编程基础实践

name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }
    public function say()
    {
        echo '大家好,我的名字叫'.$this->name.',今年'.$this->age.'岁,我的性别是'.$this->sex;
    }
    public function __destruct()
    {
        $this->name = null;
        $this->sex = null;
        $this->age = null;
    }
}
//实例化“人”类
$male = new Human("张三","男","20");
//调用“人”类说话的方法
$male->say();

//输出结果:大家好,我的名字叫张三,今年20岁,我的性别是男
?>

二、PHP面向对象高级编程实践

知识点:类的继承、方法重写、访问控制、static关键字、final关键字、数据访问、接口、多态、抽象类

2.1、类的继承:extends 关键字
例如:一员运行员、一位主持人,他们有人类共同的行为方法,但他们都有自己不同的特长专业。因此在编程时需要给他们创建一个父类并继承;

立即学习PHP免费学习笔记(深入)”;

name."\n";
    }
    public function eat()
    {
        echo "父类吃饭的方法\n";
    }
}
/*
*    创建一个“运动员”类,继承“人”类
*    extends : 关键字,继承某个类
*/
class Sport extends Human
{
    public $type;    
    public function __construct($name,$type)
    {
        $this->name = $name;    //给父类 $name 属性赋值
        $this->type = $type;    
    }
    public function run()
    {
        $this->say();   //调用父类“说话”的方法
        echo "我在正跑步,我是一员".$this->type."运动员.....\n";
    }
}
/*
*    创建一个“主持人”类,继承“人”类
*    extends : 关键字,继承某个类
*/
class Host extends Human
{
    public $television; 
    public function __construct($name,$television)
    {
        $this->name = $name;    
        $this->television= $television;   
    }
    public function perform()
    {
        $this->eat();   //调用父类“吃饭”的方法
        echo "我在正表演一个节目,我是".$this->television."电视台的一名主持人.....\n";
    }
}

//实例化“运动员”类
$nba = new Sport("乔丹","篮球");
$nba->run();

//实例化“主持人”类
$tv = new Host("张三","北京卫视");
$tv->perform();

//输出结果:
//父类说话的方法,姓名:乔丹 我在正跑步,我是一员篮球运动员..... 
//父类吃饭的方法 我在正表演一个节目,我是北京卫视电视台的一名主持人.....
?>

2.2、方法重写:子类重写父类的方法

say();
//输出结果:子类说话的方法
?>

2.3、访问控制:public 、 protected 、private 关键字
public:定义公共的成员属性或方法,任何地方都可使用
protected : 定义受保护的成员属性或方法,只允许类本身或子类使用
private : 定义私有的成员属性或方法,只允许类的本身使用

name = "张三";
echo $worker->name;

?>

2.4、static(静态)关键字
1)、静态属性用于保存类的公有数据;
2)、静态方法里面只能访问静态属性或方法,不能使用 $this 伪变量;
3)、静态成员不需要通过 new 关键字来实例化对象就可访问使用;

2.5、final关键字:不允许成员方法被重写,不允许被继承
例:1、对于父类“吃饭”这个方法,不希望子类重写它;2、对于“运动员”这个类,不希望它再创建子类;

eat();

//实例化 Student 类 ,给 name 属性负值
$obj = new Student();
$obj->name = "张三";

//输出结果:Fatal error: Cannot override final method Human::eat() in ******.php on line 15
//Fatal error: Class Student may not inherit from final class (Sport) in ****.php on line 20
?>

2.6、数据访问:$this 、 self 、parent 关键字
$this : 伪变量,代表类的本身,可访问本类及父类中的成员属性与方法。
self : 访问类中的静态成员属性或方法
parent :访问父类的成员属性或方法

citySHOP多用户商城系统
citySHOP多用户商城系统

citySHOP是一款集CMS、网店、商品、分类信息、论坛等为一体的城市多用户商城系统,已完美整合目前流行的Discuz! 6.0论坛,采用最新的5.0版PHP+MYSQL技术。面向对象的数据库连接机制,缓存及80%静态化处理,使它能最大程度减轻服务器负担,为您节约建设成本。多级店铺区分及联盟商户地图标注,实体店与虚拟完美结合。个性化的店铺系统,会员后台一体化管理。后台登陆初始网站密匙:LOVES

下载
get();
//输出结果:张三
?>

2.7、接口:把不同类的共同行为方法进行定义,但不具体实现,由子类来实现具体的方法;
例如:人会吃饭,动物也会吃饭,甚至有些植物也会吃饭,但他们吃饭的方式不一样,因此这时需要定义一个接口类,具体的方式由子类来实现;
定义接口关键字:interface
实现接口方法关键字:implements

eat('rice');

//实例化一个“动物”类
$monkey = new Animal();
$monkey->eat('banana');

//输出结果:I'm eating rice
// It's eating banana

?>

2.8、多态:比如接口A有两个实现B和C,B和C对A接口里面定义的方法实现可以是不同的,这种现象称之为多态;
上述实例中,ICanEat接口定义了一个eat()方法,人类吃米饭,猴子吃香蕉。他们都实现了一个“吃”的方法,但他们吃东西有不同的行为,称之为多态;

2.9、抽象类:介入接口与类的定义之间,允许类里面一部分方法不实现,实现一部分有相同功能且不会更改的方法。然而接口类里面不允许有任何实现的方法。
例如:人和动物都具有吃饭与呼吸的方法,除吃饭不同以外,呼吸方法是相同的,此时需要定义一个抽象类来实现。
定义抽象类关键字:abstract

breath();
    }
}
//实例化“人”类
$people = new Human();
$people->eat('rice');
//输出结果:I'm eating rice Breath use the air...
?>

三、PHP面向对象编程特殊实践
PHP语言特定的一些魔术方法:

runTest();        //当调用对象中不存在的方法时,执行__call()方法
$obj::runTest();        //当调用对象中不存在的静态方法时,执行__callStatic()方法
$obj->name;             //当调用对象中不存在的成员属性时,执行__get()方法
$obj->name = "张三";    //当给对象中不存在的成员属性赋值时,执行__set()方法
isset($obj->name) ? 1 : 0;     //判断对象中不存在的成员属性时,执行__isset()方法
unset($obj->name);      //释放对象中的不存在的属性值时,执行__unset()方法
$obj2 = clone $obj;     //当对象被克隆时,执行__clone()方法
                        //对象执行完毕,执行__destruct()方法
?>

 相关推荐:

PHP面向对象笔记 —— 123 图解静态属性与静态方法

PHP面向对象三大特点学习

实例详解PHP面向对象之留言本功能的实现


热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

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

52

2025.11.27

java多态详细介绍
java多态详细介绍

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

15

2025.11.27

java多态详细介绍
java多态详细介绍

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

15

2025.11.27

java多态详细介绍
java多态详细介绍

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

15

2025.11.27

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1180

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

235

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2160

2025.12.29

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

30

2026.01.31

热门下载

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

精品课程

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

共137课时 | 10.6万人学习

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号