2008-09-25 77 views

回答

13

Symfony的2

Symfony2中已经解决了许多问题与Symfony的1

  • 它允许一个很大的灵活性围绕项目是如何设置。

  • 这是非常快,堪比其他Web框架

  • 行走和学说都支持,但并非强制。创建者可以选择使用任何他们想要的作为ORM。或者根本没有。

  • 一些Symfony2组件现在正在大型项目中实现,如Drupal和PhpBB。

Symfony的1

Symfony的1看起来确实不错,但有一些限制。

它被抛光,并有良好的文件。它没有什么特别的错误。看起来,所有事情都需要变得更加困难。

  • 活动记录模式很好开始,但最终只是开始成为一个性能瓶颈。

  • Propel使得任何复杂的SQL查询都非常困难。克里奥尔允许您以OO方式“构建”quesries,但手工编写SQL会容易得多。

  • 强烈希望配置代码(Symfony喜欢yaml)。这意味着您将需要不断寻找哪个配置文件以及您需要更改哪个选项。如果你将你的配置定义保存在错误的级别(例如,在错误的父节点下),那么你就不会知道为什么事情没有起作用。

  • 该文档似乎有点专注于教程。我经常想要一个非常可靠的参考。这通常与查找配置定义有关。

  • 该框架的结构是相当严格的。你必须完全按照设计者的意图来实现。

  • 该框架结果很慢。我们正在尝试处理适量的流量(每天可能有50,000个唯一身份),而我们使用的服务器却无法承受。

很多这些问题在一些Symfony项目后会消失。如果我要寻找一个新的框架,那么我可能会看CodeIgnitor,它意味着更简单,更轻量。

Symfony之后,我写了一个非常小的框架来执行MVC模式。我更喜欢这个,因为我可以发展框架代码来匹配我的具体问题。这不是真正的“正确”的事情,但它为我解决。我已经在大约六个项目中使用过它,并且添加并修剪了我的代码以保持轻量级。

+1

我已经尝试过交响乐了,你对这个教程的重点是对的。问题是,他们刚刚发布了当前版本的教程,所以我试图从旧文档中学习,很多东西已经改变,所以我的经验是地狱。希望他们修理他们的东西。 – 2008-12-11 20:55:12

18

是的,这是一个很棒的框架。我用它来构建各种复杂性的几个站点。一个是只有少数几页和一个联系表格的小型企业网站。另一个是一个复杂的文件传送网站,每月有成千上万的用户和数万笔交易。我的几个客户使用它 - 有超过10万用户。

有一个很好的用户社区,irc通常有帮助的人,并且有几个插件可以让普通任务变得简单。它有一个非常好的管理生成器。 ORM(Propel)有点罗嗦,但允许你的大多数常用数据库特性 - 约束,外键,索引等。1.1中的Form对象很好。

最大的抱怨:这是罗嗦和目录繁重。过度使用配置文件可能会让事情变得难以理解。

绝对推荐。

2

这里是我刚刚发现了一些信息:

  • MVC驱动设计
  • ORM使用Doctrine或推进
  • YAML文件进行配置
  • 在Linux和Windows
  • 工作
  • 使用布局和模板
+0

Yaml只是模式的配置语言。 ORM实际上是由Propel或Doctrine完成的。 – 2008-09-25 20:01:41

3

@Daok

Yaml仅在ORM中用于定义您的模式。它并没有真正定义任何行为。 Propel基于生成的代码,并使用schema.yml创建模型。

它也适用于OS X。

它也有一个很不错的缓存层。

+0

HUm thx! +1但是,如果我已经创建了一个MySQL数据库,我想我可以从它得到schemas.xml吧? – 2008-09-25 21:43:50

2

Symfony不适用于PHP 4.托管特定于PHP4的应用程序的系统将无法使用Symfony。如果PHP4不是必需的,symfony是一个非常好的选择。

+0

Thx获取信息+1 – 2008-09-25 21:42:53

0

我现在还不能确定,因为我没有看到很多项目已经使用该框架... CakePHP的和Zend看起来更受欢迎,但似乎Symfony的有趣......

-2

Zend公司似乎优越,但真的没有在文档中。

1

Symfony是最好的选择。 我在很多应用程序中使用它,这是我使用过的最好的框架。文档和社区帮助非常简单,框架本身非常易于学习和工作。

2

我没有看到应用程序的复杂性,因为它是采用symfony的障碍。

我不认为任何人会因为高性能原因而选择symfony,但所有主要框架都可能是相同的。话虽如此,我们已经绝对没有性能问题。

也许不是最好的将它与Zend进行比较,Symfony是一个非常完整的堆栈框架,你需要做好准备以Symfony的方式来做事。我发现它很高兴使用。我建议在开始之前完整阅读官方symfony的书(在线提供)。 Propel(symfonys ORM)学习有点令人沮丧,但一旦学完了学习曲线,它确实奏效。

它真的挤满了有用的东西,越用越好。

0

正如Gaurav所说,Symphony不支持PHP4。如果你正在寻找一个体面的PHP框架,你可能想看看Code Igniter。

+0

人们仍然使用PHP4吗?我发现Code Igniter限制,因为它必须支持PHP4(不支持PDO)。 – 2008-11-26 17:49:47

+4

为什么有人想在PHP4中开发?尤其是一个新项目! – 2009-12-06 22:18:02

1

