我有一个用PHP 4手工制作的框架构建的网站。代码是3岁,我是有限的(它需要很多努力来进行更改)。
我决定做这个网站的新版本。我的知识已经增加了,现在我知道有很多框架存在, IOC 也存在, ORM ......问题在于我所有的研究, 我在PHP中找不到令我满意的东西。另一方面,在我的工作(主要是.Net winform 2.0)中,我看到许多优秀的IOC和其他解决方案成为可能,并且,我认为.Net在开发具有最佳实践的软件方面更为成熟。
我没有为PHP找到很多好的IOC。至于ORM,我看过Propel,它看起来很不错,但是还没有找到一个完整的框架(Symfony文档不是最新的,包含很多错误; Zend看起来太大我认为......),等
您是否建议我只是尝试使用另一个框架并将网站保存在PHP中,或者切换到.Net是否是一个好主意?
我想我会保留我所做的并尝试慢慢进行一些重构。令我感到惊讶的是,大多数投票都是为了保持现有系统的良好状态:P这对我来说可能在短期内更为简单。
答案 0 :(得分:15)
如果您自己制作了整个框架,我建议您只需将其升级为PHP 5并从那里继续。大多数PHP 4代码将在PHP 5中“正常工作”;例外是使用新保留字的代码,以及依赖于PHP 4与PHP 5不同的方式的代码 - 这意味着PHP 4的功能边缘的类和引用中的一些东西。
答案 1 :(得分:3)
如果这是一个爱好项目,你对项目的当前状态感到有些不满意我会说:肯定会尝试.net - 出于同样的原因我会建议使用jsp或几乎任何其他可行的语言/平台/ runtime:乐趣和体验。即使经过一段时间你决定恢复到php,你仍然会保持对事情如何完成的“新视角”。另一方面,很难放弃旧的代码和方法。完全重写是很难的,因为首先你失去了所有的错误修复,小调整和技巧 - 回到原点。而且通常你得不到完全相同的结果。但是如果你打算构建一个(改进的)版本2.0并且想要伸展自己......继续,尝试新的东西。即使你失败了,至少你可以在你的网站上写博客:)
编辑:也可以只部署代码的一部分或在.net中开发新的fetatures - 只要能够“承担”两个分离的代码库。 您可能还想查看http://www.codeplex.com/Phalanger,一个用于php的.net编译器。 (还没有尝试过。)
答案 2 :(得分:2)
为了回应您的额外信息,从PHP 4迁移到PHP 5可能是重写框架以解决它所遇到的一些问题的黄金时期。
您也可以利用这个机会来增加图层分离。例如,你说它有一些减速,可能与过度标准化有关。好吧,如果您的框架抽象了足够的数据访问,您应该能够向该层添加一些缓存(例如memcached),并且应用程序不需要知道任何内容。
您也可以使用相同的工作以相当简单的方式添加日志记录。如果使用对象层,则可以将日志记录添加到通用数据存储中,并且几乎可以免费获取大量日志记录。
其他减速可能是由于数据库索引不充分造成的。这与您的框架无关。如果您使用的是MySQL,请启用慢速查询登录并对其中一些运行EXPLAIN。您应该看到哪些列需要索引而不是。
PHP本身并不是一种缓慢的语言。缓慢将在其他地方。 : - )
答案 3 :(得分:1)
根据代码量,保留PHP可能是个好主意。如果您决定转移到.Net,它基本上是完全重写。因为在一个完全不同的开发范例下,你会使用完全不同的语言,使用完全不同的语言,所以你可以带来很多东西。
答案 4 :(得分:1)
我强烈建议使用LINQ to SQL或LINQ to Entities作为ORM的ASP.NET MVC。
答案 5 :(得分:1)
对于一个好的PHP ORM,你应该看看Doctrine。它似乎更容易安装和编写,并有更好的文档。编写查询的方式可能会提醒您LINQ。
ABout Zend Framework,它很大但并不真正相关;所有组件或多或少都是独立的。它更像是一个库而不是Cake PHP或ROR这样的整体框架:
您可以在不使用Zend_Openid的MVC解决方案的情况下使用ZF。
您也可以在当前应用程序中开始使用Zend而无需重写所有内容。
答案 6 :(得分:0)
你为什么要限制自己选择这些?为什么不试试Ruby on Rails?我有一个内置的ORM!
答案 7 :(得分:0)
我只是尝试逐段更改为PHP5,尝试慢慢跟上新框架但不重建整个网站(如果它是一个大网站)。
对于您的数据库问题,您可以从开发环境开始,在您知道速度缓慢的情况下对数据库进行反规范化。