【问题标题】:When is a PHP project too small for a framework?什么时候 PHP 项目对于框架来说太小了?
【发布时间】:2010-04-13 01:27:36
【问题描述】:

我即将开始一个小型静态网站项目:不需要数据库或 CMS。基本上,一个宣传册网站。

我最近使用 CodeIgniter 框架开发了一个成熟的 Web 应用程序,我想知道是否也适合将 CI 用于更小、更简单的网站。

通常对于静态宣传册网站,我会编写常规的 PHP 页面,其中包含一些包含以节省重复(即带有 PHP 的 HTML),但这次我想知道我的新朋友 CodeIgniter 是否会能够简化开发过程。

为这样一个简单的项目考虑一个框架是明智的,还是有点矫枉过正?我担心我可能是众所周知的木匠,唯一的工具是锤子,把每一个问题都当作钉子!

【问题讨论】:

    标签: php frameworks


    【解决方案1】:

    我认为几乎从来没有,需求会随着时间的推移而变化,而且会越来越多……所以最好有一个良好的基础,使用框架来等待未来的需求。但如果您的项目不会有很长的生命周期,并且您的需求非常简单,那么我认为没有必要使用框架。

    【讨论】:

      【解决方案2】:

      我个人永远不会在框架之外开发一个网站,而不仅仅是一个单页小册子网站。我在框架内工作得更快。

      我是一名 Python/Django 开发人员,但这是我的看法。

      我用 PHP 做了一些小型非框架网站,我不知道 PHP 框架与 DJango 相比如何,但如果它们有相似之处,那么事实仍然是我在框架内开发比在框架内开发更熟练手动从头开始编写代码。

      如果只是给我 MVC 的 VC,它可以帮助我保持井井有条。 Django 为我提供了许多内置工具,例如表单处理,即使对于小型网站,这些工具也能让我的生活更加轻松。

      我假设 PHP 框架提供了类似的东西,但也许不是。

      您也无法预料网站会随着时间的推移而增长。维护构建在框架中的东西更容易,如果您将来需要扩展站点,最好有一些结构。

      【讨论】:

      • 他们确实...我实际上发现 Django 在结构上非常“松散”...实际上有点太松散了;我不太喜欢它。像 CakePHP 这样相信约定优于配置的东西可以真正减少设置路由的时间,以及决定模板名称、文件夹结构和其他东西...... Django 提供了很多工具,但我发现可扩展性更好/更容易Cake,而如果您在 Django 中需要更多东西,则很难在其上构建。举个例子,迫使你走这条“个人资料”路线的 User 类,我发现这是一种分离 ---
      • --- 完全没有必要而且很烦人。但很可惜,它也有很多优点。无论如何,重点是 PHP 框架也有利于缩短时间并提供结构。它们各有优缺点(Django 有一个更好的 ORM IMO)。
      • 你描述的组织(MVC的VC)也是吸引我的地方。我没有使用过 Django,但 CI 肯定有 HTML 辅助函数、表单验证类和其他你期望在框架中节省时间的东西。
      • 我真的不会对 CI 有任何期望,但很高兴听到。我个人不会将性能视为决定因素。对于没有数据库可扩展性的小型站点来说,可能不会成为问题。我会评估它是否最终会节省您在框架内工作的时间。我经常选择框架;但这只是我个人的风格。也许框架只会让你慢下来。
      • @Mark 你所有的批评都是有效的,而且表达得很好。关于 Django 用户,我必须同意你的看法。根据具体情况,可能很难自定义 User 模型以满足您的需求。不过我会这么说:用户模型可以轻松地集成单独的复杂应用程序而没有什么麻烦。我可以安装一个注册系统、一个博客应用程序、内部消息传递和一个电子商务购物车,所有这些都编写独立的独立组,它们会相互配合,因为它们都基于统一的用户模型和身份验证后端. ---
      【解决方案3】:

      由于我倾向于继承定制框架或编写自己的框架,因此我会将其固定在大约 3 页:如果更多,那么设置框架是值得的。如果它需要一个数据库,那么很有可能你最终会得到超过 3 页,无论如何。 :-)

      【讨论】:

      • 站点大约有 40 页,所以按照您的定义,它绝对足够大,可以从框架中受益。
      • 如果它是一个站点,而不是一个应用程序(即除了查看页面之外没有太多的用户交互),我会在框架上使用 CMS。您自己实现的几乎所有事情都已经为您完成了。缺点是你感觉不像是编码员,而更像是流水线工人,而且你偶尔会遇到一些按照 CMS 规定的方式去做的痛苦,但开发通常要快得多。
      • 一个框架可以从一个放置常用功能和页面元素的地方开始。
      【解决方案4】:

      我推荐Rapyd,一个“简约快速的PHP框架”。

      【讨论】:

        【解决方案5】:

        一根绳子有多长?

        我将 CodeIgniter(特别是 PyroCMS)用于糟糕的 5 页小册子,但这纯粹是为了让客户使用所见即所得的方式轻松管理自己的页面。

        任何客户都会说“哇,新闻,联系表格,我也可以给我一些 Twitter 吗?!”所以我只是把它扔在那里以节省大家的时间。

        如果您是从头开始开发,那么如果内容是静态的,则毫无意义。 CodeIgniter 之类的东西有助于 DB 交互、表单验证以及将多个页面分解为逻辑块,即控制器类和方法。

        如果您没有 db-content、不处理表单并且没有很多页面,那么添加开销几乎没有意义。

        也就是说,试试我的Twiny framework 来获得真正最小的 MVC 框架

        【讨论】:

        • 谢谢菲尔。我对这个特定网站的具体要求并不太具体,但它基本上分为大约 40 页静态内容和 4 个表单。
        • 天啊,我花了 2 年多的时间才结束这个话题!当我提出这个问题时,我是个菜鸟,并没有意识到接受有用答案的重要性。无论如何,感谢您提供有用的答案:)
        • 过去两年我非常讨厌你,但我们现在可以成为朋友了。
        • 我很高兴我们能够修复这座桥,并且在经历了这一不幸事件之后,我们现在可以本着友谊的精神继续前进;)
        【解决方案6】:

        如果您不需要数据库、CMS 并且只是一个简单的静态 HTML/css/PHP 页面,我认为在没有框架的情况下创建网站不会出错。另外,如果你已经使用框架很长时间了,你可以休息一下,“为代码编写代码”,感受一下从头开始编写代码的感觉:)

        【讨论】:

          【解决方案7】:

          如果有客户随时要求您添加更多功能,网站永远不会小 :)

          【讨论】:

            【解决方案8】:

            对于这样一个简单的网站。为什么甚至使用框架为什么不使用像concrete5这样的东西。矫枉过正?确实。但是,嘿,这很容易,几乎不需要编码,所以维护是轻而易举的事。

            该网站将在不到一个小时的时间内启动并运行,它让您在客户眼中看起来很好,这不会有什么坏处。!

            【讨论】:

              【解决方案9】:

              我不认为任何项目对于框架来说都太小了,我认为有些框架对于小项目来说太大了。每个人都希望他们的网站会发展壮大。因此,无论网站现在多么小,如果您从框架开始,增长将更容易管理。

              【讨论】:

                【解决方案10】:

                框架过度使用的唯一情况是使用一次性脚本,例如当您需要快速自动化某些您永远不需要再做的事情时。对于任何将进入执行周期的东西,框架可能会更好。

                【讨论】:

                  【解决方案11】:

                  如果它需要几个小时的工作 - 那么它很小。无论如何,如果您打算投入超过“几个小时”的时间 - 一定要使用框架和控制修订系统。

                  【讨论】:

                    【解决方案12】:

                    这取决于。如果您确定这就是您正在处理的所有网站,或者在未来需要时迁移,那么我不明白为什么会有使用框架的理由,除非您觉得使用框架更舒服.

                    作为个人示例,我最近在一个半静态网站上工作,为此我构建了一个最小的框架,用作静态 html 的缓存预处理器,将常见的 html 元素插入到预设的位置。这允许一些动态内容,但仍然只使用静态 html 作为内容。

                    我会说你的答案在于一个由未来发展需求、你自己的工作偏好和绩效组成的公式。

                    【讨论】:

                      猜你喜欢
                      • 2011-06-09
                      • 2016-08-10
                      • 1970-01-01
                      • 2012-01-01
                      • 2020-07-16
                      • 2012-03-14
                      • 1970-01-01
                      • 2017-01-02
                      • 1970-01-01
                      相关资源
                      最近更新 更多