[] (https://srutinizer-ci.com/g/xsanisty/SilexStarter/build-status/develop) [] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/?branch=develop) [ ] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/?branch=develop) [] (https://insight.sensiolabs.com/projects/a30a66f9-8110-40c5-8a35-f3c1697dde55)
SilexStarter هو تطبيق مبدئي مبني على الجزء العلوي من إطار عمل Silex وLaravel's Eloquent وCartalyst Sentry وبعض المكونات الخارجية الأخرى والمضمنة. يهدف SilexStarter إلى المساعدة في بناء تطبيق بسيط بشكل أسرع، وقد تم تصميمه مع وضع MVC والنهج المعياري في الاعتبار، ويأتي مع بعض وحدات الإدارة الأساسية، بما في ذلك مدير المستخدم ومدير الوحدة.
في الوقت الحالي، الفرع القابل للتثبيت هو فرع تطوير فقط، ويمكنك تثبيته بسهولة باستخدام الملحن باستخدام الأمر التالي
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
بمجرد اكتمال تثبيت الملحن، يمكنك تهيئة التطبيق باستخدام الأمر التالي
$cd target_dir
$./xpress app:init
يمكن تطوير الوحدة مباشرة داخل دليل app/modules
وإنشاء وحدة على مساحة الاسم الخاصة بها أو بنائها كحزمة مؤلف منفصلة، ويمكن تمكين الوحدة أو تعطيلها عن طريق تسجيلها في app/config/modules.php
file : app/routes.php
يمكن إنشاء تكوين المسار مثل مسار Silex العادي، أو باستخدام أداة إنشاء المسار باستخدام بناء جملة مشابه مثل مسار Laravel.
أسلوب توجيه سيليكس
/* the application instance is available as $app in context of route.php */
$ app -> get ( ' /page ' , function (){
return ' I am in a page ' ;
});
$ app -> post ( ' /save ' , function (){
return ' Ok, all data is saved! ' ;
});
/* grouping */
$ app -> group ( ' prefix ' , function () use ( $ app ) {
$ app -> group ( ' page ' , function () use ( $ app ) {
$ app -> get ( ' index ' , function (){
return ' I am in prefix/page/index ' ;
});
});
});
/* resourceful controller */
$ app -> resource ( ' prefix ' , ' SomeController ' );
/* route controller */
$ app -> controller ( ' prefix ' , ' SomeController ' );
أسلوب التوجيه لارافيل
/* route can be built using the Route static proxy */
Route:: get ( ' /page ' , function (){
return ' I am in a page ' ;
});
Route:: post ( ' /save ' , function (){
return ' Ok, all data is saved! ' ;
});
/* grouping */
Route:: group ( ' prefix ' , function () {
Route:: group ( ' page ' , function () {
Route:: get ( ' index ' , function (){
return ' I am in prefix/page/index ' ;
});
});
});
/* resourceful controller */
Route:: resource ( ' prefix ' , ' SomeController ' );
/* route controller */
Route:: controller ( ' prefix ' , ' SomeController ' );
file: app/controllers/*
يمكن أن تكون وحدة التحكم بشكل أساسي أي فئات موجودة في مجلد وحدات التحكم، وسيتم تسجيلها كخدمة عند تمكينها، وسيتم إنشاء مثيل لها بشكل صحيح عند الحاجة، مع حقن كل التبعيات.
لنفترض أن لدينا PostRepository
و CommentRepository
، فيجب علينا تسجيلهما أولاً قبل أن يتم حقنهما بشكل صحيح في وحدة التحكم.
file: app/services/RepositoryServiceProvider.php
<?php
use Silex Application ;
use Silex ServiceProviderInterface ;
class RepositoryServiceProvider implements ServiceProviderInterface
{
public function register( Application $ app )
{
$ app [ ' PostRepository ' ] = $ app ->share( function ( Application $ app ) {
return new PostRepository
});
$ app [ ' CommentRepository ' ] = $ app ->share( function ( Application $ app ) {
return new PostRepository
});
}
public function boot ( Application $ app )
{
}
}
file: app/config/services.php
<?php
return [
' common ' => [
' RepositoryServiceProvider ' ,
]
]
file: app/controllers/PostController.php
<?php
class PostController{
protected $ postRepo ;
protected $ commentRepo ;
public function __construct ( PostRepository $ postRepo , CommentRepository $ commentRepo )
{
$ this -> postRepo = $ postRepo ;
$ this -> commentRepo = $ commentRepo ;
}
public function index (){
return Response:: view ( ' post/index ' , $ this -> postRepo -> all ());
}
}
والآن، يجب أن نكون قادرين على إنشاء خريطة طريق لوحدة التحكم هذه
Route:: get ( ' /post ' , ' PostController:index ' );
file: app/models/*
يستخدم SilexStarter Eloquent ORM كطبقة تجريد لقاعدة البيانات، بحيث يمكنك توسيعها لإنشاء نموذج classJeyac. يمكن العثور على تكوين قاعدة البيانات في app/config/database.php
<?php
class Post extends Model{
protected $ table = ' posts ' ;
public function comments (){
return $ this -> hasMany ( ' Comment ' );
}
}
file: app/views/*
file: app/middlewares.php
file: src/Providers/*
file: app/modules/*
file: app/config/modules.php
file: app/modules/**/ModuleProvider.php