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和MySql来与ODBC数据连接
Oct 09 PHP
PHP 金额数字转换成英文
May 06 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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中批量替换文件名的实现代码
2011/07/20 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JQuery autocomplete 使用手册
2010/04/01 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
python如何读写json数据
2018/03/21 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
学习十八大精神心得体会
2013/12/31 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
关于车尾的标语大全
2015/08/11 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
学习nginx基础知识
2021/09/04 Servers
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
如何基于python实现单目三维重建详解
2022/06/25 Python