Slim Framework 2

我最近發布了 Slim Framework 2,這與先前的版本有許多不同之處。版本 2 遵守 PSR-2 規範,並使用 PHP 名稱空間。它需要使用 PHP 5.3 或更新版本。

與未來接軌

PHP 語言及其社群正處於變革期。PHP Framework Interop 組織已經發布推薦編碼風格,並針對單一構架鼓勵使用元件函式庫。Slim,就像其他 PHP 函式庫,正在採用最嚴謹的標準。這樣的變更讓其他開發人員可以輕鬆閱讀 Slim 的程式碼基礎並提供建議改進。

Slim Framework 也使用 PHP 名稱空間。名稱空間讓您不再需要使用長而繁瑣的 PEAR 風格類別名稱 (例如:Slim_Middleware_ContentTypes),同時仍避免與其他函式庫類別名稱衝突。這是一件好事。版本 2 使用「Slim」廠商名稱空間。例如,將 ContentTypes 中介軟體加入 Slim Framework 應用程式的程式碼為

$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 的 npm)。有了 Composer,您即可輕鬆宣告和自動載入專案的相依項,而不用擔心撰寫或註冊自有的自動載入程式。相信我,Composer 真的非常厲害,而且很值得您花時間學習。它徹底改變了我開發 PHP 應用程式的方式 (變得更好)。

例如,假設您想用 Slim 2 和 Twig 建立一個新的 PHP 應用程式。首先,使用此 bash 命令,在專案根目錄中安裝 Composer

curl -s https://composer.dev.org.tw/installer | php

接著,建立一個 composer.json 檔案,用來宣告專案相依項 (Slim 和 Twig)

{
    "require": {
        "slim/slim": "2.*",
        "twig/twig": "1.*"
    }
}

接著,使用 Composer 透過此 bash 命令來安裝專案相依項。這將會下載宣告於 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 框架

遵循上述的手動安裝說明,並將舊的 Slim 框架函式庫替換為版本 2。請務必註冊 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 框架使用者都準備好且願意幫助回答您的問題。

拜訪支援論壇