位置: 编程技术 - 正文

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

  • 高新技术企业享受15%税率优惠的条件
  • 企业增资会计处理流程
  • 福利费用属于工资吗
  • 核定征收需要什么条件
  • 保理利息计算公式
  • 购进货物没有发票接受虚开判刑案例
  • 从租计征的房产税纳税期限
  • 收到银行转来的进账通知单,上月的销货款
  • 职工基本医疗保险单位交的钱去哪里了
  • 持有至到期投资改名为
  • 已付款货物还未付款
  • 为什么要抵消损益
  • 非股东可以投资项目吗
  • 所得税相关分录
  • 收到原未计入应收项目的交易性金融资产的利息
  • 增值税普通发票有什么用
  • 建筑企业成本票是含税价还是不含税价
  • 季度营业额超过6万需要补税
  • 四点帮你避开虚开发票
  • 公司以银行存款名义为员工垫付医疗费分录怎么写
  • 怎么样防止蹭wi-fi
  • 爱沙尼亚的故事
  • 加入申请理由怎么写
  • paddle!
  • 已经认证抵扣的发票,发生冲红,要怎么处理
  • 股东借款给公司会计分录
  • php 生成缩略图
  • 青龙面板拉库命令
  • 腾达路由器桥接的方法
  • php判断useragent
  • 经营特许权
  • 转让技术所有权计入什么科目
  • 目标检测选SSD还是YOLO
  • 大数据投资发展有限公司
  • 商业企业常用会计科目
  • get_module_base
  • 新公司有免税政策吗
  • 工程物资发生报废损毁
  • 应收贷方表示啥
  • 筹办分公司
  • 什么是稳岗补贴是给企业发放吗
  • 织梦自定义字段
  • 在什么情况下要切除子宫
  • 跨国公司海外子公司
  • 哪些企业可以开发票
  • 个税赡养老人分摊方式怎么更改
  • 纳税人提供不动产经营租赁服务增值税征收管理暂行办法
  • 防暑降温费计入工资还是福利费
  • 先收款后给发票
  • 检测费可以抵扣吗
  • 消费税也是流转税吗
  • 股东出资做什么科目
  • 为什么股票配资的都在境外交易
  • 未抵扣进项税额转出会计分录
  • 注册资金多少对公司有什么影响
  • 多缴附加税款账务处理
  • 劳务发票成本怎么做账
  • 会计账簿的设置与登记
  • sql server重新安装步骤
  • 如何将windows安装到u盘
  • windows隐藏administrator
  • ghost 硬盘对考
  • win7系统如何删除隐藏文件
  • excel自动关闭如何设置
  • 电脑开机显示windows不可用
  • win10周年版
  • unity小技巧
  • cocos2dx环境搭建
  • 使用Math.floor与Math.random取随机整数的方法详解
  • js模拟touch
  • unity3d打包apk
  • javascript的dom
  • Android自定义控件开发入门与实战 百度网盘
  • 如何用python开发软件
  • jquery的validate前端表单验证
  • 税务举报电话号码
  • 广州市地方税务局官网
  • 民办学校需要交工会经费吗
  • 建筑工程合同首付款
  • 汽车买保险车船税是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设