告別凌亂的代碼:使用 Composer 簡化 Slim Framework 3 的 PSR-15 中間件

最近在為一個項目升級 slim framework 3 時,遇到了一個讓人頭疼的問題:如何優雅地集成 psr-15 中間件。slim 3 本身并不直接支持 psr-15,這導致我不得不編寫大量的膠水代碼來橋接 psr-15 中間件和 slim 3 的應用流程。代碼變得冗長且難以維護,這讓我非常沮喪。 我嘗試了各種方法,但都無法達到預期的簡潔性。

直到我發現了 bnf/slim3-psr15 這個 composer 包。它巧妙地解決了 Slim 3 與 PSR-15 的兼容性問題,讓我能夠以 PSR-15 的標準方式編寫和使用中間件,極大地簡化了代碼。

首先,使用 Composer 安裝 bnf/slim3-psr15:

composer require bnf/slim3-psr15 "^1.1"

安裝完成后,只需要幾行代碼就能集成 PSR-15 中間件。以下是一個簡單的例子,展示如何添加一個自定義的 PSR-15 中間件:

<?php<br>use PsrHttpMessageServerRequestInterface as Request;<br>use PsrHttpMessageResponseInterface as Response;<br>use PsrHttpServerMiddlewareInterface as Middleware;<br>use PsrHttpServerRequestHandlerInterface as RequestHandler;</p><p>require 'vendor/autoload.php';</p><p>$app = new SlimApp();</p><p>$container = $app->getContainer();<br>/<em> Supply a custom callable resolver, which resolves PSR-15 middlewares. </em>/<br>$container['callableResolver'] = function ($container) {</p><pre class="brush:php;toolbar:false">return new BnfSlim3Psr15CallableResolver($container);

};

/ Add a PSR-15 middleware /
$app->add(new class implements Middleware {

public function process(Request $request, RequestHandler $handler): Response {     $request = $request->withAttribute('msg', 'Hello');     return $handler->handle($request); }

});

// … (rest of your Slim 3 application code)

這段代碼中,$container[‘callableResolver’] 的設置是關鍵,它告訴 Slim 3 如何處理 PSR-15 中間件。 然后,我們使用 $app->add() 方法添加一個實現了 MiddlewareInterface 的中間件類。這個中間件簡單地向請求添加一個屬性 msg。

通過這個簡單的例子,我們可以看到,bnf/slim3-psr15 和 Composer 完美地協同工作,將 PSR-15 中間件的集成變得非常簡單。 不再需要編寫復雜的適配器代碼,維護成本也大大降低。

此外,Composer 還提供了許多其他功能,例如自動加載類、管理依賴關系等等。 如果你想更深入地學習 Composer,可以參考這個在線學習地址:學習地址 ,它會幫助你更好地理解和使用 Composer。

總而言之,使用 Composer 和 bnf/slim3-psr15 極大地簡化了 Slim Framework 3 中 PSR-15 中間件的集成,提高了開發效率和代碼的可維護性。 它不僅解決了我的燃眉之急,也讓我對 Composer 的強大功能有了更深刻的認識。 強烈推薦給所有使用 Slim Framework 3 的開發者!

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享