Laravel Facade, eller static access till ramverkets resurser

  • Författare
  • Meddelande
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11065
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Laravel Facade, eller static access till ramverkets resurser

Inlägg30 apr 2018, 12:11

Jag läste igenom Laravel Facade och blev lite sugen på att se hur det implementeras bakom kulisserna.

En kort historia är att det handlar om en specialiserad autoloader och användning av en magisk metod __callStatic()

Jag gjorde en implementation till Anax i Anax\Proxy, bara för att se hur det fungerar och om det är något jag gillar eller ej.

Man kan enklast se skillnaden i följande route, först visas routen med $app-varianten av kod (oophp-v4).
Kod: Markera allt
<?php
/**
* App specific routes.
*/

/**
* Show all movies.
*/
$app->router->get("movie", function () use ($app) {
    $data = [
        "title"  => "Movie database | oophp",
    ];

    $app->db->connect();

    $sql = "SELECT * FROM movie;";
    $res = $app->db->executeFetchAll($sql);

    $data["res"] = $res;

    $app->view->add("movie/index", $data);
    $app->page->render($data);
});


Sedan ser vi samma kod, skriven med en proxy-hantering för att nå de tjänster som ligger i ramverkets $di.
Kod: Markera allt
<?php
/**
* App specific routes.
*/
use \Anax\Proxy\DI\Db;
use \Anax\Proxy\DI\Router;
use \Anax\Proxy\DI\View;
use \Anax\Proxy\DI\Page;

/**
* Show all movies.
*/
Router::get("movie", function () {
    $data = [
        "title"  => "Movie database | oophp",
    ];

    Db::connect();

    $sql = "SELECT * FROM movie;";
    $res = Db::executeFetchAll($sql);

    $data["res"] = $res;

    View::add("movie/index", $data);
    Page::render($data);
});


Två olika sätt att koda samma sak.

Exemplet är enkelt och ger en liten bild av hur det kan användas. Den som är van vid $di och dependency injection kan vilja jämföra dess hanteringen med denna proxy-variant, och stilla fundera över för och nackdelar.

Jag kan nog se användningsområden för proxy-varianten, men jag är fortfarande lite kluven och avvaktande, men jag gillar ändå upplägget.

Det finns inget som hindrar att ett ramverk erbjuder en proxy kodningsmöjlighet. Sen får programmeraren välja väg.
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 22 gäster