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 相关文章推荐
关于mysql 字段的那个点为是定界符
Jan 15 PHP
php discuz 主题表和回帖表的设计
Mar 13 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
header导出Excel应用示例
Jan 24 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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读取IMAP邮件
2006/10/09 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
PHP中的替代语法简介
2014/08/22 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python进程和线程用法知识点总结
2019/05/28 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
一些Unix笔试题和面试题
2013/01/22 面试题
竞选演讲稿范文
2013/12/28 职场文书
给客户的道歉信
2014/01/13 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
《将心比心》教学反思
2014/04/08 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
教师自荐信范文
2015/03/06 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android