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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
Jun 24 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
php组合排序简单实现方法
Oct 15 PHP
详解PHP归并排序的实现
Oct 18 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
Laravel框架分页实现方法分析
Jun 12 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中mysql连接方式PDO使用详解
2015/02/25 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python装饰器深入学习
2018/04/06 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
python中cPickle类使用方法详解
2018/08/27 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
利用Python优雅的登录校园网
2020/10/21 Python
一套VC试题
2015/01/23 面试题
配置管理计划的主要内容有哪些
2014/06/20 面试题
采购部岗位职责
2013/11/24 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Linux中sftp常用命令整理
2022/06/28 Servers