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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
php 魔术方法详解
Nov 11 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php生出随机字符串
Jul 06 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
Pycharm调试程序技巧小结
2020/08/08 Python
设计模式的基本要素是什么
2014/04/21 面试题
《两只鸟蛋》教学反思
2014/02/10 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
体育节口号
2014/06/19 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
民政局未婚证明
2015/06/15 职场文书
城南旧事读书笔记
2015/06/29 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
Python中的socket网络模块介绍
2022/07/23 Python