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 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
PHP生成随机数的方法总结
Mar 01 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 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调用C代码的实现方法
2014/03/11 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
php 的反射详解及示例代码
2016/08/25 PHP
php 常用的系统函数
2017/02/07 PHP
jquery 指南/入门基础
2007/11/30 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
Python读大数据txt
2016/03/28 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python使用Plotly绘图工具绘制散点图、线形图
2019/04/02 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python初学者常见错误详解
2019/07/02 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python的移位操作实现详解
2019/08/21 Python
python连接mongodb集群方法详解
2020/02/13 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
工作中个人的自我评价
2013/12/31 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书