这个问题与F3(Php Fat Free框架)有关,我偶然发现了一个适合小型网站和/或博客的简单,快速和安全的框架。对我来说重要的是框架具有某种ACL和简单性。如果你知道任何好的选择,我会全力以赴。与此同时,对于那些有过经验的人来说,有关F3的问题:
是否有可能在F3上拥有一个像样的OOP MVC结构?既然路线如此
F3::route('GET /',':indexController|home');
不起作用,如何实现适当的MVC结构?我知道我可以将home方法设置为static然后执行F3::route('GET /','indexController::home');
,但这似乎是不必要的复杂和过度杀伤,并且忽略了构造方法,我需要分别为每个控制器设置布局。我想在index.php文件中使用的只是到各种控制器和操作的路由,其余的逻辑将在这些控制器中处理。解决这个问题的最佳方式是什么?
非常感谢
编辑:我也希望听到有关Yii的一些意见,我认为它在PHPFrameworks.com上排名很高
答案 0 :(得分:6)
F3并没有任何内置的MVC架构,它基本上只是一个前端控制器。这就是重点。您可以实现您想要的任何功能,而不是强迫您使用一组特定的工具。例如,如果您不喜欢F3的Axon和Template插件,则可以使用Red Bean ORM来管理模型,使用Smarty来构建视图。 F3,它的核心,只是将网址路由到您的控制器并保持不受影响。
答案 1 :(得分:3)
尝试f3::route('GET /',array(new IndexController,'home'));
这将调用你的构造函数并执行home()方法。 f3不推广任何“适当的”MVC方法。相反,你有一个“徒手”的MVC方法。
答案 2 :(得分:0)
如果你想要MVC,为什么要使用F3。更好地使用CodeIgniter或Kohana(如果你有PHP 5)。它们也非常轻量级,并且是为MVC结构而构建的。
答案 3 :(得分:0)
听起来像面包店的旅行不会受到伤害。 CakePHP具有出色的ACL核心,可以像你想要的那样轻量级恕我直言。
答案 4 :(得分:0)
您还可以使用此示例结构(routes.ini)将路径定义移动到某个单独的配置文件:
[routes]
GET|POST / = IndexController->indexAction
GET|POST @Index: /@lang = IndexController->langAction
并将其包含在F3配置中:
\F3::config('routes.ini');
接下来,将带有控制器和模型的目录添加到AUTOLOADER中。 作为您可以使用的视图 - 例如PHPTal。 你现在几乎已经准备好了MVC而不是F3。
答案 5 :(得分:0)
我创建了一个名为Grump-Free-Framework的项目,该项目就是这样做的。
您可以在github上签出项目。
它使用简单的映射路由以完全模块化的结构调用控制器,每个模块都有自己的MVC。
/@module = modules\@module\Controller
您可以在app/modules/
文件夹中创建新模块,其中包含控制器,可以选择任意数量的模型和任意数量的视图。
还有另一个项目,它只是一些基本模块,例如登录模块,您可以在无grump-free-framework项目的自述文件中找到它。