LazyMephp est un cadre PHP petit et facile à apprendre / utiliser que j'utilise depuis un certain temps, avec succès, et qui a de belles fonctionnalités:
L'idée derrière LazyMephp est de me permettre d'être paresseuse, donc pour aider dans cette tâche, il n'a qu'à avoir une base de données appropriée, avec ses tables et ses relations entre elles.
La seule limitation est que vous avez vraiment besoin d'avoir une clé primaire dans chaque tableau.
Si la structure de la base de données doit être modifiée (colonnes ajoutées / supprimées, quoi que ce soit), vous pouvez toujours régénérer tout le code (avec quelques précautions).
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
Il exécutera désormais le configurateur initial dans la ligne de commande, où vous devez remplir les éléments suivants:
Ensuite, vous pouvez courir
php LazyMePHP build
Si vous exécutez cet outil après la génération initiale et que vous avez apporté des modifications aux formulaires générés, à l'API ou aux classes (vous ne devriez pas modifier vos classes générées de toute façon), vos modifications peuvent être perdues, cet outil est basé sur une table, donc si vous avez modifié un formulaire de table ou une API spécifique, ne le sélectionnez pas.
Après cela, vous aurez une liste de vos tables de base de données, où vous pouvez sélectionner quoi créer et d'autres options: - D : Modifications descripteurs de table - C : Classes de construction - F : Formulaires de construction - A : API Build - E : Activer la connexion après cela, il répertorie toutes les tables, et vous pouvez sélectionner tous, en utilisant `` une option ', ou sélectionner une ou quelques ou quelques, 1,4,5 ...) et il créera l'option sélectionnée pour vous. C'est la même chose pour toutes les classes, les formulaires et l'API.
Si tout s'est bien passé, vous aurez un index de travail avec des fonctionnalités de base.
php LazyMePHP serve
et naviguer vers
http://localhost:8080
| Utilisateur |
|---|
| ID PK |
| fk countryid |
| Nom |
| Âge |
| Pays |
|---|
| PK CountryId |
| Nom de compatriote |
avoir PK country.countryid -> fk user.countryid
Chaque tableau généré aura un formulaire qui fonctionne comme suit:
## 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 / # publiera toutes les informations des utilisateurs au format JSON
http: // localhost: 8080 / api / user /? findByNamelike = John & limite = 10 # publiera toutes les informations des utilisateurs au format JSON qui correspond aux critères et limites à 10
http: // localhost: 8080 / api / user / 123 # publiera les informations de l'utilisateur 123 au format JSON
Oui, c'est vrai! Cependant, vous pouvez le configurer pour exposer uniquement les colonnes souhaitées (toutes par défaut) en modifiant le fichier
/api/src/RouteAPI.php
qui est généré par les services publics. Pour chaque table, un tableau de colonnes est créé et codé en dur dans ce fichier, et si le nom de la colonne est présent à l'intérieur de ce tableau, les données sont exposées, sinon ce n'est pas affiché, et BTW, la sécurité n'est pas une responsabilité de LazyMephp.
Lorsque cette option est activée, 3 tables sont ajoutées à votre base de données qui enregistreront chaque modification apportée à la base de données. La seule configuration à faire est de modifier
/src/Configuration/Configurations.php
et définir ce que l'utilisateur à enregistrer en tant que propriétaire du changement dans la base de données
// ACTIVITY LOG
$CONFIG['APP_ACTIVITY_LOG']=1;
$CONFIG['APP_ACTIVITY_AUTH']=$_SESSION['user_logged'];
La visionneuse est sous / journalisation et affiche la liste des demandes commandées par Date DESC, et certains filtres peuvent être utilisés. Ce n'est pas un spectateur complet, vous pouvez le voir comme un exemple pour développer (mais cela fonctionne assez bien)
Mit