cloud_download Stáhnout

Novinky

Gephart 0.6

01. 05. 2018

Verze 0.6 se nese ve znamení úprav designu administrace a refactoringu typů položek v generátoru.

Jednotlivé typy jako třeba "text", "bool", "textarea" jsou reprezentovány samostatnými objekty a lze pomocí eventu "Admin\Generator\Service::HOOK_EVENT" přidávat další dle osobních potřeb.

Nejprve tedy vytvoříte vlastní typ. Například:

<?php # /src/App/My/MyType.php

namespace App\My;

use Admin\Generator\Type\TypeInterface;

final class MyType implements TypeInterface
{
    public function getName(): string
    {
        return "my-custom-type";
    }

    public function getEntityProperty(): string
    {
        return <<<EOL
    /**
     * @var string
     *
     * @ORM\Type TEXT
     * @ORM\Column {{ item.slug }}
     * @ORM\Translatable
     */
    private \${{ item.slug }} = "";
    
EOL;

    }

    public function getEntityMethods(): string
    {
        return <<<EOL
    /**
     * @return string
     */
    public function get{{ item.slugInCamel }}(): string
    {
        return \$this->{{ item.slug }};
    }

    /**
     * @param string \${{ item.slug }}
     */
    public function set{{ item.slugInCamel }}(string \${{ item.slug }})
    {
        \$this->{{ item.slug }} = \${{ item.slug }};
    }
    
EOL;
    }

    public function getSet(): string
    {
        return <<<EOL
        \${{ module.slugSingular }}->set{{ item.slugInCamel }}(\$data["{{ item.slug }}"]);
EOL;
    }

    public function getForm(): string
    {
        return <<<EOL
            <div class="form-group">
                <label for="form_edit_{{ item.slug }}">{{ item.name }}</label>
                <textarea class="form-control" name="{{ item.slug }}" rows="10" id="form_edit_{{ item.slug }}">{{ "{{" }} {{ module.slugSingular }}.{{ item.slugInCamel }} {{ "}}" }}</textarea>
            </div>
EOL;

    }

    public function getShow(): string
    {
        return <<<EOL
                        {{ "{{" }} {{ module.slugSingular }}.{{ item.slugInCamel }} {{ "}}" }}
EOL;

    }

    public function getPriority(): int
    {
        return 500;
    }
}

Následně odchytit event a vlastní typ zaregistrovat:

<?php # /src/App/My/MyListener.php

namespace App\My;

use Admin\Generator\Service\Types;
use Gephart\EventManager\Event;
use Gephart\EventManager\EventManager;

class MyListener
{

    public function __construct(EventManager $event_manager)
    {
        $event_manager->attach(Types::HOOK_EVENT, [$this, "registerMyType"]);
    }

    public function registerMyType(Event $event)
    {
        $types = $event->getParam("types");
        $types[] = MyType::class;
        $event->setParams(["types" => $types]);
    }
}

V poslední řadě nelze zapomenout listener odchytávají funkci zaregistrovat:

<?php # /web/index.php

use Gephart\Framework\Kernel;
use Gephart\Http\RequestFactory;

include_once __DIR__ . "/../vendor/autoload.php";

$request = (new RequestFactory())->createFromGlobals();

$kernel = new Kernel($request);

$kernel->registerServices([
    \App\My\MyListener::class
]);

$response = $kernel->run();
echo $kernel->render($response);

Gephart 0.5

13. 10. 2017

Nejzásadnější změnou je nově použití fasád a PSR7 pro HTTP request a response.

Fasády slouží k jednoduššímu přístupu k nejpožívanějším službám. Jde o jakýsi obal nad existující službou dostupný přes statickou třídu.

Například službu request dostupnou přes dependency injection kontejner jako Psr\Http\Message\ServerRequestInterface lze získat snadněji než vytažením z kotenjneru:

<?php

class DefaultController()
{
    public function __construct(\Psr\Http\Message\ServerRequestInterface $request)
    {
        $this->request = $request;
    }

    public function index()
    {
        $queryParams = $this->request->getQueryParams();
    }
}

Gephart 0.4

14. 09. 2017

Nová verze se nese v duchu dvou hlavních změn:

  1. Vzhledové úpravy od domovské stránky až po generátor kódu
  2. Měřič kvality kódu

Ve vývojové liště se nově zobrazuje procentuální hodnota kvality kódu. Při každém pročistění cache dojde k nové analýze zdrojového kódu ve složce src.

Metriky jsou použity následovné:

U tříd:

MetrikaZkratkaLimit
Efferent Coupling / Počet odchozích závislostíce50
Depth of Inheritance Tree / Hloubka zanoření ve stromu dědičnostidit6
Number of Methods / Počet metodnom20

U metod:

MetrikaZkratkaLimit
Cyclomatic Complexity Number / Cyklomatická složitostccn15
Lines of Code / Řádků kóduloc25

Procentuální překročení limitu ubírá ze 100%.

Celkové hodnocení je hodnocení nejslabšího článku.

Příklad:


Generátor kódu

09. 06. 2017

Vytvořil jsem speciální edici frameworku Gephart, která obsahuje základní generátor kódu, pro snadnější tvorbu CRUDu.

Principiálně to funguje tak, že si naklikáte modul (entitu) a atributy a následně vygenerujete: entitu, repozitář, tabulku v databázi, controller a šablonu pro výpis a editaci.

Lze si tak naklikat naprosto základní administraci a díky tomu, že kód je vygenerovaný, lze v určitém bodě přestat generátor používat a kód si upravit podle potřeb.

Celý popis: gephart.cz/generator.html


Nové komponenty - Sessions, Language, ORM a Security

06. 04. 2017

Během poslední pár dní jsem zveřejnil několik komponent, které dávají frameworku větší smysl.

ORM je hodně jednoduché a plánuji velký refaktoring, ale způsob použití zůstane stejný, ke změnám dojde pouze na pozadí.

Popis použití jednotlivých komponent najdete v dokumentaci.


Nový Framework Kernel

02. 04. 2017

V hlavní souboru (tedy /web/index.php) jsou nově věškeré inicializace obaleny třídou Kernel, takže vypadá mnohem lépe:

<?php

include_once __DIR__ . "/../vendor/autoload.php";

$kernel = new Gephart\Framework\Kernel();
$kernel->run();
To neznamená, že jsme nově o něco ochuzeni! Naopak se třeba nově služby registrují krásně přes metodu $kernel->registerServices([...]).

Spuštěn web

25. 03. 2017

Po delším usilí byla spuštěna první verze webu.