5

我目前正在开发基于浏览器的 MMO,并选择了 LAMP 堆栈,因为在生产中开始的成本极低(与 Windows + IIS + ASP.NET/C# + SQL Server 相比,即使我有 MSDN Universal) . 但是,我需要一个 PHP 框架,因为这不是一件容易的事。除了在 Linux 上运行的能力之外,我不受任何限制,因为我将使用专用的云托管解决方案(以及用于开发的 VMWare 映像)并且可以根据需要对其进行配置。

没有特定的顺序:

  1. 它必须易于扩展;这是至关重要的。如果游戏取得稳定的成功,它最终将超出主机提供的服务器,并且必须将其转移到多个负载平衡的服务器上。至关重要的是,这可以以最小的努力完成。我确实知道这可能需要遵循严格的约定,所以如果您知道任何您建议的框架,请解释需要什么。
  2. 它必须为所有核心任务提供模块:身份验证、ACL、数据库访问、MVC 等。只要可以轻松编写和集成,缺少一两个模块就可以了。
  3. 它应该支持国际化。我认为任何 Web 框架都没有理由不提供翻译应用程序和在程序员不付出大量努力的情况下切换语言的方法。
  4. 必须有很好的社区支持,最好还有商业支持。是的,我确实知道 QCodo/QCubed 非常好,但它对于这项任务还不够成熟。
  5. 需要平滑的 AJAX 支持。框架是否带有支持 AJAX 的小部件或具有添加 AJAX 的简单方法无关紧要,只要 AJAX 易于实现即可。我打算单独使用 jQuery + Dojo 或其中之一 - 不完全确定。
  6. 如果它通常是可靠的并且不干扰其他需求,那么当它提高可读性并减轻大量工作时自动神奇地做一些事情会特别好。这似乎是 CakePHP 的情况。

我读过很多比较,我知道这是一场非常激烈的辩论。一般的答案是“尝试自己看看什么适合你”。但是,我不能说这项任务很容易,我呼吁您有构建具有类似要求的应用程序的经验。到目前为止,根据一般标准,我将 Zend 和 CakePHP 捆绑在一起,但是,所有知名框架都以某种方式提供相同的功能,但采用不同的方法,每种方法都有自己的优点和缺点。

编辑:

  1. 我对 MVC 有点陌生,但是,我愿意学习它,而且我不在乎框架是否对 MVC 新手来说更容易。我有很多时间来学习 MVC 和您推荐的任何其他架构(或任何其他架构)。
  2. 我将使用 Zend 作为实用程序“框架”,即使它只是一个库的集合(尽管有人告诉我,一些很好的库)。
  3. 当前的 PHP 竞争者是:CakePHP、Kohana、Zend。
4

8 回答 8

4

我看到您已经看过 Zend 和 CakePHP,但我想为您指出一个不同的方向。

http://kohanaphp.org/

如果我仍在使用 PHP,我会使用 Kohana。他们采用 CodeIgniter 并以一种使 php 感觉更少基于文件而更多基于对象的方式对其进行了分叉。他们有一个很棒的模板解决方案,并且除了 ACL 之外,还为您讨论的所有内容提供了模块(我不知道那是什么,所以也许他们确实拥有它)。

无论如何,我认为值得一试。

在可扩展性
上,我注意到一些关于速度的对话。虽然我认为 Kohana 为我们处理事情的速度非常快,但我认为这与框架的关系不如它与其他工具的关系。

首先,我通过为 nginx 删除 apache 来提高我的许多 php 应用程序的速度。运行为 fastcgi 的 PHP 的 Nginx 更轻量级,并且确实增加了http://ukclasslist.com的加载时间。我们仍然在本地使用 apache,并且在我们的服务器上运行的副本比我们的本地版本更快。

如果您仍然遇到速度问题,尤其是在抓取大块数据时,您应该查看 memcache。

于 2010-03-04T06:37:42.543 回答
3

我个人是Kohana的粉丝。在此之前我有 CodeIgniter,而 Kohana(如我所见)基本上是 CodeIgniter 中的所有好东西,没有很多限制。v3 是 Kohana 的最新版本,比 v2 更加健壮和灵活。

性能会因您使用框架的方式以及与其他框架相比的固有优势和劣势而异。您最好的选择是使用 APC(即将成为 PHP 6 的一部分)或 eAccellerator 来缓存已编译的 PHP 脚本。

于 2010-03-04T07:39:12.167 回答
2

试试阿加维。简直就是最好的 PHP 框架。得到你需要的一切,你可以通过工厂扩展、配置或更改核心类的实现。

可自由定义的环境(开发、登台、生产等)、上下文(Web、SOAP、控制台等)、输出类型(具有布局/层/插槽/参数/HTTP 标头的自定义渲染器集),如 HTML、JSON、PDF 或$WHATEVER 简直就是最好的路由系统。

使用XML 进行配置,实际上将它与父文件、模式验证和 XIncludes 一起使用。不错的输入验证系统,默认为严格验证(不仅适用于 GET/POST,还适用于所有其他输入,如标头、文件和 cookie)。添加一些 i18n/i10n 的细节和内置的 SOAP 魔法,您就拥有了最灵活和最强大的 PHP 框架(不是“仅限 Web”的框架)。

文档有点短,但与 Kohana、CakePHP、Zend 和所有其他框架相比,它具有唯一真正的MVC 实现……只需查看它并在 IRC 或用户邮件列表上提问即可。在经历了一段陡峭的学习曲线之后,这是您很长时间以来最后一次查看其他 (PHP) 框架。:-)

