Laravel 5 GenericDAO 喜欢 Java + Hibernate

Laravel 5 GenericDAO like Java + Hibernate

正如我在标题中提到的,我想在 Laravel 5.4 中实现与 GenericDAO 类似或最好的方法。

我使用 Java 和 Hibernate 已经有一段时间了,我曾经声明一个带有通用实现的通用接口、扩展通用接口的特定接口以及这些接口的特定实现。这样,代码对于 CRUD 保持清晰,如果我需要更改 CRUD 方法,我只需修改通用代码。另外,如果我需要检查或在该方法中做一些其他事情,我可以更改特定方法。

在 Java 我使用了这样的东西:

public interface GenericDAO<T, ID> extends Serializable {
    ...
}

public class GenericDAOImplHibernate<T, ID> extends Serializable implements GenericDAO<T, ID> {
    ...
}

public interface UserDAO extends GenericDAO<User, Integer> {
    ...
}

public class UserDAOImplHibernate extends GenericDAOImplHibernate<User, Integer> implements UserDAO {
    ...
}

等等...我不记得是不是完全一样,但确实很相似。我希望你能帮助我在未来的项目中使用这种结构。

感谢您的宝贵时间。

此致, 达格利米欧。

第一件事就是第一。我不知道你是否知道,但是 PHP 缺少泛型。有一些模拟泛型的变通方法,但它变得棘手,在谈论 PHP 时,我不想进入那个话题。也就是说,Laravel 附带一个名为 Eloquent 的 ORM,其基本模型为 Model(如果您需要将数据存储在数据库中,请访问 here to learn more) for any "Models" that you need to work with. Usually a model is paired with a migration

您可以开箱即用,就像所有 CRUD 操作一样:$object->save()$object->update(['attr'=>'value']) 等。因此,您几乎不必自己实现这些东西。如果您想覆盖任何实现,您可以扩展 Model 并根据您的需要进行自定义。

同样,由于 Laravel 没有任何通用的幻想,模型关系及其实现往往是非常线性的。但是,这并不妨碍您执行常规接口和 SOLID、多对多、一对一等内容。

如果您是 Laravel 的新手,我建议您阅读文档并观看 Laracasts

希望对您有所帮助。