Ohiko zereginak
Dokumentu honek Osumi Framework 9.10-en ohiko zereginak konpontzeko modu kanonikoa erakusten du.
Adibide guztiek honako hau erabiltzen dute:
- PHP 8.5+
declare(strict_types=1);- Tipatze zorrotza ahal den guztietan
1. JSON amaiera-puntu sinple bat sortu
ORoute::get(
'/api/ping',
PingComponent::class
);
class PingComponent extends OComponent {
public string $status = 'ok';
}
{
"status": {{ status | plain }}
}
2. Sarrera DTO baten bidez jaso
class CreateUserDTO extends ODTO {
#[ODTOField(required: true)]
public ?string $name = null;
#[ODTOField(required: true)]
public ?string $email = null;
}
class CreateUserComponent extends OComponent {
public string $status = 'ok';
/**
* Create a user from validated input.
*
* @param CreateUserDTO $dto Request DTO.
*
* @return void
*/
public function run(CreateUserDTO $dto): void {
if (!$dto->isValid()) {
$this->status = 'error';
return;
}
$user = new User();
$user->name = $dto->name;
$user->email = $dto->email;
$user->save();
}
}
3. Amaiera-puntu bat autentifikazioarekin babestu
ORoute::get(
'/api/profile',
ProfileComponent::class,
[
OMiddleware::PHASE_BEFORE => [
LoginMiddleware::class
]
]
);
Argitaratutako balio bat irakurtzeko:
$id_user = $req->getMiddlewareValue(
'Login',
'id'
);
Edo zuzenean DTO eremu bati esleitzeko:
#[ODTOField(
required: true,
middleware: 'Login',
middlewareProperty: 'id'
)]
public ?int $idUser = null;
4. URL parametro bat irakurri
ORoute::get(
'/user/:id',
UserComponent::class
);
$id = $req->getParamInt(
'id'
);
5. Zerbitzu bat osagai batean erabili
class UserService extends OService {
/**
* Return all users.
*
* @return array<int, User> Users.
*/
public function getAll(): array {
return User::where([]);
}
}
6. Modelo bat gorde edo eguneratu
$user = new User();
$user->name = 'Alice';
$user->email = 'alice@mail.com';
$user->save();
$user = User::findOne([
'id' => 1
]);
if ($user !== null) {
$user->name = 'Eguneratutako izena';
$user->save();
}
7. Modelo-zerrenda bat itzuli
public ?UserListComponent $list = null;
/**
* Load users.
*
* @return void
*/
public function run(): void {
$this->list = new UserListComponent();
$this->list->list = User::where([]);
}
8. Fitxategien igoerak kudeatu
Erabili ORequest::getFile() igotako fitxategia lortzeko eta baliozkotu mugitu aurretik.
Ikusi recipes/uploads.md adibide osoetarako.
9. Layout pertsonalizatu bat erabili
ORoute::layout(
MainLayoutComponent::class,
static function (): void {
ORoute::get(
'/home',
HomeComponent::class
);
}
);
Middlewareak layout(), prefix() eta group() bidez sortutako ibilbide-taldeei ere aplika dakizkieke.
10. Balidazio-erroreak kudeatu
if (!$dto->isValid()) {
$this->status = 'error';
$this->errors = $dto->getValidationErrors();
return;
}
Laburpena
9.10ko eredu kanonikoak:
- DTOak sarrera tipatu eta balioztaturako.
- Middlewareak eskaera/erantzun logika zeharkakorako.
- Middleware testuingurua zerbitzariaren konfiantzazko balioetarako.
- Zerbitzuak negozio-logikarako.
- Osagai arinak orkestraziorako.
- Modelo-osagaiak irudikapenerako.
- Routing bidez konfiguratutako layout-ak.