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 أو الفئات (يجب ألا تقوم بتغيير الفصول التي تم إنشاؤها على أي حال) ، فقد تضيع تغييراتك ، فهذه الأداة تعتمد على الجدول ، لذلك إذا قمت بتغيير نموذج جدول محدد أو واجهة برمجة تطبيقات ، فلا تحددها.
بعد ذلك ، سيكون لديك قائمة بجداول قاعدة البيانات الخاصة بك ، حيث يمكنك تحديد ما يجب إنشاؤه وبعض الخيارات الأخرى: - D : تغيير واصفات الجدول - C : Build Classes - F : Build Forms - A : Build API - E : تمكين التسجيل بعد ذلك ، ستقوم بإدراج جميع الجداول ، ويمكنك تحديدها ، باستخدام "A" ، أو تحديد واحد أو عدد قليل ، مفصولًا عن الوصايا (1،4،5 ...). هذا هو نفسه بالنسبة لجميع الفئات والأشكال وواجهة برمجة التطبيقات.
إذا سارت الأمور على ما يرام ، سيكون لديك فهرس العمل مع بعض الوظائف الأساسية.
php LazyMePHP serve
وانتقل إلى
http://localhost:8080
| مستخدم |
|---|
| معرف PK |
| fk countryid |
| اسم |
| عمر |
| دولة |
|---|
| PK Countryid |
| اسم البلد |
وجود pk country.countryid -> 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
http: // localhost: 8080/api/user/123 # سوف يخرج المستخدم 123 معلومات بتنسيق JSON
نعم ، هذا صحيح! ومع ذلك ، يمكنك تكوينه لفضح الأعمدة التي تريدها فقط (كل ذلك افتراضيًا) عن طريق تحرير الملف
/api/src/RouteAPI.php
التي يتم إنشاؤها بواسطة المرافق. بالنسبة لكل جدول ، يتم إنشاء مجموعة من الأعمدة وترميزها في هذا الملف ، وإذا كان اسم العمود موجودًا داخل هذا الصفيف ، فإن البيانات مكشوفة ، وإلا
عند تمكين هذا الخيار ، تتم إضافة 3 جداول إلى قاعدة البيانات الخاصة بك والتي ستسجل كل تغيير تم إجراؤه على قاعدة البيانات. التكوين الوحيد الذي يجب القيام به هو التحرير
/src/Configuration/Configurations.php
وتحديد ما هو مصادف المستخدم ليتم تسجيله كمالك للتغيير في قاعدة البيانات
// ACTIVITY LOG
$CONFIG['APP_ACTIVITY_LOG']=1;
$CONFIG['APP_ACTIVITY_AUTH']=$_SESSION['user_logged'];
العارض تحت /تسجيل ويظهر قائمة الطلبات المطلوبة حسب تاريخ DESC ، وهناك بعض المرشحات التي يمكن استخدامها. هذا ليس عارضًا مميزًا بالكامل ، يمكنك رؤيته كمثال للتوسع فيه (لكنه يعمل بشكل جيد)
معهد ماساتشوستس للتكنولوجيا