Osumi Framework
es en eu v9.8.5 GitHub

Osagaiak

Osumi Framework-eko osagaiak txantiloi bat errendatzen duten kode zati txiki eta berrerabilgarriak dira. Osagai bat honako hauek osatzen dute:

Osagai instantzia bat sortzen da, propietateak esleitzen zaizkio eta gero osagaia errendatzen da, normalean render() bidez edo objektua kate batera bihurtuz.


Oinarrizko osagaien egitura

Osagai-klasea

<?php declare(strict_types=1);

namespace Osumi\OsumiFramework\App\Component\Email\LostPassword;

use Osumi\OsumiFramework\Core\OComponent;

class LostPasswordComponent extends OComponent {
  public ?string $token = null;
}

Txantiloi-fitxategia

<div>
  Token: {{ token }}
</div>

Ezaugarri aurreratuak

Eduki mota goiburu automatikoak

Osagai bat URL baten ekintza nagusi gisa erabiltzen denean, framework-ak automatikoki bidaltzen du dagokion Content-Type goiburua txantiloiaren fitxategi-luzapenaren arabera:

Osagaien habiaratzea

Osagaiak kateatu edo habiaratu daitezke, osagai txikiagoak berrerabiltzeko.

<?php declare(strict_types=1);

namespace Osumi\OsumiFramework\App\Component\Father;

use Osumi\OsumiFramework\App\Component\Child\ChildComponent;
use Osumi\OsumiFramework\Core\OComponent;

class FatherComponent extends OComponent {
  public ?ChildComponent $child = null;

  public function run(): void {
    $this->child = new ChildComponent();
    $this->child->name = 'Semearen izena';
  }
}

Txantiloiaren sintaxia eta sarbidea

  1. PHP txantiloiak (.php) PHP kode natiboa exekutatu dezakete eta propietate publikoak aldagai estandar gisa atzitu.
  2. Txantiloi estatiko/egituratuek (.html, .json, .xml) giltza bikoitzak erabiltzen dituzte: {{ variable_name }}.

run() metodoa (aukerakoa)

Osagai batek aukerako run() metodo bat defini dezake. Definituta badago, automatikoki exekutatzen da render() prozesuaren hasieran, txantiloia prozesatu aurretik datuak prestatzeko.

Osagaia ekintza gisa erabiltzen denean (aktibatutako bide baten emaitza gisa errendatutako osagaia), run() metodoak honako sinadura hauetako bat izan behar du:

public function run(): void
public function run(ORequest $req): void
public function run(MyDTO $dto): void

Portaera erabilitako sinaduraren araberakoa da:

ORequest klaseak jasotako datuak eskuratzeko metodoak eskaintzen ditu, hala nola formulario-balioak edo URLaren bidez jasotako parametroak:

Bide batek iragazki bat definituta badu, ORequest klaseak exekuzioaren emaitza atzitzeko moduak ere eskaintzen ditu:

public function run(ORequest $req): void {
  $login_filter = $req->getFilter('login');
  $filters = $req->getFilters();
}

Adibideak:

class BooksComponent extends OComponent {
  public array $books = [];

  public function run(): void {
    $this->books = ['A Liburua', 'B Liburua'];
  }
}
class GetBookComponent extends OComponent {
  public ?Book $book = null;

  public function run(ORequest $req): void {
    $id_book = $req->getParamInt('id');
    $this->book = Book::findOne(['id' => $id_book]);
  }
}

Aukera globaletara sartzea

Osagaiek aplikazioaren konfigurazioa, log-ak edo saio-datuak bezalako aukera globaletara sartzeko metodoak dituzte:


Osagaiak errendatzea

$cmp = new BooksComponent();
echo strval($cmp);

Txantiloi-pipeak

Osumi Framework-eko txantiloiek Angular estiloko pipeak onartzen dituzte, balioak txantiloiaren barruan zuzenean eraldatzeko aukera emanez.

Sintaxia

{{ value | pipeName }}
{{ value | pipeName:param }}
{{ value | pipeName:param1:param2 }}

Helburua

Pipeek formatua ahalbidetzen dute:

Pipeak barneko OPipeFunctions klaseak prozesatzen ditu.


Eskuragarri dauden pipeak

1. date

Data-kate bat (Y-m-d H:i:s formatua) formatu berri batean formateatzen du.

Sintaxia

{{ user.created_at | date }}
{{ user.created_at | date:"d/m/Y" }}
{{ user.created_at | date:"d-m-Y H:i" }}

Portaera

Formatu lehenetsia

d/m/Y H:i:s

2. number

Zenbakiak PHP-ren number_format() erabiliz formateatzen ditu.

Sintaxia

{{ price | number }}
{{ price | number:2 }}
{{ price | number:2:".":"," }}

Portaera


3. string

urlencode() aplikatzen dio kate bati.

Sintaxia

{{ user.name | string }}

Portaera

Adibidea:

John Doe → "John+Doe"

4. plain

Kate bat JSONerako balio seguru gisa kodetzen du, URL kodetzea aplikatu gabe.

Sintaxia

{{ user.name | plain }}

Portaera

Adibideak:

John Doe → "John Doe"
"Kaixo" esan zuen → "\"Kaixo\" esan zuen"

Pipe hau bereziki erabilgarria da JSON txantiloietan jatorrizko katearen balioa URL kodetzerik gabe mantendu nahi denean.


5. bool

Boolearrak bihurtzen ditu:

true
false
null

Sintaxia

{{ user.isAdmin | bool }}

Nola jokatzen duten pipeek JSON txantiloietan

Pipeek txantiloi egituratuetarako balio egokiak sortzen dituzte:


Adibideak

{
  "id": {{ user.id | number }},
  "name": {{ user.name | plain }},
  "slug": {{ user.slug | string }},
  "created": {{ user.created_at | date:"d/m/Y" }},
  "active": {{ user.active | bool }}
}

Pipeen laburpena

Pipe Helburua Oharrak
date Data-balioak formateatzea Maskara pertsonalizatuak onartzen ditu
number Zenbakizko balioak formateatzea Dezimalak eta bereizleak onartzen ditu
string Kateak URL gisa kodetzea Komatxoak gehitzen ditu
plain URL kodetu gabeko kateak JSONerako irteera segurua
bool Irteera boolearra normalizatzea true / false / null

Ereduari lotutako osagaiak

Osagaiek ereduaren ikuspegiak adierazten dituztenean, motatutako propietateak erabil ditzakezu.

namespace Osumi\OsumiFramework\App\Component\Model\User;

use Osumi\OsumiFramework\App\Model\User;
use Osumi\OsumiFramework\Core\OComponent;

class UserComponent extends OComponent {
  public ?User $user = null;
}

Praktika onak