我们在过去6个月一直在使用sf,迄今为止我对它印象深刻。在它周围建立了一个非常健康的插件开发社区,主框架似乎非常快速地发展。将于12月推出的1.2版本将使该框架对使用Propel或Doctrine作为ORM层不可知,因为它为最终用户提供了极大的灵活性。最初的学习曲线有点陡峭,因为它绝对是一种你必须习惯的“symfony方式”,但是像Rails这样的其他完整栈框架,一旦你了解了所有关于它的一切,我发现开发速度相当快。

0

对于我使用CakePHP的替代方案。在过去的10个月中,我已经构建了一些应用程序的博客级复杂应用程序,以供内部使用。这真是太棒了。容易进入,不需要一个非常新的PHP,文档是体面的,没有找到答案通常在邮件列表中找到。

我在Cake上遇到的主要问题是,我不觉得我对他们的ORM有太多的控制,尽管最近他们在这个领域有了改进,但是增加了对group子句的支持,我仍然不能指定明确加入。这会导致您的性能不佳,因为orm决定需要执行一系列查询以从相关模型中获取数据。或者你可以使用像这个http://teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/这样的黑客工作,但它有点丑陋。随着应用程序开始增长,越来越多的模型被添加到模式中,我开始越来越频繁地遇到这种情况,所以我决定改用支持具有更多功能的ORM的东西(我有其他的蛋糕但是大多数很小)。它让我厌烦了一段时间,但我已经认识到蛋糕是一种很好的工具,但对我来说却不是合适的工具。

我主要看了Zend和Symfony(我只浏览了CodeIgniter文档并观看了截屏)。我最终选择了Symfony,因为它似乎具有权力和易用性的平衡。它可以使用Doctrine和Propel,theres的很多插件和很多文档。我准备好处理我认为必须编辑的数百万个yml文件,但令我意外的是我没有必要配置那么多。 Zend看起来非常强大,但对于我目前的项目来说,似乎有点太过于自己去做。从我读的内容来看,我也可以在我的symfony项目中使用Zend libs,而没有太多的麻烦,这样就完成了交易。

所以总之,你选择哪一个取决于你的需求。如果你看到自己在做复杂的查询,那么你应该选择一个拥有非常好的数据库库,或者至少让你轻松地使用另一个,而不会放弃框架的细节(我明白CodeIgniter可以使用doctrine)。

2

Symfony是一个很好的框架,它使用了与构建Ruby on Rails相同的设计模式,但它不是“PHP on Rails”,因为它有其自己的优点和缺点。

由于Symfony 1.2 Doctrine是第二个ORM,与它打包在一起。对于旧版本,有插件。

关于整个YAML业务:如果您更喜欢XML配置文件或其他文件格式,您可以插入它.YAML只是默认的。

最后但并非最不重要的是,您可以跳出默认结构(仍需要对其进行配置)。文档(参见Symfony Book)明确指出。

最后,这是一个品味和个人喜好的问题。我的建议是阅读Symfony Book(你可以从项目网站免费获得),并尝试关注示例项目。如果你喜欢,就用它。如果没有,请尝试其他方法。

3

我个人喜欢codeigniter,因为它很容易编码,而且记录很好。

11

SEEMS具​​有良好的文档,但在细节上,当你试图按照它,这是一场噩梦。

1

我尝试过CakePHP,CodeIgniter,ZendFramework和Yii。他们都有优点和缺点,但我必须承认,我最喜欢Symfony,因为它非常灵活,您可以选择所需的组件,与我提到的其他框架不同。那么,公平地说,你也可以使用Zend库。

另外,Symfony有很好的文档记录,它有一个很好的社区。它的学习曲线是相对陡峭的学习曲线,但是当你掌握了工作方式后,你会发现它非常有用。

0

我发现每个人都只谈论symfony框架的优势,但缺点是什么。在我个人的经验,我最讨厌的Symfony2的缓存系统,这将在开发环境中吃了你的大脑。它的开发速度很慢,当然很烦人。

您不能重新加载页面以查看更改,而不是每次在文件中保存更改时,您都必须前往终端清除缓存并等待10秒钟,如果您在Mac中工作并出现权限更改问题,然后等待几秒钟才能真正看到变化。

从字面上讲,您可以使用在同一时间,你可以用它来制定symfon2假设相同的应用程序一个应用程序的Zend Framework开发两个应用。

旁边也有其他方面的不足,但是这是我认为的Symfony2的最糟糕的部分。它从未被优化用于开发。它是如何让意义,因为生产而优化的架构,如果一个人不能正常发育?

2

我会说YII尝试所有的CakePHP,Zend和Symphony后。

它具有像MVC,DAO/ActiveRecord,缓存,身份验证和角色访问控制,脚手架,测试等功能。它重量轻,并具有强大的缓存支持。安全是这一框架工作的一部分。它包括输入验证,输出过滤,SQL注入和跨站脚本预防。 另外Yii更快,因为它使用延迟加载技术。直到或第一次调用该功能时才启用功能。例如,除非第一次调用对象,否则它不会创建对象。其他框架遭受性能上的打击,因为无论是否在请求期间使用或不使用功能,它们都会启用功能。

Yii为您提供真正意义上的开发乐趣,并且可以自由地调整每个方面,而无需使用像CakePHP那样隐藏的奇怪魔法。

最后,这只是我个人的观点。

相关问题