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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
php array_search() 函数使用
Apr 13 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
php array_map()数组函数使用说明
Jul 12 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP 微信支付类 demo
Nov 30 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
PHP文件操作详解
Dec 30 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 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
phpmyadmin的#1251问题
2006/11/25 PHP
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php cookie 详解使用实例
2016/11/03 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
wxPython中文教程入门实例
2014/06/09 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
八大排序算法的Python实现
2021/01/28 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
python异步存储数据详解
2019/03/19 Python
python占位符输入方式实例
2019/05/27 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
采购内勤岗位职责
2013/12/10 职场文书
仓库班组长岗位职责
2013/12/12 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
学生会个人总结范文
2015/02/15 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
装修公司管理制度
2015/08/05 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL