首页 > 解决方案 > 特质和普通助手类有什么区别?

问题描述

比方说

a)我有特质并在另一个班级中使用它。我知道这是怎么回事。

b)我有一个名为 Helper 的普通随机类,我在该 Helper 类中有函数,我将该类包含在另一个类中。我可以通过使用在另一个类中使用这些辅助类的函数

助手::方法()

如果方法是静态的或使用 new 关键字并使用类似的方法

$helper->方法()。

c) 我可以只有一个 PHP 文件和函数,根本没有类。我可以将它包含在另一个类中,并以这种方式使用它:

方法()

d)我可以有一个类,然后另一个类可以扩展它并具有它的功能,但是这种方式很糟糕,因为我不能同时扩展两个类。

与 b) 和 c) 解决方案相比,为什么使用 trait 是最好的方法?

标签: phplaravel

解决方案


与 b) 和 c) 解决方案相比,为什么使用 trait 是最好的方法?

您的每个示例都是针对不同开发的良好解决方案。

 Helper::method();
 Helper->method();

您有一个将在许多类中使用的功能。功能比较通用。然后把它放在一个Helper类上,如果可能的话,把它设置成静态的

 method();

那是另一个问题:程序开发还是面向对象开发?然后取决于上下文。

Trait{ ... }

一些特定(或不)需要存在于不同类的功能?或者您想按功能或其他方式对功能进行排序(当我在一个类中有太多功能时,我会经常这样做)


但请记住,在开发时需要遵循一些约定。如果您想共享您的代码(例如 GitHub),最好坚持使用它们(这不是真正的义务,但很好......)。

总而言之,这取决于您想做什么,取决于您的开发环境。没有比其他方法更好的方法了。


推荐阅读