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。
希望对您有所帮助。
正如我在标题中提到的,我想在 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。
希望对您有所帮助。