LazyMephp es un marco PHP pequeño y fácil de aprender que he estado usando durante bastante tiempo, con éxito, y eso tiene algunas características agradables:
La idea detrás de LazyMephp es permitirme ser perezoso, por lo que para ayudar en esa tarea, solo necesita tener una base de datos adecuada configurada, con sus tablas y relaciones entre ellas.
La única limitación es que realmente necesita tener una clave principal en cada tabla.
Si la estructura de la base de datos debe cambiarse (columnas agregadas/eliminadas, lo que sea), siempre puede regenerar todo el código (con algunas precauciones).
git clone https://github.com/Peixinho/LazyMePHP myAwesomeProject
#optional, but I advise to start your own git repository, for many reasons...
cd myAwesomeProject && rm -rf .git
cd src/Ext
composer update (to get dependencies)
# run initial config
php LazyMePHP config
Ahora ejecutará el configurador inicial en la línea de comando, donde debe llenar los siguientes elementos:
A continuación, puedes correr
php LazyMePHP build
Si está ejecutando esta herramienta después de la generación inicial y ha realizado cambios en los formularios, API o clases generados (no debe cambiar sus clases generadas de todos modos), sus cambios podrían perderse, esta herramienta está basada en la tabla, por lo que si cambió algún formulario de tabla específico o API, no lo seleccione.
Después de esto, tendrá una lista de las tablas de su base de datos, donde puede seleccionar qué construir y algunas otras opciones: - D : Cambiar descriptores de tabla - C : Clases de compilación - F : Formularios de compilación - A : Build API - E : Habilitar registro después de esto Lista de todas las tablas, y puede seleccionar todas, utilizando 'A', o seleccionar uno o unos pocos, separados (1,4,5 ...) y construirá la opción seleccionada para usted. Esto es lo mismo para todas las clases, formularios y API.
Si todo salió bien, tendrá un índice de trabajo con alguna funcionalidad básica.
php LazyMePHP serve
y navegar a
http://localhost:8080
| Usuario |
|---|
| PK ID |
| FK countryid |
| Nombre |
| Edad |
| País |
|---|
| PK countryid |
| Nombre de campo |
tener pk country.countryid -> fk user.countryid
Cada tabla generada tendrá un formulario que funcione de la siguiente manera:
## Classes
Every table generated will have a class that works as follows:
- Each Table will have a Class File by default in /src/Classes/[Table Name].php
- All Classes will be in namespace LazyMePHPClasses
- All Class columns have getters and setters *Get*[Column Name], *Set*[Column Name]
- All Classes have Save method, if Id is provided when constructing object:
```
$user = new User(); $user->Save(); // Will act as an INSERT
...
$user = new User(123); $user->Save(); // Will act as an UPDATE
```
-All classes have a Delete method, if id was provided upon constructing object
- Foreign members can be built automatically
```
// Country
$pt = new LazyMePHPClassesCountry();
$pt->SetCountryName('Portugal');
$pt->Save();
// User
$user = new LazyMePHPClassesUser();
$user->SetName('Peter');
$user->SetAge('30');
$user->SetCountryId($pt->Getid());
$user->Save();
echo $user->GetId(); // e.g. 123 - id is the primary key in User Table
// Retrieving user data and changing it
$user = new LazyMePHPClassesUser(123);
echo $user->GetName(); // 'Peter'
$user->Setname('John');
$user->Save();
// Access Foreign members by uing Get[Column Name]Object
echo $user->GetCountryIdObject()->GetCountryName();
// And changing it
$user->GetCountryIdObject()->SetCountry('England'); // Of course, you are changing Country Name in Country Table
$user->GetCountryIdObject()->Save();
# Not building Foreign members
$user = new LazyMePHPClassesUser(5, false); // this won't query foreign tables
```
- Every class will have a *table*_list class, that allows you to select a list of that class type
- Every List have a *FindBy*[Foreign Column Name], *FindBy*[Foreign Column Name]*Like*, *OrderBy*[Foreign Column name], *GroupBy*[Foreign Column], *Limit*
```
$users = new LazyMePHPClassesUser_List();
$users->FindByNameLike('John');
$users->OrderByAge();
// As in regular classes, you can or not build foreign tables, by default is building them
foreach($users->GetList() as $u) { echo $u->GetName(); echo $u->GetCountryIdObject()->GetCountryName(); }
// Not building foreign members
foreach($users->GetList(false) as $u) ...
```
## API
Every table generated will have some routes created in src/api/RouteAPI.php, and they make use of the controllers of each table
- Accessible from /api/[Table Name]/ (.htaccess for apache, didnt bother with others)
http: // localhost: 8080/api/user/ # generará todos los usuarios información en formato JSON
http: // localhost: 8080/api/user/? findbynamike = John & limit = 10 # generará información de todos los usuarios en formato JSON que coincida con los criterios y limites a 10
http: // localhost: 8080/api/user/123 # generará información del usuario 123 en formato JSON
¡Sí, eso es cierto! Sin embargo, puede configurarlo para exponer solo las columnas que desea (todo por defecto) editando el archivo
/api/src/RouteAPI.php
Eso es generado por los servicios públicos. Para cada tabla, se crea una matriz de columnas y se codifica en ese archivo, y si el nombre de la columna está presente dentro de esa matriz, los datos están expuestos, de lo contrario no se muestra, y por cierto, la seguridad no es una responsabilidad de LazyMephp.
Cuando esta opción está habilitada, se agregan 3 tablas a su base de datos que registrará cada cambio realizado en la base de datos. La única configuración que necesita hacer es editar
/src/Configuration/Configurations.php
y defina cuál es el autenticación del usuario que se registrará como propietario del cambio en la base de datos
// ACTIVITY LOG
$CONFIG['APP_ACTIVITY_LOG']=1;
$CONFIG['APP_ACTIVITY_AUTH']=$_SESSION['user_logged'];
El espectador está /registrado y muestra la lista de solicitudes ordenadas por fecha de descremisión, y hay algunos filtros que se pueden usar. Este no es un espectador completo, puede verlo como un ejemplo para expandirse (pero funciona bastante bien)
MIT