Alpharooq MVC

// clone the repository

git clone https://github.com/alpharooq/alpharooq

// go into the repository

cd alpharooq

// alpharooq init

php rooq init

// alpharooq run server

php rooq server


Documentation

# تجهيز المشروع

لتجهيز المشروع لاول مره فانت تحتاج الي التعرف الي بعض الامور الهامه في النظام مثل في ملف app.php والتي ينتلق منها كل شئ مهم في المشروع

'key' => 'set_key'

كيفية اخراج مفتاح خاص بك من النظام .. يمكنك كتابه الامر التالي

php rooq key

هذا الامر سوف يقوم باخر نتيجه مثل 8d7f385e2dd12c2672a76d2467b0fef1 يمكنك استخدام هذه القيمه لتكون هي مفتاح التطبيق الخاص بك .. ليكون الكود بهذا الشكل

'key' => '8d7f385e2dd12c2672a76d2467b0fef1'

والان انت تحتاج الي اخراج ملفات العمل لكي تتمكن من انشاء مشروعك بنجاح لذلك نكتب الامر التالي وهو

php rooq init

سوف تلاحظ في مجلد العمل باخراج مجموعه من الملفات والمجلدات الاخري وانت الان جاهز للعمل علي نظامك الجديد

لتشغيل مشروعك بشكل مباشر من خلال rooq

php rooq server || php rooq server port 5464

اما اذا كنت سوف تقوم بتشغيل مشروعك من localhost .. فانت تحتاج الي تحرير ملف app.php واضافه عنوان URL الي القيمه url

'url' => 'http://localhost:3000/'
# الاتجاهات - Routes

والان نتحدث عن ثاني اهم ملف في النظام وهو routes.php والذي سوف يكون بشكل التالي

// routes
route::get('/',function(){
    controller('index.def@home');
});
route::other('/');
route::run();

وهذا شكل الملف الافتراضي والذي يعمل علي المسار /

تمرير البيانات

هنا سوف نقوم بتمرير id للمستخدم ومن خلال الدخول علي المسار التالي /user/1 وهنا سوف يكون العرض id المستخدم

route::get('/user/(.*)',function($id){
    echo 'user id' . $id;
});

ويمكن تمرير البيانات الي المتحكم (controller) ويمكنك اجراء مجموعه اوامر علي هذه البيانات التي تم تمريرها الي المتحكم

route::get('/user/(.*)',function($id){
    controller('index.def@home',[$id]);
});

ويكون شكل الدالة (function) بهذا الشكل

