Janggelan هو إطار PHP غير متوقع يمنحك سهولة. إنها بسيطة ، لكنها قوية وممتعة للاستخدام. تمامًا مثل الأطر الأخرى ، لن تواجه صعوبة عند محاولة فهم Janggelan.
تم تصميم Janggelan والتركيز على أساس مفهوم MVC. لذلك ، نحاول تجنب دمج نظام MVC مع أدوات أخرى قد تساعدك في التطوير ، لأنه يمكن أن يقلل من الأداء. نحن نبقى بالطبع ، للمساعدة في تطورك ، ولكن سيأتي مع أغطية مختلفة.
يرجى قراءة الوثائق لمزيد من المعلومات.
نحن نعلم أننا لا نستطيع إنهاء هذا الإطار بشكل مثالي ، وربما لا يتوافق مع ما تريد. لكننا نحاول دائمًا إنهاءها بشكل أفضل ونجعلها غير متوقعة بالنسبة لك. يمكنك المساهمة معنا.
أضاف بعض الأدوات الجديدة.
أعد كتابة جميع نصوص Janggelan لأداء أفضل جديد.
تقليل بعض أحمال الخادم.
تمت إضافة بعض طرق Model الجديدة: where() ، exec() ، execute() .
وثائق إضافية.
تستخدم التخزين المؤقت والضغط gZip على .htaccess .
PHP 7
تمديد PDO PHP
قم بتنزيل ملف Janggelan ، واستخرجه إلى دليل التطبيق الخاص بك.
إذا كنت ترغب في نشر أو تثبيت Janggelan للاستضافة المشتركة ، فإن الطريقة الأكثر أمانًا للقيام بها هي وضع ملفات Janggelan ودلائلها داخل server root ، ونقل جميع محتويات المجلد public إلى public_html أو www .
ستقوم بتشغيل طلبك من دليل public / public_html / www .
إذا وجدت مشاكل بعد التثبيت ، يرجى التحقق من أذونات الملف.
__ backend/
|__ .secrets/
|__ config/
|__ framework/
|__ global/
|__ register/
|__ vendor/
|__ autoload.php
|__ composer.json
|__ force.uri
__ public/
|__ assets/
|__ .htaccess
|__ index.php
__ worksheet/
|__ controllers/
|__ model/
|__ providers/
|__ tools/
|__ views/
|__ requests.php
في المرة الأولى ، يتيح تشغيل Janggelan في الخادم الخاص بك. تأكد من أن نظامك قد فعل مع System Requirements installation أعلاه.
انتقل إلى دليل التطبيق الذي تم وضع ملفات Janggelan. أدخل المجلد public . على سبيل المثال ، في Linux ، يمكنك القيام بذلك:
cd /var/www/html/your_application/publicافتح خادم مضيف محلي:
php -S localhost:8000أو يمكنك القيام أعلاه مباشرة مع هذا الأمر:
php -S localhost:8000 -t /var/www/html/your_application/publicالآن ، افتح متصفحك ، وزيارة LocalHost: 8000.
في Janggelan سوف تسمي هذا requests . في أطر أخرى PHP مثل Laravel ، هذا يسمى routes . تم التعامل مع كل طلبات في Janggelan على ورقة worksheet/requests.php . لإنشاء طلب جديد ، انتقل إلى هذا الملف. هناك سترى مثال request مثل هذا:
$ this -> request ( ' GET / @Hello::world ' ); يعني المثال أعلاه: "طلب uri / مع GET طريقة الطلب. إذا كان المستخدم زيارة / و URI صالحًا ، فسيتم إعادة توجيهه والمضي قدماً في وحدة Hello مع world / وظيفة". بناءً على المثال ، يمكنك الآن إنشاء طلباتك المخصصة مع هذه الخيارات: (يتم فصل الوسيطة أو المعلمة 1 بواسطة space ):
// Redirected to Controller.
// Request method can be 'GET' or 'POST'
$ this -> request ( ' GET /home @Hello::world ' );
// Redirected to View.
$ this -> request ( ' GET /home (viewName) ' );
// Redirected to Controller with Protected Rule 'login'.
$ this -> request ( ' GET /home @Hello::world !!login ' );
// Redirected to View with Protected Rule 'login'.
$ this -> request ( ' GET /home (viewName) !!login ' );
// Will proceed the Closure or Callback directly.
$ this -> request ( ' GET /home ' , function ()
{
// Do some stuff...
});
// Will proceed the Closure or Callback directly with Protected Rule 'login'.
$ this -> request ( ' GET /home !!login ' , function ()
{
// Do some stuff...
}); سوف تتعلم المزيد عن Protected Rule لاحقًا. لاحظ ، استخدم Closure أو Callback فقط عندما تكون في الاختبار. لقد أوصينا دائمًا باستخدام View أو Controller كإعادة توجيه.
يتم وضع وحدة Controller في worksheet/controllers . حاول إنشاء Controller جديدة مع إنشاء ملف جديد ، افترض أن اسم الملف هو MyController.php . ثم ، في MyController.php ، اكتب نمط Controller الأساسية هذا:
<?php namespace controller ;
class MyController extends framework parents Controller
{
public function welcome ()
{
echo ' Welcome to my Controller. ' ;
}
} Controller worksheet/requests.php .
$ this -> request ( ' GET /test @MyController::welcome ' ); الآن ، قم بزيارة /test على متصفحك. إذا كان كل شيء على ما يرام ، فسترى الإخراج: Welcome to my Controller. . يجب أن يكون اسم ملف وحدة Controller هو نفسه ومطابقة مع اسم فئة Controller . أيضا ، عليك أن تهتم بمساحة Namespace . إذا قمت بإنشاء وحدة تحكم داخل دليل جديد مثل هذا:
__ controllers/
|__ my_new_folder/
|__ MyController.php
بعد ذلك ، يجب أن تكون Namespace Controller الخاصة بك مثل هذا: (هذا ينطبق أيضًا على جميع نظام مساحات الأسماء)
<?php namespace controllers my_new_folder ;
class MyController extends framework parents Controller
{
//
} يمكنك تجنب تمديد frameworkparentsController إذا لم يكن Controller الخاصة بك مطلوبة لاستخدام بعض الوظائف المدمجة مثل $this->LOAD_VIEW() ، $this->GET_RULE() ، إلخ.
يتم وضع Model S في worksheet/models . يستخدم Model للتواصل مع قاعدة البيانات. لذلك ، عند إنشاء Model ، تأكد من أنه يتوافق مع بياناتك في قاعدة البيانات. لاستخدام Model ، يجب عليك إعداد تكوين قاعدة البيانات في backend/.secrets/.db أو رؤية الوثائق حول Configuring Database .
بعد انتهاء أعلاه ، دعنا نحاول إنشاء Model . أولاً ، قم بإنشاء ملف جديد في worksheet/models . افترض أن اسم الملف هو User.php . ثم اكتب محتوى الملف باستخدام نمط Model الأساسي:
<?php namespace model ;
class User extends framework parents Model
{
// This is your table name. It is required by system.
protected static $ table = ' user ' ;
// This is your table columns. Only required if you want to create new
// table into Database.
protected static $ columns = [
' id ' => ' INT(11) AUTO_INCREMENT PRIMARY KEY ' ,
' username ' => ' VARCHAR(255) NOT NULL ' ,
' password ' => ' VARCHAR(255) NOT NULL '
];
} في Controller الخاصة بك ، اتصل بفئة Model :
<?php namespace controller ;
use model User ;
class MyController extends framework parents Controller
{
public function workingWithModel ()
{
// Initialize object of Model 'User'.
// Now you can use your Model.
$ user = new User ;
}
} إذا لم يكن لديك جدول به اسم user من قبل ، فما عليك سوى استخدام طريقة create() لإنشاء الجدول تلقائيًا عند تشغيل طريقة Controller workingWithModel() .
$ user = new User ;
// this will create new table into Database with columns and properties that
// already defined on 'protected static $columns'.
$ user -> create (); تم القيام به تقريبًا ، الآن كنت بحاجة فقط لاستخدام Model مع بعض الوظائف المدمجة أو الأساليب.
$ user = new User ;
// Open Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> open ();
// Close Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> close ();
// Delete all data in Model 'User' | table 'user'.
$ user -> delete ();
// Delete all data in Model 'User' | table 'user' | where id = 1 and username = name.
$ user -> delete ([ ' id ' => 1 , ' username ' => ' name ' ]);
// Insert new data to Model 'User' | table 'user' | to column username with value
// 'Linus Torvald'.
$ user -> insert ([ ' username ' => ' Linus Torvald ' ]);
// Update data in Model 'User' | table 'user' | where id = 1. Update username
// to value 'Linus Torvald'.
$ user -> update ([ ' username ' => ' Linus Torvald ' ], [ ' id ' => 1 ]);
// Get all data from Model 'User' | table 'user'.
$ user -> get ();
// Get 5 data results from Model 'User' | table 'user'.
$ user -> get ( 5 );
// Select all data from column 'username' of Model 'User' | table 'user'.
$ user -> select ( ' username ' )-> get ();
// Get data from column 'username' of Model 'User' | table 'user' | take 4 data results
// start from data number 2.
$ user -> range ( 4 , 2 )-> get ();
// Get data from Model 'User' | table 'user' | based on the clause 'WHERE id = 1'.
// You can do anything inside of 'clause()'.
$ user -> clause ( ' WHERE id = 1 ' )-> get ();
// Select data from column 'username' of Model 'User' | table 'user' |
// where id = 1 AND username = 'Linus Torvald'.
$ user -> where ([ ' id ' => 1 , ' username ' => ' Linus Torvald ' ])-> get ();
// Exec query.
// 'query' is anything sql queries such as 'DELETE * FROM' or 'SELECT *'.
$ user -> exec (query);
// Execute query with bind params (PDO prepare statement).
$ user -> execute (query, bindParams);
// You can custom you queries with chaining functions or methods like this:
$ user -> select ( ' username ' )-> range ( 4 , 2 )-> get ();
// Using prepare statement
$ user -> clause ( ' WHERE id=:id ' )-> bindParams ([ ' id ' => 1 ])-> get (); يتم وضع View في worksheet/views . في الأساس ، View هو قالب ، يمكن أن يكون رمز HTML أو PHP. لا شيء قواعد خاصة View . ولكن ، في Janggelan امتداد View دائمًا .php . يمكنك كتابة أي رمز داخل View . لاستخدام View ، تحتاج فقط إلى تسميته. مثال:
// Calling View 'example.php' on requests.php
// Note that you cannot calling View with Closure or Callback.
$ this -> request ( ' GET / (example) ' );
// Calling View 'example.php' inside folder 'new_folder' on requests.php
$ this -> request ( ' GET / (new_folder/example) ' );
// Calling View 'example.php' on Controller
$ this -> LOAD_VIEW ( ' example ' );
// Calling View 'example.php' inside folder 'new_folder' on Controller
$ this -> LOAD_VIEW ( ' new_folder/example ' ); إذا كنت ترغب في وضع View خارج worksheet/views إلى كل مكان داخل الدليل public أو public_html أو www ، عليك فقط إضافة / :
$ this -> request ( ' GET / (/example) ' );
$ this -> LOAD_VIEW ( ' /example ' ); سيخبر ذلك النظام بالعثور على View على public/example.php أو public_html/example.php أو www/example.php .
الآن ، كيفية تمرير البيانات في View . في الواقع ، يمكنك أن تفعل ذلك بسيطًا. ما عليك سوى compact() البيانات: لاحظ أن تمرير البيانات ممكنًا فقط عند الاتصال View بواسطة Controller .
$ data = ' This is data ' ;
$ this -> LOAD_VIEW ( ' example ' , compact ( ' data ' )); ثم ، على ملف View example.php ، ما عليك سوى الاتصال بالمتغير:
<p> <?php echo $ data ; ?> </p> يوفر Janggelan بعض الأدوات التي يمكنك استخدامها ، وربما مفيدة لحالات التطوير الخاصة بك. يتم وضعها في worksheet/tools . لاستخدامها ، فقط عليك الاتصال باسم الفصل. مثال:
<?php namespace controller ;
use tool Validation ;
class Example extends framework parents Controller
{
private $ validation ;
function __construct ()
{
$ this -> validation = new Validation ;
}
} Protected Rule هي نظام في Janggelan لحماية page أو View أو Uri ، تمامًا مثل نظام تسجيل الدخول. Protected Rule تخزين البيانات المجهولة التي يتم فحصها دائمًا عند استخدام request هذا النظام. إذا لم يكن لدى المستخدم الذي يزوره الزيارة بيانات مجهولة المصدر ، فسيتم إعادة توجيه المستخدم تلقائيًا إلى target تم تعريفه من قبل. سيسهل عليك حماية الصفحات التي تريد أن تجعلها خاصة أو فقط لبعض المستخدمين.
لإنشاء Protected Rule جديدة ، انتقل إلى ملف التكوين على backend/config/protected.php . يمكنك جعل أكثر من Protected Rule واحدة. مثال:
<?php return [
// FALSE means, system will uses SESSION to store protected_rule data. Set it TRUE
// if you want to store the data in COOKIE.
' use_cookie ' => FALSE ,
' protected_rule ' => [
// Creating 'Protected Rule' with name 'login'.
// If the data is not valid, then redirect to Controller 'Example'
// method 'protected.'
' login ' => [
' on_false ' => [
' controller ' => ' Example ' ,
' method ' => ' protected '
],
],
// Creating 'Protected Rule' with name 'protect'.
// If the data is not valid, then redirect to View 'example'.
' protect ' => [
' on_false ' => [
' view ' => ' example ' ,
],
],
// Creating 'Protected Rule' with name 'myRule'.
// If the data is not valid, then redirect to uri '/wrong'.
' myRule ' => [
' on_false ' => ' /wrong '
],
]
]; !! ، لتطبيق تلك Protected Rule ، انتقل إلى worksheet/requests.php Request
// Applying Protected Rule 'login'.
$ this -> request ( ' GET / @Example::example !!login ' );
$ this -> request ( ' GET / (viewName) !!login ' );
$ this -> request ( ' GET / !!login ' , function ()
{
echo ' If you see this, then you are an Admin. ' ;
}); كيفية تعيين بيانات صالحة للمستخدم أو Protected Rule ؟ ما عليك سوى استخدام وظائف أو أساليب بنيت.
$ this -> SET_RULE ( $ name ); يمكنك أيضًا نقل القيم إلى بيانات Protected Rule :
$ this -> SET_RULE ( $ name , $ values ); فيما يلي وظائف أو طرق كاملة Protected Rule :
// Check valid data for user or 'Protected Rule';
$ this -> CHECK_RULE ( $ name );
// Set new valid data for user or 'Protected Rule'.
$ this -> SET_RULE ( $ name , $ data = '' );
// Get 'Protected Rule' data.
$ this -> GET_RULE ( $ name );
// Delete valid 'Protected Rule' data.
$ this -> DESTROY_RULE ( $ name ); لتكوين قاعدة البيانات الخاصة بك ، يرجى الانتقال إلى backend/.secrets/.db . يحتوي على كائن لتكوين قاعدة البيانات الخاصة بك:
{ "DB_HOST" : " " , "DB_NAME" : " " , "DB_USERNAME" : " " , "DB_PASSWORD" : " " }تعيين على كل قيم مفتاح مع تكوينات قاعدة البيانات الخاصة بك.
بشكل افتراضي ، تم التحقق من صحة Janggelan URI للدليل. إذا كانت URI تشير إلى مجلد أو دليل ISSET ، فلن يتم بدء نظام Janggelan ، لأنه تم إعادة توجيهه إلى هذا المجلد أو الدليل. إذا كنت لا تريد أن يحدث هذا ، فتح ملف backend/force.uri ، وأعد كتابة القيمة القديمة إلى TRUE .
دالي كيوارا | [email protected]
Janggelan هو إطار PHP مفتوح المصادر مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.