位置: 编程技术 - 正文

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

  • 增值税专用发票抵扣期限
  • 比赛奖金要交税么
  • 不含税销售额计算公式理解
  • 银行承兑汇票提前承兑收多少手续费
  • 减免的增值税如何计算
  • 政府补助属于不征收收入汇算清缴怎么填写
  • 党费会计核算科目说明
  • 调用系统服务出错核心征管后端
  • 往来票据怎么填写
  • 营业执照年审后日期会变吗
  • 行政单位收到行政事业性收费,需要上缴国库
  • 事业单位取得了应税收入如何纳税?
  • 收购不良资产收益怎么算
  • 2020退税时间超过了怎么办
  • 税控盘有什么作用
  • 人工成本如何分摊到服务成本
  • 已抵扣的进项税额怎么转出
  • 丧失控制权合并报表内部交易抵消
  • 利得入什么科目
  • 企业微信收款怎么提现
  • 上月计提租赁费下月扣怎么做账
  • 财政拨款税务处理方法
  • 应收账款坏账准备计提比例
  • dhcp的安全防范
  • 飞机票开电子发票是电子行程单吗
  • 电费发票和实际交的钱不一样怎样支付
  • 固定资产折旧的影响因素
  • 财务冲抵如何处理
  • 交易性金融资产包括哪些项目
  • 可抵免境外所得税税额
  • 商业零售企业存货非正常损失
  • php自动执行函数
  • php7.0新特性
  • react框架和vue哪个用的人多
  • 【角色扮演】
  • py转换成exe后打开没用
  • mlocate.db 删除
  • 增值税留抵税额计入什么科目
  • 应付职工薪酬账户期末余额可能是
  • 自行研发非专利技术入账金额包括增值税吗
  • 火车头造型
  • 网上如何增加办税人员
  • 以前年度多缴的税
  • 个人所得税专项扣除2023最新政策
  • 盘盈盘亏怎么看
  • 结账的内容和程序是什么
  • 企业小汽车折旧年限
  • 预付款开了发票
  • 开红字发票做账时记账凭证上如何写摘要?
  • 坏账准备计提的方法和比例
  • 对于银行已入账企业未入账的未达账项应该
  • 预计所有者权益增长率
  • sqlserver索引语句
  • 仓库记录
  • sql中的视图提高了数据库的
  • 修改window
  • window系统怎么用
  • dnfxp系统能玩吗
  • javaw.exe是什么进程
  • centos7.6忘记密码了怎么办
  • linux如何配置双网卡
  • win7电量
  • windows7宽带连接断开怎么办
  • ie11 for win8
  • Extjs Ext.MessageBox.confirm 确认对话框详解
  • dos命令批处理
  • cocos 2d x
  • AndroidAnnotations 自定义控件 ant编译 找不到类
  • 电脑启动项清理
  • js实现页面跳转跳到主页
  • jquery ztree选中节点颜色
  • 甘肃国家税务局官网app
  • 国企巡查都巡查哪些内容
  • 定额发票查询app
  • 股权转让怎么计算个人所得税
  • 小规模和一般纳税人的划分标准
  • 物业公司收取的物业费用如何缴税
  • 济南个税起征点是多少2021
  • 税务总局2013年65号公告
  • 交17000办的保险是什么保险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设