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之Smarty入门
Jan 04 PHP
PHP新手入门学习方法
May 08 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php中filter_input函数用法分析
Nov 15 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
php传值和传引用的区别点总结
Nov 19 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实现ODBC数据分页显示一例
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
php实现删除空目录的方法
2015/03/16 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
利用python画一颗心的方法示例
2017/01/31 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
解决python删除文件的权限错误问题
2018/04/24 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
简单了解python变量的作用域
2019/07/30 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
浅谈Python __init__.py的作用
2020/10/28 Python
python 简单的调用有道翻译
2020/11/25 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
企业员工集体活动方案
2014/08/17 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
死亡赔偿协议书
2015/01/28 职场文书
普通员工辞职信范文
2015/05/12 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL