如何使用FatFreePHP框架
背景
Fat Free Framework 是一个 PHP 微框架,由 Bong Cosca 于 2009 年启动。 遵循简约的方法,它倾向于避免添加并非绝对必要的代码和结构,同时专注于真正重要的事情。
为什么是微框架?
这种极简设计在所谓的微框架中很常见,PHP 提供了广泛的选择。 其他流行的微框架有:Slim (PHP)、Sinatra (Ruby) 和 express.js (node.js)。 这些框架通常有一些优点,例如:
- 非常轻巧(无脂肪仅约 55kb)
- 有一个温和的学习曲线,允许开发人员几乎完全专注于重要的事情,而不必改变他们的编码风格。
- 提供成熟、成熟的框架通常具有的许多功能。
不用说,选择像 Fat Free 这样的微框架并不总是最好的选择。 对于需要一个团队的大型项目,更自以为是和结构化的框架,如 Yii 或 Zend 可能是更好的选择。
使用 Fat Free 建立一个新项目
第一步: 下载 框架解压缩项目根文件夹中的文件。
Fat Free 仅在 PHP 5.3 及更高版本上运行。 如果您不确定当前使用的版本,可以通过键入以下内容进行检查:
/path/to/php -v
在确定您正在开发的环境是正确的之后,创建一个名为 index.php
的文件,这将是您的项目引导文件。 在第一行,包括无脂肪:
// FatFree framework $f3 = require ("fatfree/lib/base.php");
然后,您必须通过设置此变量来告诉您的应用程序是处于开发模式还是生产模式:
// Set to 1 when in development mode, otherwise set to 0 $f3->set('DEBUG', 1);
数据库
当然,您必须建立一个数据库连接。 假设您使用的是 MySQL:
// MySql settings $f3->set('DB', new DB\SQL( 'mysql:host=localhost;port=3306;dbname=mydatabase', 'dbuser', 'dbpassword' ));
或者,如果您更喜欢使用 SQLite:
$db=new DB\SQL('sqlite:/var/www/myproject/db/database.sqlite'));
查询
可以通过键入以下命令调用一个简单的查询:
$result = $db->exec('SELECT field FROM table WHERE id = "1"');
或者,如果你喜欢,你可以使用 Fat Free 内置的 ORM。 上面的查询会变成这样:
$table = new DB\SQL\Mapper($db, 'table'); $table->load(array('id=?', '1')); $result = $table->field;
使用 DB\SQL\Mapper
函数,您实际上是在“映射”数据库中已经存在的表。 如果您需要在表中添加新记录,则必须键入:
$table = new DB\SQL\Mapper($db, 'table'); $table->field = "Here is a value"; $table->save();
注意:您将无法使用 ORM 更改您的表。
为您的项目提供结构
由于 Fat Free 是一个微型框架,它没有为您的项目提供现成的结构,因此您必须自己创建它。 您的项目的结构示例可能是:
- api -- models - css - js - template - views - index.php
当然,您可以完全自由地使用您喜欢的结构。 这是使用非自以为是的框架的最好的事情。
自动加载
为了避免必须将所有类包含到项目中,Fat Free 允许您使用 autoloading 功能,这是一种仅在您真正需要时才包含类的方法。 所以,要调用我们所有的类,我们只需要输入:
$f3->set('AUTOLOAD','api/models/');
在我们的例子中,api/models/
显然是我们保存所有模型类的位置。 当你调用一个类时(例如 $myClass = new myClass()
),Fat Free 会自动在自动加载的位置查找以相同方式调用的文件 (myClass.php
)。
路由
下一个有趣的事情是 Fat Free 管理我们应用程序路由的方式。 这就是我们定义到主页的路由的方式:
$f3->route('GET /', function() { echo 'This is my Home Page!'; } );
注意那里的 GET 属性。 如果需要,可以将其替换为 POST,或者甚至使用 GET|POST,如果您同时需要它们。 然后显然有一个函数定义了该页面应该做什么。 当然,您也可以使用以下语法管理不同的参数:
$f3->route('GET|POST /post/@id', function($f3) { echo 'Post #'.$f3->get('PARAMS.id'); } );
如您所见,以 @
开头的所有内容都将被视为可变参数。
模板和视图
Fat Free 使您能够拥有您的模板和视图。 要将您的模板/视图包含在路由命令中,只需编写:
$f3->route('GET /', function($f3) { // Instantiates a View object $view = new View; // Header template echo $view->render('template/header.php'); // This is a variable that we want to pass to the view $f3->set('name','value'); // Page view echo $view->render('views/index.php'); // Footer template echo $view->render('template/footer.php'); } );
为了设置要传递给视图的变量,您可以使用 $f3->set('nameVariable', 'value')
函数,然后将相同的变量调用到视图中(例如 views/index.php
) 通过键入`。 这真的很简单。
总之,这些可能是您在使用 Fat Free 框架开发第一个应用程序时需要的最有用的功能。 如果您需要更多,您可以随时参考官方文档。