PHP new static 和 new self详解

发布时间 - 2026-01-10 23:09:30    点击率:

最近在一个视频的评论被问到一个小问题:这里选择用static 而不是self有特殊的考虑么?或者我们可以这样转换一下问题:

PHP 的 new static 和 new self 具体有什么?

其实这个来看一个例子应该就很清晰了:

class Father {

 public static function getSelf() {
  return new self();
 }

 public static function getStatic() {
  return new static();
 }
}

class Son extends Father {}

echo get_class(Son::getSelf()); // Father
echo get_class(Son::getStatic()); // Son
echo get_class(Father::getSelf()); // Father
echo get_class(Father::getStatic()); // Father

这里面注意这一行 get_class(Son::getStatic()); 返回的是 Son 这个 class,可以总结如下:

new self

1.self返回的是 new self 中关键字 new 所在的类中,比如这里例子的 :

public static function getSelf() {
  return new self(); // new 关键字在 Father 这里
 }

始终返回 Father

new static

2.static 则上面的基础上,更聪明一点点:static 会返回执行 new static() 的类,比如 Son 执行 get_class(Son::getStatic()) 返回的是 Son, Father 执行 get_class(Father::getStatic()) 返回的是 Father

而在没有继承的情况下,可以认为 new selfnew static是返回相同的结果。

Tips: 可以用一个好的 IDE 来直接看注释。比如 PhpStorm:

Happy Hacking


# new  # self  # static  # php  # static和self  # PHP中new static()与new self()的区别异同分析  # php self  # $this  # const  # ->的使用  # php类中的$this  # final  # self这几个关键字使用方法  # PHP中new static() 和 new self() 的区别介绍  # PHP中static关键字以及与self关键字的区别  # PHP面向对象中new self()与 new static()的区别浅析  # 浅谈PHP中new self()和new static()的区别  # php类中static与self的使用区别浅析  # 的是  # 有什么  # 基础上  # 可以用  # 而在  # 我们可以  # 问到  # 这里面  # 这一行  # 类中  # 很清晰  # 而不是  # 情况下  # 更聪明  # brush  # class  # public  # Father  # extends 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel如何处理表单验证?(Requests代码示例)  zabbix利用python脚本发送报警邮件的方法  如何为不同团队 ID 动态生成多个非值班状态按钮  ,网页ppt怎么弄成自己的ppt?  如何基于PHP生成高效IDC网络公司建站源码?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  装修招标网站设计制作流程,装修招标流程?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何基于云服务器快速搭建个人网站?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  如何确保西部建站助手FTP传输的安全性?  如何正确选择百度移动适配建站域名?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  如何在阿里云部署织梦网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  网站图片在线制作软件,怎么在图片上做链接?  香港服务器WordPress建站指南:SEO优化与高效部署策略  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel怎么为数据库表字段添加索引以优化查询  jquery插件bootstrapValidator表单验证详解  Android滚轮选择时间控件使用详解  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel如何处理文件下载请求?(Response示例)  如何在建站之星网店版论坛获取技术支持?  如何用PHP快速搭建CMS系统?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  香港网站服务器数量如何影响SEO优化效果?  Android使用GridView实现日历的简单功能  中国移动官方网站首页入口 中国移动官网网页登录  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  EditPlus中的正则表达式实战(5)  如何快速搭建自助建站会员专属系统?  Laravel如何实现文件上传和存储?(本地与S3配置)  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Android利用动画实现背景逐渐变暗  如何在IIS7中新建站点?详细步骤解析  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  高防服务器如何保障网站安全无虞?  javascript基本数据类型及类型检测常用方法小结  Laravel如何使用模型观察者?(Observer代码示例)  如何用PHP快速搭建高效网站?分步指南  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  文字头像制作网站推荐软件,醒图能自动配文字吗?  网站制作价目表怎么做,珍爱网婚介费用多少?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】