用于php的DAL生成器

时间:2010-11-22 13:58:20

标签: php .net data-access-layer datamodel

从.Net到PHP,因为我想探索语言的可能性,我正在努力寻找自动生成DAL的方法。在.Net中我只是使用visual studio来生成数据模型,但是如何使用PHP和MySQL来实现这一点,所以我不必手动输入所有类?我目前的PHP IDE是Aptana。

3 个答案:

答案 0 :(得分:3)

您可以使用DoctrinePropel之类的ORM。

这些功能可以从模式中自动生成类,反之亦然。

如果你需要编写自己的访问层,我建议使用PHP Data Objects (PDO),因为它提供了一个很好的OO接口和数据库引擎抽象。

答案 1 :(得分:2)

通常我不会写回答,因为你已经有2个,但我想给你一些我自己的见解,给我一个.NET和PHP开发人员的事实并试图利用两者:

  • 如果您正在寻找像Visual Studio一样强大的代码生成,那么不要再看了,因为在PHP中我还没有找到一个,而且我一直在寻找多年。 Visual Studio只是“巨大

  • 据我所知,没有.NET代码风格这样的东西。我相信大多数PHP框架/应用程序为了“简单”而牺牲很多,我认为这是不对的。在您提供的任何框架/应用程序中,代码应该是可扩展的,可维护的和可扩展的

  • Propel和Doctrine在数据映射(ORM)方面非常出色,就像PHP中的NHibernate或Entity Framework一样,但请记住,对于完全开发的应用程序,您需要一个数据访问层和业务访问层可扩展性。

  • 请记住,PHP支持OO很像.NET,但在某些方面有所不同,但开发设计适用于任何语言。

我认为我的答案与原来的问题相差甚远,但我想给你一个更大的答案,因为就像你说的那样,你想:

  

...探索的可能性   语言...

你需要很多意见才能形成自己的意见。祝你好运,希望我的回答没有让你厌倦! :)

PS:如果你想在PHP上使用BLL和DAL更多东西,请查看我在博客中写的this article

答案 2 :(得分:1)

如果您真的想深入了解PHP背后的想法,而不仅仅是在PHP中编写.net样式代码,那么您需要摆脱.net的Objects-all-over方法。

正如您所注意到的,自动生成对象在PHP中并不常见。这意味着问题的解决方案不应该依赖于此。

尝试创建更多通用对象并利用继承来避免对象膨胀。而且更多地尝试减少对数据传输对象的依赖,而更多地依赖于创建完整的对象即工具对象。

如果你逃避.net的陷阱,你会发现使用PHP会更加愉快。

为了正确看待这一点,我认为在5年内我没有专业的PHP工作,在像army.mil这样的大型项目上,我是否觉得有必要创建一个全面的DAL来完成工作。

我参与过的最大项目只有一个模型类系统,每个模型类都带有一系列方法,用于轮询数据库中的原始数据,然后将这些数据传递给最终对象。 (在这种情况下构成army.mil文章的文章)

PHP中的模型和数据之间根本不需要另一层。它几乎总是意味着更多的工作,没有收获。

他们在.net中有意义的原因有多种。其中最重要的是它们可以自动生成,因此几乎没有时间成本。

也就是说,当封装在框架的范围内时,DAL再次开始变得有意义。如果您的项目是基础的,我会建议像CodeIgniter这样的框架。 CI包含一个非常好的数据库抽象系统。它放弃了SQL,转而使用转换为您在配置需要中定义的特定数据库的方法。这与DAL具有相同的目的。您仍在模型中创建查询,您仍需要了解数据库的结构。但是,尽管.net想让你相信,无论如何,那些仍然是.net DALs的关注。

但是,要真正了解PHP的全部内容,您需要失去框架的特征并自由地工作。 PHP是一种黑客语言。它提供了黑客攻击。 (就像在你的裤子编程中,没有破解,好吧,两者......)而这正是你需要做的才能理解大惊小怪的事情。

这是一把双刃剑吗?完全。但是,使用代码进行快速松散的操作就是PHP自成一体的地方。有一个原因,它是快速的夜间创业公司的转换语言。

对于长期且技术上偏离主题的答案感到抱歉。我希望你能原谅我。你说你已经开始使用PHP来理解它的可能性。如果你继续这样做 - 你会认为它是弱的,不准确的,笨拙的,容易出错;而且你会错过它在灵活性,可扩展性,黑客能力和精神方面所提供的所有优点。我不想让你错过这种语言的观点。