位置: 编程技术 - 正文

浅谈Laravel中的一个后期静态绑定(laravel enum)

编辑:rootadmin

推荐整理分享浅谈Laravel中的一个后期静态绑定(laravel enum),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:laravel yield,laravel有什么用,laravel特点,laravel enum,laravel vendor,laravel有什么用,laravel有什么用,laravel有什么用,内容如对您有帮助,希望把文章链接给更多的朋友!

关于 PHP 的 new static 延迟静态绑定,或者叫后期静态绑定,在 Laravel 中遇到一个使用上的问题。如下,在 Laravel 中调用 Model 新增数据的时候,首先给 Model 加了一个获取分表的方法:

这里 setTable 方法是在 Model 里定义的获取分表的方法:

从报错日志中发现 $this->table 并没有生效,但实际上在调用 create 方法之前打印表名的时候是期望的值,这里调用 create 方法为什么 $this->table 没有被重置呢?

这里 $this->message 是一个继承 Model 类的模型类,其中 create 方法:

位于 vendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php Line .

因为 Laravel 框架的这个 Model 类是一个 abstract 类型,PHP 中 abstract 类可以用 new static 后期静态绑定的方式实例化,而 create 方法里 $model = new static($attributes) 实际上就是重新实例化了并返回,而调用者 Model 类没有定义 table 属性,所以这个时候 $this->table 是没有值的。

浅谈Laravel中的一个后期静态绑定(laravel enum)

解决办法是用 save 方法即可,如图所示。实际上 create 方法也调用了 save 方法。

实验

一个抽象类 A,有个 create 方法,通过延迟静态绑定实例化并返回。B 类继承 A,test 方法中修改父类的 name 属性。

结果显示 $obj1 和 $obj2 这两个实例都是 B 的实例,调用 test 方法属性 name 改变了,但是调用 create 方法后,name 属性并没有改变。 这也就是在本文中说的在 Lavarel 中遇到的场景。 (这里如果把注释打开,打印的 name 就是重写的值)

如果把抽象类 A 改成普通类,new static 改成 new self 的方式实例化,结果就不同了,打印的属性 name 都是各自类的属性。

参考链接

PHP:后期静态绑定

PHP中new self()和new static()的区别

标签: laravel enum

本文链接地址:https://www.jiuchutong.com/biancheng/289977.html 转载请保留说明!

上一篇:浅谈PHP中new self()和new static()的区别(php use function)

下一篇:php readfile()修改文件上传大小设置(php文件修改后,打开还是显示以前的页面)

  • 个体定期定额怎么征税2023
  • 网上商城的主要功能以及购物流程
  • 农民工专户个税起征点2023四川省
  • 销售免税产品是什么意思
  • 公司名称变更发票还能认证吗
  • 税控盘维护费要交吗
  • 以现金形式收到包装物押金
  • 注册资本余额为100万亿元
  • 进口转卖业务
  • 公司委托收款该怎么办
  • 收到别人的承兑怎么入账
  • 企业安全生产费用提取标准 最新
  • 职工伙食团食谱
  • 10个点的发票税点开6个点专票
  • 没有业务来往可以报税吗
  • 金税盘维护费抵税会计分录
  • 委外技术服务费应归集哪个研发项目
  • 2021印花税零申报怎么报
  • 销售种子的税种有哪些税率为多少?
  • 三证合一办完后的流程
  • 开专票附加8个税点怎么计算?
  • 新个税劳务报酬怎么算
  • 转让技术所有权是什么收入
  • 股东变更交印花税会计分录
  • PHP:xml_set_character_data_handler()的用法_XML解析器函数
  • php字符串型数据的定义方式
  • 股权无偿赠与协议书范本
  • 赔偿款支出会计处理
  • PQIMountSvc.exe是什么进程 PQIMountSvc进程查询
  • 交易性金融资产属于流动资产
  • elementui
  • php ajax json
  • 关于灵活就业人员待遇享受政策
  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”
  • 企业汇算清缴发现之前收入记多了可以调整吗
  • php互换两个变量的关系
  • vscode入门视频
  • dpkg-configure-a
  • 增资扩股税务处罚标准
  • 公司银行开户的一些资料是公司办公室保存还是财务保存
  • 简易计税办法计算的应纳税额可以抵扣吗
  • 帝国cms教程官方完整版
  • 确认预计负债的三个条件
  • 普通发票应怎么开具
  • 外资企业和内资企业并举
  • 车船税去哪里交
  • 什么是保函保证金
  • 车保险费中的车费是什么
  • 物业公司代收取暖费怎么缴纳税额
  • 办公室用茶叶怎么入账
  • 返还的个税如何做分录
  • 资固定资产清理
  • 车辆购置税计入税金及附加吗
  • 为什么要缴纳残保金
  • 原材料按实际成本核算与按计划成本核算相比
  • mysql8 jdbc连接
  • sqlserver查询语句大全讲解
  • mysql_info
  • MySQL为字段添加主键
  • 联想yoga升级win11
  • windows 10激活不了
  • 升级电脑win10系统
  • win8丢失msvcp140.dll的解决办法
  • cocos2dx怎么用
  • Android OpenGL ES 入门
  • js 高级技巧
  • 关于shell的说法,不正确的是
  • shell脚本通过expect实现自动单边无密登录功能
  • ecmascript6教程
  • 修改系统用户名为英文
  • jquery.handleerror
  • jquery validator
  • javascriptj
  • 欢欢长大了的童年
  • 百旺金赋天津客服电话
  • 工会经费怎么缴纳不了
  • 江苏退休核定表最低缴费系数是什么意思
  • 特殊工种作业人员
  • 国税查票系统
  • 宣传中常用的效应包括
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设