php - 特质和普通助手类有什么区别?
问题描述
比方说
a)我有特质并在另一个班级中使用它。我知道这是怎么回事。
b)我有一个名为 Helper 的普通随机类,我在该 Helper 类中有函数,我将该类包含在另一个类中。我可以通过使用在另一个类中使用这些辅助类的函数
助手::方法()
如果方法是静态的或使用 new 关键字并使用类似的方法
$helper->方法()。
c) 我可以只有一个 PHP 文件和函数,根本没有类。我可以将它包含在另一个类中,并以这种方式使用它:
方法()
d)我可以有一个类,然后另一个类可以扩展它并具有它的功能,但是这种方式很糟糕,因为我不能同时扩展两个类。
与 b) 和 c) 解决方案相比,为什么使用 trait 是最好的方法?
解决方案
与 b) 和 c) 解决方案相比,为什么使用 trait 是最好的方法?
您的每个示例都是针对不同开发的良好解决方案。
Helper::method();
Helper->method();
您有一个将在许多类中使用的功能。功能比较通用。然后把它放在一个Helper类上,如果可能的话,把它设置成静态的
method();
那是另一个问题:程序开发还是面向对象开发?然后取决于上下文。
Trait{ ... }
一些特定(或不)需要存在于不同类的功能?或者您想按功能或其他方式对功能进行排序(当我在一个类中有太多功能时,我会经常这样做)
但请记住,在开发时需要遵循一些约定。如果您想共享您的代码(例如 GitHub),最好坚持使用它们(这不是真正的义务,但很好......)。
总而言之,这取决于您想做什么,取决于您的开发环境。没有比其他方法更好的方法了。
推荐阅读
- android - UsageStatsManager 未返回正确的每周或每月结果
- android - Android 中的睡眠模式激活和禁用
- c - UnionSet按等级与C中的字符串
- curl - 如何正确询问 req_ssl_sni HAproxy 定义的 Kubernetes Ingress?
- excel - 在 vba 用户窗体中使用不同的背景颜色
- ruby - 难以从正则表达式模式输出多个发现
- java - 为什么 Intellij 显示奇怪的参数名称?
- javascript - 如何在Javascript中设置多个属性
- python-3.x - 全局捕获快速 api 中的“异常”
- docker - 安装时Docker快速启动终端未运行显示安装成功消息