1

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

4

3 回答 3

3

你可以使用像DoctrinePropel这样的 ORM 。

这些具有从模式自动生成类的功能,反之亦然。

如果您需要编写自己的访问层,我会推荐使用PHP 数据对象 (PDO),因为它提供了一个很好的 OO 接口和 DB 引擎抽象。

于 2010-11-22T14:02:00.693 回答
2

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

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

  • 据我了解,没有 .NET 代码样式之类的东西。我相信大多数 PHP 框架/应用程序为了“简单”而牺牲了很多,我认为这是不对的。在您构建的任何框架/应用程序中,代码都应该是可扩展、可维护和可扩展的

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

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

我认为我的回答与最初的问题有些不同,但我喜欢给你一个更大的答案,因为就像你说的那样,你想:

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

你需要很多意见来形成自己的意见。祝你好运,并希望我的回答没有让你感到无聊!:)

PS:如果您喜欢使用 PHP 的 BLL 和 DAL 的更多内容,请查看我在博客中写的这篇文章。

于 2010-11-23T02:43:01.040 回答
1

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

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

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

如果您摆脱了 .net 的束缚,您会发现使用 PHP 会更有趣。

换个角度来看,我认为在我从事 PHP 专业工作的 5 年中,在军队等大型项目中,我从未觉得有必要创建一个完整的 DAL 来获得这份工作完毕。

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

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

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

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

但是,要真正了解 PHP 的全部内容,您需要摆脱框架的束缚,自由地工作。PHP是一种黑客语言。它提供黑客攻击。(就像在你的裤子编程中一样,而不是破解,好吧,两者都......)而这确实是你需要做的才能理解大惊小怪的原因。

它是一把双刃剑吗?完全。但是在代码中玩得又快又松是 PHP 发挥作用的地方。它是快速通宵创业的 goto 语言是有原因的。

对于冗长且技术上偏离主题的答案,我们深表歉意。我希望你能原谅我。您说您已经开始使用 PHP 来了解它的可能性。如果你一直这样下去——你会认为它很弱、不准确、笨拙并且容易出错;你会错过它在灵活性、可扩展性、黑客能力和精神方面提供的所有伟大之处。我不想让你错过语言的重点。

于 2010-11-22T15:30:38.640 回答