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 相关文章推荐
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
PHP四大安全策略
Mar 12 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
php类常量用法实例分析
Jul 09 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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 imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
中学生期中自我鉴定
2014/04/20 职场文书
劳资协议书范本
2014/04/23 职场文书
机电系毕业生求职信
2014/07/11 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python