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写入文件不覆盖的实例讲解)
- php源码如何导入dw中(php导入文件夹图片保存到dedecms的方法)
- phpstudy使用教程学习(phpStudy 2016 使用教程详解支持PHP7)
- 腾讯云换php版本(腾讯云服务器配置php环境的方法)
- php 依赖注入(详解php命令注入攻击)
- thinkphp分页效果怎样(thinkphp5+layui实现的分页样式示例)
- php怎么实现多线程(PHP实现的多进程控制demo示例)
- 宝塔面板phpMyAdmin错误教程(宝塔面板phpMyAdmin报错502 Bad Gateway nginx解决方法)
- php的底层分析(PHP反射原理与用法深入分析)
- php 处理html表单(PHP使用HTML5 FormData对象提交表单操作示例)
- windows搭建php环境(windows 2008r2+php5.6.28环境搭建详细过程)
- 搭建php和mysql的运行环境(Windows环境开发PHP完整配置教程Apache+Mysql+PHP)
- php常见的数组函数(用php定义一个数组最简单的方法)
- phpstudy服务器怎么设置(PHPStudy打开网页很慢的原因及解决方案)
- phpdate函数使用方法(PHP中strtr与str_replace函数运行性能简单测试示例)
- ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解(ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解)
- 你或许不知道你隐藏的支配欲望(你或许不知道你隐藏的支配欲望)
- 把宽体丰田86卖了,换成7.5代高尔夫GTI玩起姿态与性能并存的改装(把宽体丰田86卖了)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
- 七年前的这部剧有毒,全剧只有女主红到发紫,男主至今无人认识(七年前的这部剧有毒)
热门推荐
- mysql 性能调优技巧(4 款 MySQL 调优工具,公司大神都在用!)
- python实现两个变量的交换(在Python 中同一个类两个函数间变量的调用方法)
- python异常值处理(一篇文章带你弄懂Python异常传递和自定义异常)
- apache服务器配置https(Apache Rewrite url重定向功能的简单配置)
- python中字典的常用操作(11个Python3字典内置方法大全与示例汇总)
- dede调用栏目路径(dede栏目列表首页与第一页链接出现重复的解决办法)
- dedecms使用教程(Dedecms提示信息及提示内容的修改方法)
- 云服务器配置怎么设置(新手如何选择云服务器配置)
- python中怎样将字符串倒序(python字符串循环左移)
- python的pickle用法(Python multiprocess pool模块报错pickling error问题解决方法分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9