于 2010-03-18T21:56:57.710 回答
2

扩展不是您可以期望 Web 框架解决的问题。即使是拥有近乎无限预算的成功 MMO 也采用了分片和实例化。最好的方法是将您的应用程序设计为模块化。根据需要,您可以将主要功能移动到单独的服务器上。例如,聊天、库存和拍卖在很大程度上是独立的功能,不需要托管在同一台服务器上。为了防止某些游戏漏洞,您需要在服务器之间建立消息服务,而主要的 Web 框架都没有提供此功能。

PHP Web 框架的致命弱点是缺乏持久内存。CakePHP 非常慢,因为整个 Web 框架必须为每个请求重新初始化。像 APC 这样的操作码缓存只消除了解析 PHP 源文件的需要。

我强烈建议您考虑使用其他语言的 Web 框架。Python、Ruby 和 Java 都是很好的选择。所有这些语言都将在廉价的 Linux 服务器上运行,并且不受上述限制的影响。

于 2010-03-09T19:49:20.447 回答
0

Codeigniter 是一个了不起的框架,它拥有良好的社区支持并且可以很好地扩展。此外,您无需拥有 shell 访问权限即可部署应用程序。MVC 集成使编写应用程序变得非常容易。

于 2010-03-04T06:51:56.047 回答
0

实际上,您可以将 CakePHP 和 Zend Framework 合二为一。Zend 框架比其他任何东西都更接近于库。所以在 Cakephp 中使用 Zend 库并不难。两全其美的。

这是执行此操作的组件或控制器的示例

听起来性能也很重要。你可能会发现这个有趣 的 http://avnetlabs.com/php/php-framework-comparison-benchmarks

至于可扩展性 ,也许这个问题会有所帮助

于 2010-03-04T07:04:55.077 回答
0

首先,这是关于 PHP 框架的好资源:

http://www.phpframeworks.com/

你可以很容易地了解它们,因为那里有很好的比较。

其次,我强烈建议您阅读 phpro.org 上关于 MVC 的精彩教程:

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html

于 2010-03-04T06:40:20.150 回答
0

这是一个很好的起点http://phpro.org/tutorials/Model-View-Controller-MVC.html

于 2010-03-04T11:40:30.557 回答