ngomafortuna / route-system-simple
Simple route management system (Sistema simples de gerenciamento de rotas)
Requires
- php: >=8.0
README
Simple route management system (Sistema simples de gerenciamento de rotas)
Install
composer require ngomafortuna/route-system-simple
Require
Necessary PHP 8.0 or more (Necessário PHP 8.0 ou superior)
Exemple
Introdution
I will illustrate with a project with the following structure (Vou exemplificar com um projecto com a seguite extrutura):
- cacutenews
- public
- resources
- library
- views
- src
- controllers
- models
- services
Start
Create the root directory cacutenews
, enter the created directory and run the command composer init
(Criar o directorio raiz cacutenews
, entrar no directório criado e executar o comando composer init
).
Edit the composer.json
file, just the prs-4
block, i.e. align "App\\": "src/"
(Editar o arquivo composer.json
, apenas o bloco da prs-4
ou seja alinha "App\\": "src/"
):
"autoload": { "psr-4": { "App\\": "src/" } },
Still with composer install the component composer require ngomafortuna/route-system-simple
(Ainda com composer intalar o componete composer require ngomafortuna/route-system-simple
).
Update composer (Actualizar o composer composer dump-autoload
).
Create the index.php
file in the public
directory and paste the code (Criar o arquivo index.php
directório public
nele cole o código):
use Ngomafortuna\RouteSystemSimple\Route; define("PATH", dirname(__FILE__, 2)); // set 1 if index file is in root dir define("URL", $_SERVER['HTTP_HOST']); define("VIEWS", PATH . '/resources/views'); // path views dir define("MAINDIR", PATH . '/src'); // path of the source code dir src define("MAINAME", 'App'); // App is the dir of namespace, from composer.json require_once PATH . '/vendor/autoload.php'; (new Route)->index();
On dir cacutenews/vendor/ngomafortuna/route-system-simple/test/controllers/
copy the files HomeController.php
, NotFoundController.php
end AboutController.php
(No directorio cacutenews/vendor/ngomafortuna/route-system-simple/test/controllers/
copie os arquivos HomeController.php
, NotFoundController.php
e AboutController.php
).
Past to dir cacutenews/src/controllers/
(Cole-os no directório cacutenews/src/controllers/
).
On dir cacutenews/vendor/ngomafortuna/route-system-simple/test/views/
copy the files error.php
, home.php
end master.php
(No directorio cacutenews/vendor/ngomafortuna/route-system-simple/test/views/
copie os arquivos about.php
, error.php
, home.php
e master.php
).
Past to dir cacutenews/resources/views/
(Cole-os no directório cacutenews/resources/views/
).
Start project
In terminal access root dir cacutenews
end execute this command (No terminal acesse o directório raiz cacutenews-
e execute o comando abaixo):
php -S localhost:8000 -t public
In browser write http://localhost:8000
Did it work? (Funcionou?)
If it doesn't work, interpret the error returned and correct it (Caso não funcione interprete o erro retornado e corrija-o).
Create new routes
To add new routes follow these steps: (Para adicionar novas rotas siga os seguintes passos:)
- Create the link on one of the pages or in the menu, for example (Crie o link em uma das páginas ou no menu, por exemplo):
<li><a href="/notice">Notícias</a></li>
- Create the route controller in
src/controllers/
with nameNoticeController.php
code for the controller (Crie o controller da rota emsrc/controllers/
com nomeNoticeController.php
código para o controller):
<?php namespace App\controllers; use Ngomafortuna\RouteSystemSimple\Controller; class NoticeController extends Controller { private array $notices = [ 'name'=>'Desporto', 'slag'=>'desporto', 'description'=>'Descrição sobre desporto' ]; public function index(): void { $this->view->render('notices', [ 'title' => 'Notícias', 'description' => 'Saiba tudo o acontece no Caute apartir daqui.' ]); } public function show(string $slug): void { $slug = $slug; $notice = $this->notices; $this->view->render('notices', [ 'title' => $notice['title'], 'description' => $notice['description'] ]); } }
- Create in
cacutenews/resources/views/
the viewsnotices.php
andnotice.php
with content (Criar emcacutenews/resources/views/
as viewsnotices.php
enotice.php
com conteúdo):
<h1><?= $title ?></h1> <p><?= $description ?></p>
To create other routes, just follow the same steps (Para criar outras routas é só seguir os mesmos passos).