Lazymephp - это маленький и прост в изучении/использовании PHP -структуры, которые я использовал в течение довольно долгого времени, с успехом, и у этого есть несколько хороших функций:
Идея Lazymephp состоит в том, чтобы позволить мне быть ленивым, поэтому для того, чтобы помочь в этой задаче, ей нужно только настроить правильную базу данных с ее таблицами и отношениями между ними.
Единственное ограничение заключается в том, что вам действительно нужно иметь основной ключ в каждой таблице.
Если структура базы данных должна быть изменена (добавлена/удалена столбцов, вообще), вы всегда можете регенерировать весь код (с некоторыми мер предосторожности).
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
Теперь он запустит начальный конфигуратор в командной строке, где вам нужно заполнить следующие элементы:
Далее вы можете бежать
php LazyMePHP build
Если вы запускаете этот инструмент после начального поколения и внесли изменения в сгенерированные формы, API или классы (в любом случае, вы не должны менять сгенерированные классы), ваши изменения могут быть потеряны, этот инструмент основан на таблице, поэтому, если вы изменили какую -то конкретную форму таблицы или API, не выбирайте его.
После этого у вас будет список ваших таблиц базы данных, где вы можете выбрать, что строить, и некоторые другие параметры: - D : Descriptors Table Descriptors - C : Custlect Classes - F : Form Forms - A : API - E : Включите регистрацию после этого. Он перечисляет все таблицы, и вы можете выбрать все, используя 'A' или выбрать один или несколько, Comma Specated (1,4,5 ... и он будет создавать выбранные варианты. Это то же самое для всех классов, форм и API.
Если все прошло хорошо, у вас будет рабочий индекс с некоторыми основными функциональными возможностями.
php LazyMePHP serve
и перейти к
http://localhost:8080
| Пользователь |
|---|
| PK ID |
| FK CountryId |
| Имя |
| Возраст |
| Страна |
|---|
| PK Countryid |
| Страна |
Наличие pk country.countyid -> fk user.countryid
Каждая сгенерированная таблица будет иметь форму, которая работает следующим образом:
## 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/ # выведет все пользователи информации в формате JSON
http: // localhost: 8080/api/user/? findbynamelike = john & limit = 10 # выведет все пользователи информации в формате JSON, который соответствует критериям и ограничивает 10 до 10
http: // localhost: 8080/api/user/123 # выведет информацию пользователя 123 в формате JSON
Да, это правда! Тем не менее, вы можете настроить его, чтобы выявить только те столбцы, которые вы хотите (по умолчанию), редактируя файл
/api/src/RouteAPI.php
это генерируется коммунальными услугами. Для каждой таблицы создается массив столбцов и жестко кодируется в этом файле, и если имя столбца присутствует внутри этого массива, данные обнажаются, в противном случае оно не показано, и, кстати, безопасность не является ответом Lazymephp.
Когда эта опция включена, в вашу базу данных добавлено 3 таблицы, которые зарегистрируют каждое изменение, сделанное в базу данных. Единственная конфигурация, которую необходимо сделать, - это редактировать
/src/Configuration/Configurations.php
и определить, что будет зарегистрирована пользовательской авторитетом в качестве владельца изменения в базе данных
// ACTIVITY LOG
$CONFIG['APP_ACTIVITY_LOG']=1;
$CONFIG['APP_ACTIVITY_AUTH']=$_SESSION['user_logged'];
Viewer находится под /журналом и показывает список запросов, упорядоченных Date Desc, и есть некоторые фильтры, которые можно использовать. Это не полный зритель, вы можете увидеть его в качестве примера для расширения (но он работает довольно хорошо)
Грань