【问题标题】:F3 (Fat-Free PHP framework) and adding MVC / OOP structure to itF3(Fat-Free PHP 框架)并为其添加 MVC / OOP 结构
【发布时间】:2011-06-10 03:23:02
【问题描述】:

这个问题是关于 F3(Php Fat Free 框架)的,我偶然发现了一个适合小型网站和/或博客的简单、快速和安全的框架。对我来说重要的是该框架具有某种 ACL 和简单性。如果您知道任何好的替代方案,我会全力以赴。同时,给有过F3经验的朋友提一个问题:

F3 是否可以有一个像样的 OOP MVC 结构?由于路线喜欢 F3::route('GET /',':indexController|home'); 不起作用,如何实现适当的 MVC 结构?我知道我可以将 home 方法设置为静态然后执行F3::route('GET /','indexController::home');,但这似乎是不必要的复杂化和矫枉过正,并且忽略了构造方法,我需要分别为每个控制器设置布局。我想在我的 index.php 文件中只有到各种控制器和操作的路由,其余的逻辑将在这些控制器中处理。解决这个问题的最佳方法是什么?

非常感谢

编辑:我也想听听关于 Yii 的一些意见,我看到它在 PHPFrameworks.com 上的排名很高

【问题讨论】:

  • F3 比 Fat Free厌食,我建议使用 Slim CodeIgniter
  • 谢谢,我去看看。我基本上是在寻找一个好的、简单的和轻量级的 PHP 5.3 MVC 框架,最好是已经内置了某种好的用户身份验证,来构建小型网站和博客。我将 Zend 用于企业级的东西。
  • 尝试 google 的 lightvc..它非常轻量级..但恐怕它没有 acl 模块
  • phpframeworks.com 是一个过时的、贴满广告的、颇有问题的网站
  • 尽管如此,对于 MVC 和 OOP 爱好者来说,我更喜欢 Yii 而不是 F3。我最终为我的编码风格重新实现了 yii 风格。和安全。

标签: php model-view-controller frameworks acl fat-free-framework


【解决方案1】:

F3 不会因任何内置的 MVC 架构而膨胀,它基本上只是一个前端控制器。这就是重点。您可以实现任何您想要的,而不是强迫您使用一组特定的工具。例如,如果您不喜欢 F3 的 Axon 和 Template 插件,您可以使用 Red Bean ORM 来管理您的模型,并使用 Smarty 来构建您的视图。 F3 的核心只是将 url 路由到您的控制器,并且不会妨碍您。

【讨论】:

    【解决方案2】:

    试试f3::route('GET /',array(new IndexController,'home'));

    这将调用你的构造函数并执行 home() 方法。 f3 不提倡任何“正确的”MVC 方法。相反,您有一种“徒手”的 MVC 方法。

    【讨论】:

    • 那行得通。但是,它很慢。出于测试目的,我在 __construct 中放置了一个 echo,在 home 函数中放置了另一个。构造回声会立即显示,而第二个回声需要很长时间才能出现。我在想我只会制作我自己的可用于简单项目的极其简单的 DB+ACL MVC,我所看到的所有内容都显得臃肿且不切实际,即使是最简单的......现在只是为了找到一些合适的最佳练习学习材料。谢谢!
    • 2.x 版本允许这种格式:f3::route('GET /','IndexController->home');
    【解决方案3】:

    如果你想要 MVC,为什么要使用 F3。最好使用 CodeIgniter 或 Kohana(如果你有 PHP 5)。它们也非常轻量级,并且是为 MVC 结构构建的。

    【讨论】:

    • 我会检查出来的,干杯。我都读过它们,但我能找到的最近的专业等级比较帖子是 2008 年左右的。
    【解决方案4】:

    听起来像是去面包店旅行不会有什么坏处。 CakePHP 具有出色的 ACL 核心,并且可以像您希望的那样轻巧,恕我直言。

    【讨论】:

    • 我读过有关 cakePHP 的文章,但在我设法找到的分析帖子中,声称它甚至比 Zend 还要慢的说法相当一致。在简单和良好的 ACL 之后,速度是我的首要任务 - 我不太关心其他任何事情。
    【解决方案5】:

    您还可以使用此示例结构 (routes.ini) 将您的路由定义移动到某个单独的配置文件中:

    [routes]
    GET|POST / = IndexController->indexAction
    GET|POST @Index: /@lang = IndexController->langAction
    

    并将其包含到 F3 配置中:

    \F3::config('routes.ini');
    

    接下来将包含控制器和模型的目录添加到 AUTOLOADER。 作为视图,您可以使用 - 例如PHPTal。 您现在几乎已经准备好 MVC over F3。

    【讨论】:

      【解决方案6】:

      我创建了一个名为 Grump-Free-Framework 的项目,它就是这样做的。

      您可以在github 上查看该项目。

      它使用简单的地图路由来调用完全模块化结构的控制器,每个模块都有自己的MVC。

      /@module = modules\@module\Controller
      

      您可以在 app/modules/ 文件夹中创建新模块,其中包含一个控制器、任意数量的模型以及任意数量的视图。

      还有另一个项目,它只是一些基本模块,例如登录模块,您可以在 grump-free-framework 项目的自述文件中找到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-08
        • 2013-07-16
        • 1970-01-01
        • 2020-02-17
        相关资源
        最近更新 更多