public function home ($id) {
    echo $id;

الاجراء post

route::post('/login',function(){
    controller('index.users@login');
});

استخدام other

وهنا نقوم باستخدام هذه الداله (function) هي تقوم بالرجوع الي القيمه المحددة كماهي في المثال الاول وهو يقوم بتحويل علي هذا المسار في حاله طلب مسار غير معروف لديك

# المتحكم - Controller

نعمل مع العقل المدبر والمسؤل عن عرض البيانات والتحكم فيها والتواصل مع قواعد البيانات


إنشاء متحكم جديد (New Controller)

php rooq mkcontroller index users
  • index هو اسم التطبيق .. يجب تحديد اسم التطبيق من اجل انشاء متحكم لهذا التطبيق
  • users هو اسم المتحكم الجديد

سوف يكون اسم الملف بهذا الشكل controller.users.php ولكن بالداخل الملف يكون

class controllerUsers extends controller
{ ...

يكون اول حرف من اسم المتحكم كبير (capital)


استدعاء المتحكم

ويمكنك استدعاء المتحكم بكل سهولة من خلال الكود التالي

controller('index.users@get_info');

وهنا يكون اسم الداله (function) تكتب بعد علامة @ ويكتب قبل هذه العلامة اسم المتحكم .. كما في المثال السابق تمرير البيانات

controller('index.users@get_info',[1,'karim']);

شكل الداله (function) في المتحكم (controller)

public function get_info ($user_id,$username)
{ ...
# نموذج - model

لتحكم في model لا يختلف كثيرا عن التعامل مع المتحكم (controller) لكن هو يختلف في الوظيفة بشكل كبير .. وهي المحطة الاقرب للتعامل مع قواعد البيانات بشكل مباشر


الاستدعاء

model('index.users@login',['username','password']);

هنا نحن نقوم بالاتصال مع دالة (function) من المتحكم users لتسجيل الدخول وهنا نحن نقوم بارسال معلومات المستخدم الي الدالة

public function login ($user,$pass)
{ ...

ويمكنك استخدام هذه البيانات في اجراءات قواعد البيانات .

لكن المتحكم (controller) هو من يقوم باجراء جميع العمليات علي البيانات

# العرض - view

لعرض صفحاتك بتنسيق html فالامر بسيط وانت لن تكون في حاجه الي استخدام محرك عرض (view engine)


مجلد المحتوي

name_app/views

ويمكنك انشاء ملف جديد ويكون بامتداد users.php الامر بسيط


الاستدعاء

view('index.users');

يكتب اسم التطبيق ثم اسم الملف الموجود داخل مجلد views .. ويمكنك انشاء مجلدات اخري بشكل لا نهائي ولكن سوف تحتاج الي اضافه اسم المجلد


مثال

view('index.users.users');
view('index.users.edit');

index/views/users/user.php, index/views/users/edit.php


تمرير البيانات

لتمرير البيانات من المتحكم الي صفحات العرض ننقل البيانات في شكل مصفوفة

view('index.users',[
    'name' => 'karim'
]);
<h1><?= $name ?></h1>
# المكتبات - librarys

من الاكيد انت تحتاج الي ادراج كود خارجي ويكون علي شكل class فالامر بسيط ولكن من خلال المتحكم (controller) انت سوف تقوم بادراج المكتبة بالشكل التالي

class controllerUploads extends controller
{
    public function __construct ()
    {
        $this->UP = $this->library('UploadHandler');
    }
}

اين يمكن وضع ملف المكتبة UploadHandler

private/set_key/librarys/library.UploadHandler.php

ويجب ان يكون اسم الكلاس بهذا الشكل

class UploadHandler
{}

استخدام construct

يمكنك استخدام داله __construct للكلاس المدرج لتكون البرامتيرات علي شكل مصفوفة (Array)

class controllerUser extends controller
{
    public function __construct ()
    {
        $this->UP = $this->library('nameClass',['karim',21]);
    }
}
class nameClass
{
    public function __construct ($arr)
    {
        echo 'Name: ' . $arr[0] . ' Age: ' . $arr[1];
    }
}
# تعدد اللغات - language

اذا كنت تعمل علي مشروع وسوف يكون متعدد اللغات فلا مشكله في الامر بسيط .. ولكن سوف تقوم بانشاء ملف باسم اللغه والتكن علي سبيل المثال ar.php

يحتوي الملف علي مصفوفة والتي تحتوي علي مفتاح والقيمة

apps/<APPNAME>/language/ar.php


مثال

return [
    'Username' => 'اسم المستخدم',
]
<h1><?= lang('Username') ?></h1>

تعمل اللغه علي حسب القيمة الموجودة داخل ملف app.php

/*
# LANG
-> Put the language file name
*/
'lang' => 'ar',
'lang' => $_COOKIE['lang'],
# اوامر - rooq

يوجد مجموعه من الاوامر التي تعمل علي تسهيل العمل .. من اجل توفير الوقت


امر key

php rooq key

وهو يقوم بانشاء مفتاح جديد في حاله اذا كان ليس لديك اي مفتاح من قبل .. ويمكنك استخدام هذا المفتاح في التشفير ومهام اخري خاصه بالنظام


امر init

php rooq init

وهو المسؤول عن تهيئة بيئة العمل الخاصه بالنظام


امر server

php rooq server

وهنا تقوم بانشاء سيرفر لتشغيل المشروع

php rooq server port 8080

وهنا اذا كنت تريد الاتصال بمنفذ معين


امر mkapp

php rooq mkapp <name_app>

امر انشاء تطبيق جديد يمكنك اختيار اي اسم لتطبيقك الجديد


امر mkcontroller

php rooq mkcontroller <name_app> <name_controller>

وانشاء متحكم جديد من خلال الامر السابق ولكن نقوم بتحديد اسم التطبيق ثم اسم المتحكم


امر mkmodel

php rooq mkmodel <name_app> <name_model>

كذلك الأمر في انشاء نموذج جديد اسم التطبيق ثم اسم النموذج