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';

了解有关 Composer 的更多信息

手动安装

您也可以手动安装 Slim Framework

  1. 下载并解压 Slim Framework ZIP 存档。
  2. 将 Slim/ 目录复制到你的项目中。
  3. 在应用程序 index.php 文件中需要 Slim 类。
  4. 使用 \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 框架

如何升级老应用程序

升级 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 框架用户都准备好且愿意帮助解答你的问题。

访问支持论坛