我正在尝试创建一些将在我的代码中使用更多时间的帮助程序,创建自定义帮助程序和使用trait有什么区别?防止自定义帮助程序或trait导致代码冗余的最佳实践是什么?>
我正在尝试创建一些将在我的代码中使用更多时间的帮助程序,创建自定义帮助程序和使用trait有什么区别,使用...防止代码冗余的最佳实践是什么? [
所以特质诞生了,如果一个班级需要继承多种行为,,我们可以使用许多特质。并且不同的类可以使用一个特征。
什么是特质?
特性是仅用于分组功能
以细粒度且一致的方式。 无法单独实例化特性。什么是助手?Helper只是一个类。您可以定义许多常见的PHP函数。
助手与特质:
大多数时候,我认为您可以使用帮助程序或Trait来防止代码冗余。
特质是从模型中抽象通用方法的一种很好的方法
。并且如果某些方法是另一个类的方法
,我认为使用Trait比帮助程序更好。对于特质:
// Trait:
trait Valid {
public function scopeValid($query) {
return $query->where('status', 1);
}
}
// Models: User
use App\Traits\Valid;
class User extends Models {
use Valid; // So you can use every methods from valid traits.
}
User::valid()->get();
// Models: Post
use App\Traits\Valid;
class Post extends Models {
use Valid; // So you can use every methods from valid traits.
}
Post::valid()->get();
// In Helper:
class ValidHelper
{
public function scopeValid($query) {
return $query->where('status', 1);
}
}
// Models: User
use App\Helpers\ValidHelper;
class User extends Models {
public function scopeValid($query) {
return (new ValidHelper())->scopeValid($query);
}
}
User::valid()->get();
// Models: Post
use App\Helpers\ValidHelper;
class Post extends Models {
public function scopeValid($query) {
return (new ValidHelper())->scopeValid($query);
}
}
有时我想直接使用方法而不是通过另一个类
有时(仅用于一类的抽象方法,并且不想更改tha类
,就像Laravel's global Helper。我认为助手比特质更好。