位置: 编程技术 - 正文

浅谈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文件修改后,打开还是显示以前的页面)

  • 职工享受工伤津贴的条件
  • 初级农产品免税原理
  • 用于员工福利的会计分录
  • 电子承兑汇票兑现
  • 公司车转个人名下要交多少税
  • 注销公司账面余额要全部清零吗
  • 小规模纳税人能抵扣进项发票吗
  • 应付职工薪酬期初余额在哪方
  • 营改增后无形资产的出租和出售都属于增值税纳税范围
  • 跨省工程需要什么条件
  • 生产车间计提折旧分录
  • 增值税专用发票的税率是多少啊
  • 实收资本未注明投资款
  • 残疾人可以给公司带来税收优惠吗
  • 企业所得税季报资产总额怎么填
  • 月销售额不超10万,免征教育费附加分录
  • 其他收益期末余额在借方还是贷方
  • 个人独资企业出资额是注册资本吗
  • 小微企业工会
  • 出口退免税的类型
  • 退税收入怎么做分录
  • 技术服务费如何收取
  • 酷狗云盘是干什么用的
  • 如何在没有开瓶器的情况下开红酒
  • 开具红字发票后所冲销的销项税应怎么处理?
  • schedulerv2.exe - schedulerv2是什么进程 有什么用
  • php面向对象优点,缺点
  • 电商新公司值得去吗
  • 劳务派遣增值税差额征税
  • 图片注入php
  • php foo
  • WordPress中设置视频循环播放
  • densenet详解
  • 餐饮业开具增值税专用发票
  • chatplus
  • js如何把字符串转换成数字
  • 有关的拼音
  • css常见的选择器有哪几种
  • 横看成横看成岭侧成峰的下一句
  • speedtest教程
  • 用php编写一个简单的计算器程序
  • 购入需要安装的固定资产应先通过什么账户
  • 小微企业认定标准 税务
  • 条形码费用属于哪个科目
  • python time. time
  • 年收入1500万是富人吗
  • 报税中的利润表怎么填
  • mysql1290报错
  • 高速公路费如何开票
  • 小规模纳税人场地租赁发票税率是多少
  • 工程进度节点奖励考核
  • 哪种情形的货物或者服务可以采用竞争性谈判方式采购
  • 失业保险金退回短信
  • 管理费用怎样分摊归集到产品
  • 客户付款是借方还是贷方
  • 汇兑损益形成的基础是
  • 房屋出租要交的税有哪些
  • 投资性房地房地产
  • 卖蒸汽的增值税是多少
  • 会计中的记账是什么意思
  • oracle分区大小建议
  • linux系统检测
  • 在u盘里装win7
  • windowsxp怎么用
  • 苹果mac有啥用
  • 写出10个linux系统操作命令和用法
  • win8.1应用
  • mac新版系统
  • ie9收藏夹
  • linux中rwx
  • js数组每个元素+1
  • sequelize join
  • shell脚本的fi
  • python从入门到精通百度云
  • 深入理解计算机系统
  • 福建省地税局副局长 阮
  • 12366纳税服务热线坐席人员
  • 地税是地方税吗
  • 钢管租赁可以开建筑材料吗
  • 房子的地税发票丢了怎么补办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设