php函数使用教程讲解学习交流(浅谈PHP中的Trait使用方法)
php函数使用教程讲解学习交流
浅谈PHP中的Trait使用方法概述
在php中有一种代码复用的技术, 因为单继承的问题, 有些公共方法无法在父类中写出, 而 trait可以应对这种情况, 它可以定义一些复用的方法, 然后在你需要使用的类中将其引入即可.
刚开始的时候给我的感觉就是将trait代码块直接拿到类中的意思, 但后来我发现, 我太天真了.
php中的trait用法:
问题
当我第一次使用的时候, 因为之前一直使用抽象类, 或者定义内部对象, 然后调用内部对象中的方法, 所以我当时有了以下几个问题:
1.能否引入多个, 如果可以的话, 同名方法如何处理
2.引入方法与现有方法重名时, 如何解决
3.能否定义抽象方法, 因为有些方法需要知道使用时的情况, 在抽象类中, 这种情况一般通过调用抽象方法来解决
4.能否定义字段
5.能否将字段或方法定义为静态
6.能否对方法进行权限控制
答疑
1. trait 可以引入多个, 多个trait中存在同名方法时, 需要指定使用哪个方法, 如下:
2.引入方法与现有方法重名时, 会优先调用类中已定义的方法, 其优先级顺序为: 当前类方法>trait方法>父类方法
3. trait 中可以定义抽象方法, 语法与抽象类相同
4.trait 中可以定义字段, 语法与类相同
5. 可以定义静态方法与静态字段
6. 可以进行方法权限的控制
7. 另外, 在trait 代码块中还可以引入其他trait代码块, 语法与类中引入相同:
总结
至此, 我发现了一个新的问题, 这个 trait 与抽象类有什么区别? 说什么代码复用, 这不就是多继承么? trait与抽象类功能上有区别么? 抽象类能干的, trait都能干啊.
思前想后, 我觉得区别还是有的, 虽然说他们两个看着很像, 功能相似, 但是正如抽象类与接口一样(虽然这两者不同, 接口不能定义方法), 接口更侧重于定义一组公共的方法, 一种规范, 而抽象类则侧重于将子类中公共的方法进行抽离, 提高代码的复用.
trait 与抽象类的侧重点也不相同
trait 侧重于定义共用的代码片段, 它并不管引用此片段的类是干什么的, 只要你需要, 就可以拿走去用, 简单说就是 trait 并不约束类的类型, 而仅仅定义方法
抽象类则不同, 既然你继承我, 那你干的事情肯定跟我是一样的, 不能抽象类是去与数据库交互的, 你子类去写脚本了. 所以抽象类相对 trait 更侧重于 类型的约束.
以上所述是小编给大家介绍的php中的trait使用方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/hujingnb/p/10549691.html
- php优势和缺点(PHP的介绍以及优势详细分析)
- web项目部署到阿里云服务器上(阿里云的WindowsServer2016上部署php+apache)
- phpstudy怎么配置域名并访问(phpstudy怎么绑定目录实现域名访问)
- thinkphp5 api开发(thinkphp5框架前后端分离项目实现分页功能的方法分析)
- php换行乱码(php输出文字乱码的解决方法)
- thinkphp数据库使用(thinkphp3.2同时连接两个数据库的简单方法)
- php怎么根据字符串长度设置(php常用字符串长度函数strlen与mb_strlen用法实例分析)
- php设置上传文件代码(PHP大文件切割上传并带进度条功能示例)
- php中最常用的标记符(php中目录操作opendir、readdir及scandir用法示例)
- thinkphp实战教程之博客技术学习(python3编写ThinkPHP命令执行Getshell的方法)
- php怎么设置curl(php curl发送请求实例方法)
- php 上传图片如何压缩(PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例)
- dedecms最新手册(在自己的php页面中使用dedecms标签的代码示例)
- php最好的探针(php探针不显示内存解决方法)
- php微信支付流程(PHP实现微信退款的方法示例)
- php无法读取txt文件(php写入txt乱码的解决方法)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
- 朋友圈屏蔽你的人,可以直接看淡了(朋友圈屏蔽你的人)
- 金球奖只青睐那些会戴珠宝的女人(金球奖只青睐那些会戴珠宝的女人)
- 浙江省一个县,人口超40万,建县历史超1100年(浙江省一个县人口超40万)
- 五代十国南唐历代国君(五代十国南唐历代国君)
热门推荐
- django 后台管理office文件(django admin后台添加导出excel功能示例代码)
- list使用linq排序
- 如何让tomcat启动更快(快速解决Tomcat启动慢的问题,超简单)
- dedecms自动裁剪(dedecms 图片页面分离简单方法)
- js 图片编辑处理库(javascript input图片上传及预览,FileReader预览图片)
- centos各种服务器搭建(CentOS下Lighttpd Web服务器安装与配置方法)
- HTML5 <abbr>标签
- 阿里云虚拟主机带公网地址吗(阿里云虚拟主机被搜索引擎爬虫访问耗费大量流量解决方法)
- css边框和边界教程(css 中多种边框的实现小窍门)
- pycharm导入turtle出现错误(解决Pycharm调用Turtle时 窗口一闪而过的问题)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9