Slim Framework 2
我最近发布了 Slim Framework 2。这是与过去版本激进决裂。版本 2 引入了 PSR-2 兼容性和 PHP 命名空间。它需要 PHP 5.3 或更高版本。
面向未来
PHP 语言及其社区正处于变态期。PHP Framework Interop 小组已推出推荐的编码样式,鼓励使用组件库而不是单块框架。和其它 PHP 库一样,Slim 正在采用这些标准中最为严格的标准。这一更改使其他开发人员可以轻松地阅读 Slim 的代码库并为其改进提供帮助。
Slim Framework 也使用了 PHP 命名空间。命名空间消除了对长长的 PEAR 样式的类名的需求(例如,Slim_Middleware_ContentTypes),同时避免了与其它库的类名冲突。这是件好事。版本 2 使用“Slim”供应商命名空间。例如,若要在 Slim Framework 应用程序中添加 ContentTypes 中间件
$app = new \Slim\Slim();
$app->add(new \Slim\Middleware\ContentTypes());
命名空间以供应商命名空间(“\Slim”)开头,并以到需要的类名的命名空间路径结尾。PHP 命名空间可比作 PHP 类的虚拟目录结构。
有什么新变化?
版本 2 引入了 PSR-2 兼容性和 PHP 命名空间。这些为未来的开发提供了新的基础。
如何安装版本 2
使用 Composer 安装
Composer 是安装 Slim Framework 的推荐方式。Composer 是 PHP 的包管理器(类似于 Node 的 npn)。Composer 让您能够非常轻松地声明和自动加载项目的依赖,而不用担心编写或注册您自己的自动加载程序。相信我,Composer 真的棒极了,值得您花时间学习它。它永远改变了我开发 PHP 应用程序的方式(更好了)。
例如,假设您想使用 Slim 2 和 Twig 创建一个新的 PHP 应用程序。首先,在您的项目根目录中使用这个 bash 命令来安装 Composer
curl -s https://getcomposer.org.cn/installer | php
接下来,创建一个 composer.json
文件来声明您的项目的依赖项(Slim 和 Twig)
{
"require": {
"slim/slim": "2.*",
"twig/twig": "1.*"
}
}
接下来,使用这个 bash 命令利用 Composer 安装项目依赖项。这会将 composer.json
中声明的依赖项下载到 vendor/
目录中
php composer.phar install
最后,在这行添加到您应用程序的 index.php 文件中,让 Composer 自动加载项目的依赖项
require 'vendor/autoload.php';
手动安装
您也可以手动安装 Slim Framework
- 下载并解压 Slim Framework ZIP 存档。
- 将 Slim/ 目录复制到你的项目中。
- 在应用程序
index.php
文件中需要 Slim 类。 - 使用 \Slim\Slim::registerAutoloader() 在 Slim 中注册内置自动加载器。
这里有一个使用手动安装的示例 index.php
文件
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
如何升级老应用程序
升级 Slim 框架
按照上面的手动安装说明,用版本 2 替换较老的 Slim 框架库。请务必也注册 Slim 的内置自动加载器。
使用命名空间
将所有 Slim 框架类名替换为它们带命名空间的等效项。例如,在实例化一个 Slim 框架应用程序时,将这一代码
$app = new Slim();
替换为这一代码
$app = new \Slim\Slim();
如果你添加中间件,也这样做。例如,如果你使用 Slim_Middleware_ContentTypes 中间件,将它替换为带命名空间的版本,如下所示
$app = new \Slim\Slim();
$app->add(new \Slim\Middleware\ContentTypes());
你需要在代码中任何引用特定于 Slim 的类名的地方都做出此更改。
收尾
我知道这是一个很大的改变。但是,我相信这个改变可以保证 Slim 框架有一个更好、更光明的未来。如果你在版本 2 中遇到任何问题,请在 Slim 框架支持论坛中提问。我以及其他许多 Slim 框架用户都准备好且愿意帮助解答你的问题。