1. Go to this page and download the library: Download laton/framework library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laton / framework example snippets
namespace App\Controller;
use Mbrianp\FuncCollection\Logic\AbstractController;
use Mbrianp\FuncCollection\Routing\Routing;
use Mbrianp\FuncCollection\Http\{Response, Request};
use Mbrianp\FuncCollection\Routing\Attribute\Route;
class ControllerName extends AbstractController
{
#[Route('/', name: 'index')]
public function method(): Response
{
// La vista se buscara en la carpeta que se defina en el .ini
return $this->render('vista.php', ['param1' => 'hola']);
}
/**
* Puedes injectar los parametros de la URL al metodo
* Es obligartorio tiparlo como string y ponerle al parametro
* el mismo nombre del parametro de la ruta
*
* Tambien por ejemplo puede injectar un objeto Request
* para obtener lo enviado por POST o GET, etc
*
* O un objeto routing para generar rutas
*
* No importa el orden de los parametros, puedes alternarlos como quieras
*/
#[Route('/{parametro}', name: 'index_con_parametro')]
public function metodo2(string $parametro, Request $request, Routing $routing): Response
{
// Response here
}
/**
* Si se indica una expresion regular dentro de <> en el parametro de la ruta
* significa que ese parametro debe cumplir con la expresion regular para que la ruta se active
* si no cumple se dara un error 404
*/
#[Route('/{nick<@\w+>}', name: 'profile')]
public function rutaFiltrada(string $nick): Response
{
}
}
use Mbrianp\FuncCollection\View\ViewHelper;
namespace App\Entity;
use Mbrianp\FuncCollection\ORM\Attributes\Column;
use Mbrianp\FuncCollection\ORM\Attributes\FilledValue;
use Mbrianp\FuncCollection\ORM\Attributes\Id;
class User
{
#[Id]
#[Column]
public ?int $id = null;
#[Column]
public string $name;
#[Column]
public string $lastname;
#[FilledValue(['name', 'lastname'])]
#[Column]
public string $fullname;
#[Column(unique: true)]
public string $email;
#[Column]
public string $password;
#[Column(type: 'json')]
public array $roles;
}
namespace App\Controller;
use App\Entity\User;
use Mbrianp\FuncCollection\Http\Response;
use Mbrianp\FuncCollection\ORM\ORM;
use Mbrianp\FuncCollection\ORM\SchemaGenerator;
class Controller
{
// Aqui se configura la ruta con #[Route]
public function createDatabase(ORM $orm, SchemaGenerator $schemaGenerator): Response
{
$schemaGenerator->createEntityTable(User::class);
// Lo mismo de arriba
//$orm->getSchemaGenerator()->createEntityTable(User::class);
return new Response('Content');
}
}
namespace App\Controller;
use App\Entity\User;
class AppController
{
public function register(EntityManager $manager): Response
{
$user = new User();
$user->name = 'Name';
$user->lastname = 'Lastname';
$user->email = '[email protected]';
$user->password = 'password';
// Insertar
$manager->persist($user);
// Response here.
}
}
namespace App\Entity;
use App\Repository\UserRepository;
use Mbrianp\FuncCollection\ORM\Attributes\Repository;
#[Repository(UserRepository::class)]
class User
{
// El mismo contenido de antes
}
namespace App\Repository;
use App\Entity\User;
use Mbrianp\FuncCollection\ORM\AbstractRepository;
class UserRepository extends AbstractRepository
{
public static function getRefEntity(): string
{
return User::class;
}
}
namespace App\Controller;
use App\Entity\User;
use App\Repository\UserRepository;
use Mbrianp\FuncCollection\Http\Response;
use Mbrianp\FuncCollection\ORM\EntityManager;
use Mbrianp\FuncCollection\Routing\Attribute\Route;
class AppController
{
// Aqui va la ruta
public function index(EntityManager $manager, UserRepository $repository): Response
{
// Lo mismo que injectar UserRepository
$repository = $manager->getRepository(User::class);
// Metodos
// Encontrar por el ID
$repository->find(1);
// Todos los registros de la base de datos
$repository->findAll();
// Filtrar la busqueda
$repository->findBy(['country' => 'Cuba']);
// Filtrar la busqueda pero con un solo resultado
$user = $repository->findOneBy(['country' => 'Cuba']);
// Cambiar de valor la propiedad que se quiere actualizar
// Todas las demas propiedades tendran de valor el resultado de
// la base de datos con el metodo findOneBy
$user->country = 'Italy';
// Va a actualizar dado que el Id esta definido
// Si el Id no esta definido pues insertara el registro
// Tambien puedes actualizar un registro sin buscarlo en la base de datos
// Solamente crear el objeto y asegurar que el ID sea del registro que se va a actualizar
$manager->persist($user);
// Para eliminar
$manager->remove($user);
// Response here
}
/**
* Otra forma de hacer consultas es exigiendo la entidad como parametro
* Esto funcionara siempre y cuando en la ruta haya un parametro que coincida con una propiedad (que sea columna) en la entidad
* Por ej, aqui, en la ruta, hay parametro, id por lo tanto se va a buscar un usuario con el id que se pase en la URL
*
* El parametro es obligado tiparlo para asi saber en que tabla buscar
* y tambien debe aceptar null como valor en case de que no se encuentre ningun resultado
*/
#[Route('/profile/{id<\d+>}', name: 'profile')]
public function profile(?User $user): Response
{
return new Response(\var_export($user, true));
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.