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 身份证号验证函数
May 07 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
php获得刚插入数据的id 的几种方法总结
May 31 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
laravel实现上传图片并在页面显示的例子
Oct 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编码转换
2012/11/05 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php防止sql注入代码实例
2013/12/18 PHP
PHP安全下载文件的方法
2016/04/07 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
Numpy数组的广播机制的实现
2020/11/03 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
举例说明类变量和实例变量的区别
2016/06/30 面试题
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
政府个人对照检查材料
2014/08/28 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL