Osumi Framework
es en eu v9.12.1 GitHub

Bideratzea

Osumi Framework-en bideratzea ORoute klaseak kudeatzen du. Klase horrek sarrerako HTTP eskaerak (URLak) ekintza gisa jarduten duten osagai espezifikoekin lotzen ditu.

Ibilbideak normalean src/Routes/ direktorioko PHP fitxategietan definitzen dira. Karpeta horretan hainbat fitxategi sor daitezke ibilbideak modu logikoan antolatzeko, adibidez modulu bakoitzeko fitxategi bat.

Erabiltzaile batek URL batera sartzen denean, ORoute-k ibilbidea aurkitzen du, Middleware pipeline eraginkorra ebazten du, osagaia instantziatzen du eta run() deitzen du, erabiltzaileak definitutako DTO bat, ORequest generiko bat edo parametrorik gabe, osagaiaren sinaduraren arabera.


Ibilbideak definitzea

Ibilbide bat definitzeko, erabili HTTP aditzei dagozkien ORoute metodo estatikoak: get(), post(), put() edo delete().

Oinarrizko sintaxia

use Osumi\OsumiFramework\Routing\ORoute;
use Osumi\OsumiFramework\App\Module\Home\Index\IndexComponent;

ORoute::get('/', IndexComponent::class);

Ibilbide-parametroak

get(), post(), put() eta delete() bezalako metodoek honako parametro hauek onartzen dituzte:


Middlewareak

Middlewareek eskaeraren bizi-zikloan parte hartzen dute hiru fasetan:

Ikusi /docs/eu/concepts/middlewares.md Middlewareen bizi-ziklo osoa eta emaitza-formatua ezagutzeko.

Adibidea:

use Osumi\OsumiFramework\App\Middleware\AuditMiddleware;
use Osumi\OsumiFramework\App\Middleware\LoginMiddleware;
use Osumi\OsumiFramework\App\Module\User\Profile\ProfileComponent;
use Osumi\OsumiFramework\Core\OMiddleware;
use Osumi\OsumiFramework\Routing\ORoute;

ORoute::post(
	'/profile',
	ProfileComponent::class,
	[
		OMiddleware::PHASE_BEFORE => [
			LoginMiddleware::class
		],
		OMiddleware::PHASE_AFTER_RESPONSE => [
			AuditMiddleware::class
		]
	]
);

Ibilbideak taldekatzea

Osumi Framework-ek ezaugarri komunak dituzten ibilbideak taldekatzea ahalbidetzen du.

Ibilbide-taldeei esleitutako Middleware definizioak habiaratutako taldeekin eta ibilbideko Middleware espezifikoekin metatzen dira.

Fase bakoitzean exekuzio-ordena hau da:

globala
↓
kanpoko taldea
↓
barneko taldea
↓
ibilbidea

1. Aurrizkiak

Aurrizkiak hainbat ibilbidek URL hasiera bera partekatzen dutenean erabiltzen dira. Habiaratu daitezke eta aurrizki bakoitza aktibo dagoenari gehitzen zaio.

use Osumi\OsumiFramework\App\Middleware\AdminAuthMiddleware;
use Osumi\OsumiFramework\Core\OMiddleware;

ORoute::prefix(
	'/api',
	static function (): void {
		ORoute::get('/health', HealthComponent::class);

		ORoute::prefix(
			'/admin',
			static function (): void {
				ORoute::post('/login', LoginComponent::class);
				ORoute::get('/me', MeComponent::class);
			},
			[
				OMiddleware::PHASE_BEFORE => [
					AdminAuthMiddleware::class
				]
			]
		);
	}
);

Horrek /api/health, /api/admin/login eta /api/admin/me erregistratzen ditu.

2. Layout-ak

Erabili ORoute::layout() hainbat ibilbidek egitura bisual bera partekatzen dutenean.

ORoute::layout(
	MainLayoutComponent::class,
	static function (): void {
		ORoute::get('/home', HomeComponent::class);
		ORoute::get('/contact', ContactComponent::class);
	}
);

layout() metodoak Middleware definizioak ere jaso ditzake hirugarren argumentu gisa.

3. Taldeak (aurrizkia + layout-a)

ORoute::group()-ek aurrizki bat eta layout bat konbinatzen ditu. Taldeak beste talde edo aurrizki batzuekin habiaratu daitezke.

ORoute::group(
	'/admin',
	AdminLayoutComponent::class,
	static function (): void {
		ORoute::group(
			'/users',
			UserLayoutComponent::class,
			static function (): void {
				ORoute::get('/profile', ProfileComponent::class);
			}
		);
	}
);

Aurreko ibilbidea /admin/users/profile helbidean erregistratzen da eta UserLayoutComponent erabiltzen du.

group() metodoak Middleware definizioak ere jaso ditzake laugarren argumentu gisa.

URL normalizazioa

ORoute-ren metodo estatiko guztiek URLak normalizatzen dituzte. Hasierako barrak bateratzen dira, barra errepikatuak bakarrera murrizten dira eta amaierako barrak kentzen dira, erroko / URLan izan ezik.

Adibidez:

ORoute::prefix('/api/', static function (): void {
	ORoute::prefix('//admin///', static function (): void {
		ORoute::get('//users/', UsersComponent::class);
	});
});

Horrek /api/admin/users erregistratzen du.


Ikuspegi estatikoak

Erabili ORoute::view() fitxategi estatiko bat edo txantiloi sinple bat zerbitzatzeko ekintza-osagai oso bat behar izan gabe.

ORoute::view('/about-us', 'about-us.html');

Ikuspegi estatikoen ibilbideek Middleware definizioak ere jaso ditzakete.


Ibilbideetako parametroak

URLek parametroak defini ditzakete :name sintaxia erabiliz.

ORoute::get('/user/:id', UserComponent::class);
ORoute::get('/location/:name', LocationComponent::class);

run(ORequest $req) erabiltzen duen osagai batek getParamInt('id') edo getParamString('name') bezalako metodoekin atzitu ditzake.


ORoute metodoen laburpena

Metodoa Deskribapena
get() GET ibilbide bat erregistratzen du.
post() POST ibilbide bat erregistratzen du.
put() PUT ibilbide bat erregistratzen du.
delete() DELETE ibilbide bat erregistratzen du.
view() Fitxategi estatiko bat zuzenean errendatzen duen ibilbidea erregistratzen du.
prefix() Ibilbideak aurrizki metagarri eta habiaragarri baten eta aukerako Middlewareen azpian taldekatzen ditu.
layout() Ibilbideak layout komun baten eta aukerako Middlewareen azpian taldekatzen ditu.
group() Ibilbideak aurrizki habiaragarri, layout eta aukerako Middlewareekin taldekatzen ditu.

Praktika onak