PHP创建对象的六种方式实例总结


Posted in PHP onJune 27, 2019

本文实例讲述了PHP创建对象的六种方式。分享给大家供大家参考,具体如下:

<?php
/**
 * PHP创建对象的六种方式
 */
class Person{
  private $name = 'bruce';
  public function getName(){
    return $this->name;
  }
  public static function getObjBySelf(){
    return new self();
  }
  //动态延迟绑定,能识别调用者
  public static function getObjcByStatic(){
    return new static();
  }
}
//Person子类 Teacher
class Teacher extends Person{
  public static function getObjByParent(){
    return new parent();
  }
}
//1、new 类名();创建对象
$obj1 = new Person();//等价于写法 $obj1 = new Person;
echo '类名:'.get_class($obj1).'<br>';
echo $obj1->getName().'<hr>';
//2、将类名字符串赋值给一个变量,通过变量创建
$clsName = 'Person';
$obj2 = new $clsName();
echo '类名:'.get_class($obj2).'<br>';
echo $obj2->getName().'<hr>';
//3、通过对象实例创建对象
$obj3 = new $obj2();
echo '类名:'.get_class($obj3).'<br>';
echo $obj3->getName().'<hr>';
//4、通过 new self()
//$obj4 = (new $obj3())->getObjBySelf();
$obj4 = Person::getObjBySelf();
echo '类名:'.get_class($obj4).'<br>';
echo $obj4->getName().'<hr>';
//5、通过 new parent()
$obj5= Teacher::getObjByParent();
echo '类名:'.get_class($obj5).'<br>';
echo $obj5->getName().'<hr>';
//6、通过 new static();
$obj6 = Person::getObjcByStatic();
echo '类名:'.get_class($obj6).'<br>';//类名:Person
echo $obj6->getName().'<hr>'; //bruce
//当用子类去调用时候,发现static自动识别当前调用者(静态延迟绑定),返回当前调用者对象
$obj7 = Teacher::getObjcByStatic();
echo '类名:'.get_class($obj7).'<br>';//类名:Teacher
echo $obj7->getName().'<hr>';//bruce
$obj8 = Person::getObjBySelf();
echo '类名:'.get_class($obj8).'<br>';//类名:Person
echo $obj8->getName().'<hr>';
//new self()在子类中调用依旧返回原来父类的绑定
$obj9 = Teacher::getObjBySelf();
echo '类名:'.get_class($obj9).'<br>';//类名:Person
echo $obj9->getName().'<hr>';

运行结果:

PHP创建对象的六种方式实例总结

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP开发过程中常用函数收藏
Dec 14 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
YII框架模块化处理操作示例
Apr 26 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 #PHP
不常用但很实用的PHP预定义变量分析
Jun 25 #PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 #PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 #PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 #PHP
Laravel向公共模板赋值方法总结
Jun 25 #PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 #PHP
You might like
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php使用session二维数组实例
2014/11/06 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
JS实现前端动态分页码代码实例
2020/06/02 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python装饰器知识点补充
2018/05/28 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
基于Python实现简单学生管理系统
2020/07/24 Python
Python面向对象实现方法总结
2020/08/12 Python
python开发入门——列表生成式
2020/09/03 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
证婚人搞笑证婚词
2014/01/10 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
司机岗位职责说明书
2014/07/29 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
单位病假条范文
2015/08/17 职场文书