LazyMePHP ist ein kleines und leicht zu erlernen/benutztes PHP -Framework, das ich seit einiger Zeit mit Erfolg benutze, und das hat einige nette Funktionen:
Die Idee hinter LazyMephp ist, mir zu ermöglichen, faul zu sein. Um bei dieser Aufgabe zu helfen, muss sie nur eine ordnungsgemäße Datenbank mit seinen Tabellen und Beziehungen zwischen ihnen einrichten.
Die einzige Einschränkung ist, dass Sie in jeder Tabelle wirklich einen Primärschlüssel haben müssen.
Wenn die Struktur der Datenbank geändert werden muss (Spalten hinzugefügt/entfernt), können Sie immer alle Code (mit einigen Vorsichtsmaßnahmen) regenerieren.
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
Es wird nun den ersten Konfigurator in der Befehlszeile ausgeführt, in dem Sie die folgenden Elemente füllen müssen:
Als nächstes können Sie rennen
php LazyMePHP build
Wenn Sie dieses Tool nach der ersten Generation ausführen und Änderungen an generierten Formularen, API oder Klassen vorgenommen haben (Sie sollten Ihre generierten Klassen sowieso nicht ändern), können Ihre Änderungen verloren gehen. Dieses Tool basiert auf der Tabelle. Wenn Sie also ein bestimmtes Tabellenformular oder eine spezifische Tabellenform oder eine API geändert haben, wählen Sie es nicht aus.
Danach haben Sie eine Liste Ihrer Datenbanktabellen, in der Sie auswählen können, was erstellen und einige andere Optionen: - D : Änderungen Tabellendeskriptoren - C : Build -Klassen - F : Build -Formulare - A : API bauen - E : Aktivieren Sie die Protokollierung danach. Dies gilt für alle Klassen, Formen und API.
Wenn alles gut lief, haben Sie einen funktionierenden Index mit einer grundlegenden Funktionalität.
php LazyMePHP serve
und navigieren zu
http://localhost:8080
| Benutzer |
|---|
| PK ID |
| FK CountryId |
| Name |
| Alter |
| Land |
|---|
| PK CountryId |
| Landname |
PK Country.countryID -> FK User.countryID
Jede erzeugte Tabelle hat ein Formular, das wie folgt funktioniert:
## 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/ # gibt alle Benutzerinformationen im JSON -Format aus
http: // localhost: 8080/api/user/? findbynamelike = John & limit = 10 # gibt alle Benutzerinformationen im JSON -Format aus, das die Kriterien und Grenzen auf 10 entspricht
http: // localhost: 8080/api/user/123 # gibt Benutzer 123 Informationen im JSON -Format aus
Ja, das ist wahr! Sie können es jedoch so konfigurieren, dass nur die gewünschten Spalten (alle standardmäßig) durch Bearbeiten der Datei ausgesetzt werden
/api/src/RouteAPI.php
das wird durch die Dienstprogramme generiert. Für jede Tabelle wird in dieser Datei ein Array von Spalten erstellt und hartcodiert, und wenn der Spaltenname in diesem Array vorhanden ist, werden die Daten freigelegt, ansonsten ist es nicht gezeigt, und die Sicherheit ist keine Verantwortung von LazyMephp.
Wenn diese Option aktiviert ist, werden 3 Tabellen zu Ihrer Datenbank hinzugefügt, in der jede Änderung an der Datenbank registriert wird. Die einzige Konfiguration, die sie durchgeführt werden musste, ist das Bearbeiten
/src/Configuration/Configurations.php
und definieren
// ACTIVITY LOG
$CONFIG['APP_ACTIVITY_LOG']=1;
$CONFIG['APP_ACTIVITY_AUTH']=$_SESSION['user_logged'];
Der Betrachter befindet sich unter /protokolliert und zeigt die Liste der nach dem Datum bestellten Anfragen, und es gibt einige Filter, die verwendet werden können. Dies ist kein vollständiger Zuschauer, Sie können es als Beispiel für die Erweiterung sehen (es funktioniert jedoch recht gut)
MIT