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面向对象之留言本功能的实现


相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1936

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1276

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1178

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1400

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1229

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1439

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

vlookup函数使用大全
vlookup函数使用大全

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

28

2025.12.30

热门下载

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

精品课程

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

共137课时 | 8.1万人学习

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

共6课时 | 6.9万人学习

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

共13课时 | 0.8万人学习

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

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