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 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
phpnow php探针环境检测代码
Nov 04 PHP
CentOS安装php v8js教程
Feb 26 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
调试php程序的简单步骤
Oct 04 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
php缓存技术详细总结
2013/08/07 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
Vue header组件开发详解
2018/01/26 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python实现的个人所得税计算器示例
2018/06/01 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python 利用toapi库自动生成api
2020/10/19 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
JAVA软件工程师测试题
2014/07/25 面试题
促销活动策划方案
2014/01/12 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
行政经理岗位职责
2015/04/15 职场文书
运动会800米赞词
2015/07/22 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers