Arabic (العربية/عربي) translation by Muhlis Tirowali (you can also view the original English article)
كانت هناك فترة من الزمن، ومنذ فترة غير بعيدة، عندما بي ومجتمعها، عدم وجود عبارة أفضل، مكروه. على ما يبدو، كان مزحة العنوان لكل يوم واحد أن كان بي المتصلة بكيفية رهيبة. دعونا نرى، ما الجديد يغلق PHP بلوق المادة سوف تكون نشرت اليوم؟
نعم، ما فيه الكفاية، للأسف المجتمع والنظام الإيكولوجي ببساطة لم تكن على نفس مستوى اللغات الحديثة الأخرى.
نعم، ما فيه الكفاية، للأسف المجتمع والنظام الإيكولوجي ببساطة لم تكن على نفس مستوى اللغات الحديثة الأخرى. ويبدو أن بي كان مقدرا له أن يعيش خارجاً عن عمر يسيطر في شكل فوضوي وورد المواضيع.
ولكن، ثم جداً مثير للدهشة، بدأت الأمور تتغير-و بسرعة، أيضا. وبدأت مشاريع جديدة مبتكرة مثل ساحرة إثارة القدر، ظهرت من العدم. وربما كان من أبرز هذه المشاريع الملحن: نهائي تبعية مدير بي (لا خلاف روبي متحف حزمة أو العقدة). بينما، في الماضي، اضطر مطوري بي إتش بي للخلاف الكمثرى في الشكل (كابوس، في الواقع)، الآن، بفضل الملحن، يمكن ببساطة تحديث ملف JSON، والانسحاب فورا في الاعتماد المطلوب. التعريف هنا، وإطار اختبار هناك.. كل شيء في ثوان!
في العالم الإطار بي مزدحمة، مثلما CodeIgniter وبدأ يتبدد، نشأ لارافيل إطار تايلور أوتويل من رماد لتصبح محبوبة من المجتمع المحلي. مع هذا بناء جملة بسيطة وأنيقة، كان بناء التطبيقات مع لارافيل وبي-اللحظات-صراحة متعة! علاوة على ذلك، مع الإصدار 4 من إطار تفعيل الملحن بشكل كبير، وأخيراً الأشياء يبدو أن يكون الوقوع في مكان للمجتمع.



هل تريد الهجرة (التحكم بالإصدار لقاعدة البيانات الخاصة بك)؟ القيام بذلك. حول كيفية تنفيذ سجل نشط قوية؟ ومن المؤكد أن Eloquent سوف تفعل الخدعة لطيف جداً. وماذا عن مرافق الاختبار؟ بالطبع. والتوجيه؟ بالتأكيد. وماذا عن طبقة HTTP اختبار درجة عالية؟ لارافيل فضل الملحن، يمكن الاستفادة من العديد من مكونات Symfony ممتازة. عندما يتعلق الأمر حق وصولاً إلى ذلك، احتمالات، إذا كنت في حاجة إليها، لارافيل يوفر ذلك.



بينما يستخدم بي أنه لا يختلف عن لعبة Jenga-كتلة واحدة فقط وبعيدا عن الوقوع بالقطع-فجأة، وبفضل لارافيل والملحن، قد لا تبدو أكثر إشراقا على أي المستقبل. حتى سحب بعض ظلال، وحفر في إطار كل ما لديه لهذا العرض.
1-بليغ الاستعلامات
لارافيل يوفر أحد التطبيقات النشطة--سجل الأقوى في العالم بي إتش بي. لنفرض أن لديك جدول orders
، جنبا إلى جنب مع نموذج "بليغ النظام
":
1 |
class Order extends Eloquent {} |
يمكننا بسهولة تنفيذ أي عدد من استعلامات قاعدة البيانات، باستخدام PHP بسيطة وأنيقة. لا حاجة لرمي SQL فوضوي حول الغرفة. دعونا الاستيلاء على كافة الأوامر.
1 |
$orders = Order::all(); |
القيام بذلك. أو ربما، ينبغي أن تعاد تلك الأوامر بالترتيب، وفقا لتاريخ الإصدار. أن من السهل:
1 |
$orders = Order::orderBy('release_date', 'desc')->get(); |
ماذا لو، بدلاً من إحضار سجل، علينا بدلاً من ذلك لحفظ نظام جديد إلى قاعدة البيانات. بالتأكيد، يمكننا أن نفعل ذلك.
1 |
$order = new Order; |
2 |
$order->title = 'Xbox One'; |
3 |
$order->save(); |
انتهى! لارافيل، المهام التي اعتادت أن تكون مرهقة لأداء مضحكة بسيطة.
2-مرونة التوجيه
لارافيل فريدة من نوعها في ذلك فإنه يمكن استخدامها في عدد من الطرق. تفضل نظام توجيه أبسط وأكثر مثل سيناترا؟ بالتأكيد، لارافيل يمكن أن تقدم ذلك بسهولة تامة، استخدام عمليات الإغلاق.
1 |
Route::get('orders', function() |
2 |
{
|
3 |
return View::make('orders.index') |
4 |
->with('orders', Order::all()); |
5 |
});
|
هذا يمكن أن تكون مفيدة للمشاريع الصغيرة وواجهات برمجة التطبيقات، ولكن هناك احتمالات عالية أن كنت سوف تتطلب وحدات تحكم لمعظم المشاريع الخاصة بك. هذا ما يرام؛ لارافيل أن تفعل ذلك، أيضا!
1 |
Route::get('orders', 'OrdersController@index'); |
القيام بذلك. لاحظ كيف ينمو لارافيل مع الاحتياجات الخاصة بك؟ هذا المستوى من الإقامة ما يجعل الإطار شعبية كما عليه اليوم.
3-سهولة العلاقات
ماذا نفعل في الحالات عندما يجب أن نحدد العلاقات؟ على سبيل المثال، مهمة سيتم التأكيد تنتمي إلى مستخدم. كيف يمكن نحن نمثل أن في لارافيل؟ حسنا، مع افتراض أن جداول قاعدة البيانات اللازمة هي الإعداد، نحتاج فقط قرص نماذج بليغة ذات الصلة.
1 |
class Task extends Eloquent { |
2 |
public function user() |
3 |
{
|
4 |
return $this->belongsTo('User'); |
5 |
}
|
6 |
}
|
7 |
|
8 |
class User extends Eloquent { |
9 |
public function tasks() |
10 |
{
|
11 |
return $this->hasMany('Task'); |
12 |
}
|
13 |
}
|
ومع ذلك، نحن القيام به! دعونا الاستيلاء على كافة المهام للمستخدم بمعرف 1. يمكننا أن نفعل ذلك في سطرين من التعليمات البرمجية.
1 |
$user = User::find(1); |
2 |
$tasks = $user->tasks; |
ومع ذلك، نظراً لأننا قمت بتعريف العلاقة من كلا الطرفين، إذا أردنا جلب المستخدم المقترنة مع مهمة بدلاً من ذلك، يمكننا أن نفعل ذلك، أيضا.
1 |
$task = Task::find(1); |
2 |
$user = $task->user; |
4-تشكيل نموذج الربط
في كثير من الأحيان، يمكن أن تكون مفيدة لربط نموذج إلى نموذج. المثال الواضح لذلك عندما كنت ترغب في تحرير بعض السجلات في قاعدة البيانات الخاصة بك. بشكل نموذجي ملزم، ونحن على الفور تعبئة حقول النموذج مع القيم من صف الجدول المرتبط.
1 |
{{ Form::model($order) }} |
2 |
<div> |
3 |
{{ Form::label('title', 'Title:') }} |
4 |
{{ Form::text('title') }} |
5 |
</div> |
6 |
|
7 |
<div> |
8 |
{{ Form::label('description', 'Description:') }} |
9 |
{{ Form::textarea('description') }} |
10 |
</div> |
11 |
{{ Form::close() }} |
لأن النموذج الآن مرتبطة
بمثيل ترتيب محدد، سيتم عرض المدخلات القيم الصحيحة من الجدول. بسيطة!
5. استعلامات قاعدة بيانات ذاكرة التخزين المؤقت
استعلامات قاعدة بيانات كثيرة جداً، وسريعا جداً، التطبيق الخاص بك يمكن أن تصبح مثل دبس السكر. لحسن الحظ، لارافيل يوفر إليه بسيطة للتخزين المؤقت هذه الاستعلامات، استخدام أي شيء أكثر من استدعاء أسلوب واحد.
دعونا الاستيلاء على جميع الأسئلة
من قاعدة البيانات، ولكن ذاكرة التخزين المؤقت الاستعلام، نظراً لأنه من غير المحتمل أن هذا الجدول سوف يتم تحديثها بشكل متكرر.
1 |
$questions = Question::remember(60)->get(); |
هذا هو! الآن، لساعة القادمة من طلبات الصفحات، سوف يظل هذا الاستعلام المخزنة مؤقتاً، وسوف لا يكون لمست قاعدة البيانات.
6-عرض الملحنين
سوف تصادف حالات عند وجهات نظر متعددة تتطلب متغير معين أو جزء من البيانات. هو مثال جيد لهذا شريط تنقل الذي يعرض قائمة بالعلامات.
أيضا الاحتفاظ بوحدات التحكم بالحد الأدنى قدر الإمكان، وعرض عروض لارافيل الملحنين لإدارة مثل هذه الأمور.
1 |
View::composer('layouts.nav', function($view) |
2 |
{
|
3 |
$view->with('tags', ['tag1', 'tag2']); |
4 |
});
|
جزء من التعليمات البرمجية هذه، أي الوقت الذي يتم تحميل عرض layouts/nav.blade.php
، فإنه سيكون الوصول إلى متغير ما، $tags
، يساوي الصفيف المتوفر.
7. بسيطة المصادقة
لارافيل نهجاً القتلى بسيطة للمصادقة. تمرير صفيف من بيانات الاعتماد، يرجح أن جلب من نموذج تسجيل دخول إلى Auth::attempt()
ببساطة. إذا تطابق القيم المقدمة التي تم تخزينها في جدول المستخدمين
، سيتم على الفور تسجيل المستخدم.
1 |
$user = [ |
2 |
'email' => 'email', |
3 |
'password' => 'password' |
4 |
];
|
5 |
|
6 |
if (Auth::attempt($user)) |
7 |
{
|
8 |
// user is now logged in!
|
9 |
// Access user object with Auth::user()
|
10 |
}
|
ماذا لو احتجنا إلى تسجيل خروج المستخدم - ربما ، عندما يتم تسجيل عنوان URI / logout
؟ أن من السهل، أيضا.
1 |
Route::get('logout', function() |
2 |
{
|
3 |
Auth::logout(); |
4 |
|
5 |
return Redirect::home(); |
6 |
});
|
8-الموارد
تعمل الاستغراق في لارافيل لم تكن أسهل. لتسجيل وحدة تحكم الحيلة، نداء بسيط Route::resource()
، مثل ذلك:
1 |
Route::resource('orders', 'OrdersController'); |
مع هذه التعليمات البرمجية، سيتم تسجيل لارافيل ثمانية طرق.
- الحصول على/orders
- الحصول على/أوامر/: أمر
- الحصول على/orders/create
- الحصول على/أوامر/: أمر/تحرير
- /Orders بوست
- وضع/أوامر/: أمر
- تصحيح/أوامر/: أمر
- حذف/أوامر/: أمر
علاوة على ذلك، قد يتم إنشاء وحدة تحكم رفيق من سطر الأوامر:
1 |
php artisan controller:make OrdersController |
داخل وحدة التحكم التي تم إنشاؤها هذه، سوف تقابل كل أسلوب بإحدى الطرق المذكورة أعلاه. للحصول على أمثلة، سيتم تعيين/orders
إلى الأسلوب فهرس
، سيتم تعيين/orders/create
إلى إنشاء
، إلخ.
ولدينا الآن القدرة اللازمة لبناء تطبيقات مريح وواجهات برمجة التطبيقات بسهولة.
9-شفرة قولبة
حين، نعم، بي إتش بي بطبيعتها لغة قولبة، وأنها لم تطور ليصبح شكل مفرط جيدة واحدة. هذا ما يرام، على الرغم؛ لارافيل يوفر محركها بليد لسد هذه الفجوة. مجرد اسم الخاص بك وجهات النظر مع. ملحق blade.php،
وأنها سوف تلقائياً يمكن تحليله، تبعاً لذلك. الآن، يمكن أن نفعل أشياء مثل:
1 |
@if ($orders->count()) |
2 |
<ul> |
3 |
@foreach($orders as $order) |
4 |
<li>{{ $order->title }}</li> |
5 |
@endforeach |
6 |
</ul> |
7 |
@endif |
10-مرافق الاختبار
أن لارافيل يجعل استخدام من الملحن، لدينا دعم إليه اختبار على الفور في إطار الخروج من المربع. قم بتثبيت الإطار وتشغيل phpunit
من سطر الأوامر لاختباره.
وحتى أفضل، على الرغم من لارافيل يقدم عدد من المساعدين اختبار للأنواع الأكثر شيوعاً من الاختبارات الوظيفية.
دعونا التحقق من أن الصفحة تقوم بإرجاع رمز حالة 200.
1 |
public function test_home_page() |
2 |
{
|
3 |
$this->call('GET', '/'); |
4 |
$this->assertResponseOk(); |
5 |
}
|
أو ربما أننا نريد التأكد من أنه عندما يتم نشر نموذج جهة اتصال، يتم إعادة توجيه المستخدم مرة أخرى إلى الصفحة الرئيسية مع رسالة فلاش.
1 |
public function test_contact_page_redirects_user_to_home_page() |
2 |
{
|
3 |
$postData = [ |
4 |
'name' => 'Joe Example', |
5 |
'email' => 'email-address', |
6 |
'message' => 'I love your website' |
7 |
];
|
8 |
|
9 |
$this->call('POST', '/contact', $postData); |
10 |
|
11 |
$this->assertRedirectedToRoute('home', null, ['flash_message']); |
12 |
}
|
11-بعد العنصر
كجزء من 4.1 لارافيل--من المقرر أن يطلق سراحه في تشرين الثاني/نوفمبر 2013-يمكنك بسهولة كتابة أمر الحرفيين إلى سة إلى الملقم الخاص بك، والقيام بأي عدد من الإجراءات. الأمر بسيط مثل استخدام واجهة SSH
:
1 |
SSH::into('production')->run([ |
2 |
'cd /var/www', |
3 |
'git pull origin master'
|
4 |
]);
|
تمرير صفيف أوامر إلى الأسلوب run()
، وسيتم التعامل مع لارافيل بقية! الآن ، لأنه من المنطقي تنفيذ مثل هذا الأمر كأمر حرفي ، تحتاج فقط إلى تشغيل الأمر الحرفي php: make DeployCommand
، وإدراج الكود المطبق في طريقة إطلاق النار
في الأمر لإنشاء أمر نشر مخصص بسرعة!
12-الأحداث
لارافيل يوفر تنفيذ نمط المراقبة التي يمكن استخدامها في التطبيقات الخاصة بك بطريقة أنيقة. الاستماع للأحداث الأصلية، مثل illuminate.query
، أو حتى إطلاق النار والصيد الخاصة بك.
يمكن أن يكون استخدام ناضجة للأحداث في تطبيق تأثير لا يصدق على الصيانة والهيكل.
1 |
Event::listen('user.signUp', function() |
2 |
{
|
3 |
// do whatever needs to happen
|
4 |
// when a new user signs up
|
5 |
});
|
مثل معظم الأشياء في لارافيل، إذا كنت تفضل بدلاً من ذلك الإشارة اسم فئة بدلاً من إغلاق، يمكنك بحرية القيام بذلك. ثم سوف لارافيل حلها خارج الحاوية اللجنة الأوقيانوغرافية الحكومية الدولية.
1 |
Event::listen('user.signUp', 'UserEventHandler'); |
13-عرض جميع الطرق



مع نمو طلب، يمكن أن يكون من الصعب عرض التوجيهات التي سجلت. وهذا صحيح خاصة إذا أعطيت الرعاية السليمة لا إلى ملف routes.php
(أي إساءة ضمنية التوجيه).
ويقدم لارافيل أمر طرق
مفيدة، الذي سيتم عرض طرق جميع المسجلين، فضلا عن أساليب التحكم التي يقومون بتشغيل.
1 |
php artisan routes |
14-قوائم الانتظار
التفكير عندما يوقع مستخدم للتطبيق الخاص بك. المحتمل، ويجب أن تجري عددا من الأحداث. وينبغي تحديث جدول قاعدة بيانات، يجب أن يتم إلحاق قائمة بالرسائل إخبارية ل، يجب أن ترتفع فاتورة، قد تكون رسالة ترحيب بالبريد إلكتروني المرسلة، وما إلى ذلك. لسوء الحظ، هذه الأنواع من الإجراءات لديهم ميل إلى يستغرق وقتاً طويلاً.
لماذا فرض المستخدم الانتظار لهذه الإجراءات، عندما كنا بدلاً من القائهم في الخلفية؟
1 |
Queue::push('SignUpService', compact('user')); |
ولعل الجزء الأكثر إثارة، رغم ذلك، أن لارافيل ببراعة وتقدم الدعم لقوائم انتظار دفع Iron.io. وهذا يعني أنه حتى بدون أوقية من تجربة "عامل" أو "شيطان"، نحن لا يزال نفوذ السلطة من قوائم الانتظار. ما عليك سوى تسجيل نقطة نهاية عنوان URL باستخدام قائمة انتظار php artisan المفيدة: أمر
الاشتراك ، وسوف يقوم Iron.io باختيار عنوان URL الذي اخترته في كل مرة تتم فيها إضافة مهمة إلى قائمة الانتظار.



خطوات بسيطة لأداء أسرع!
15-من السهل التحقق من الصحة
عندما يتم التحقق من الصحة المطلوبة (وعندما أليس)، لارافيل مرة أخرى يأتي للإنقاذ! يعد استخدام فئة Validator
أمرًا بديهيًا بقدر الإمكان. ما عليك سوى تمرير الكائن تحت التحقق ، بالإضافة إلى قائمة القواعد إلى طريقة make
، وسيتولى Laravel الباقي.
1 |
$order = [ |
2 |
'title' => 'Wii U', |
3 |
'description' => 'Game console from Nintendo' |
4 |
];
|
5 |
|
6 |
$rules = [ |
7 |
'title' => 'required', |
8 |
'description' => 'required' |
9 |
];
|
10 |
|
11 |
$validator = Validator::make($order, $rules); |
12 |
|
13 |
if ($validator->fails()) |
14 |
{
|
15 |
var_dump($validator->messages()); // validation errors array |
16 |
}
|
نموذجياً، يتم تخزين هذا النوع من التعليمات البرمجية داخل النموذج الخاص بك، بمعنى أن التحقق من الصحة، أقول، أمر يمكن تخفيضه إلى استدعاء أسلوب واحد:
1 |
$order->isValid(); |
16-المصلح المصلح



خاصة عندما تعلم أولاً لارافيل، أنها تكون مفيدة العبث حول جوهر. يمكن أن يساعد الأمر Laravel tinker
الحرفي في هذا.
كجزء من
الإصدار
4.1، الأمر المصلح أكثر قوة، الآن بعد أن كان روافع المكون بوريس شعبية.
1 |
$ php artisan tinker
|
2 |
|
3 |
> $order = Order::find(1); |
4 |
> var_dump($order->toArray()); |
5 |
> array(...) |
17-الهجرة
التفكير في الهجرة كالتحكم بالإصدار لقاعدة البيانات الخاصة بك. في أي نقطة، كنت قد "تراجع" جميع الهجرات، أعد تشغيل لهم، وأكثر من ذلك بكثير. ربما القوة الحقيقية تقع في القدرة على دفع التطبيق إلى الإنتاج ، وتشغيل أمر ترحيل php حرفي واحد لإنشاء
قاعدة البيانات الخاصة بك على الفور.
لإعداد المخطط لجدول مستخدمين جديدة، ونحن قد تشغيل:
1 |
php artisan migrate:make create_users_table |
سيؤدي هذا إلى إنشاء ملف هجرة، التي كنت قد ثم ملء وفقا لاحتياجاتك. بمجرد اكتمال عملية نقل PHP الحرفي
، سيتم إنشاء الجدول. هذا هو! بحاجة لدحر هذا خلق؟ من السهل! ترحيل بي الحرفي: العودة إلى الحالة السابقة
.
هنا مثال لمخطط جدول أسئلة المطروحة بشكل متكرر.
1 |
public function up() |
2 |
{
|
3 |
Schema::create('faqs', function(Blueprint $table) { |
4 |
$table->integer('id', true); |
5 |
$table->text('question'); |
6 |
$table->text('answer'); |
7 |
$table->timestamps(); |
8 |
});
|
9 |
}
|
10 |
|
11 |
public function down() |
12 |
{
|
13 |
Schema::drop('faqs'); |
14 |
}
|
لاحظ كيف ينفذ الأسلوب drop()
معكوس up()
. وهذا ما يسمح لنا بالعودة الهجرة. غير أن أسهل كثيرا أن المشاحنات حفنة من SQL في مكان؟
18-مولدات الكهرباء
بينما لارافيل يقدم عدد من مولدات مفيدة، حزمة خارجية مفيدة بشكل لا يصدق، تسمى "لارافيل 4 مولدات،" تحيط حتى هذا أيضا. توليد الموارد والملفات البذور، والجداول المحورية والهجرات مع المخطط!
في هذا التلميح السابق، فقد اضطررنا لكتابة المخطط يدوياً. ومع ذلك، مع تمكين الحزمة المولدات، يمكننا بدلاً من ذلك القيام به:
1 |
php artisan generate:migration create_users_table --fields="username:string, password:string" |
سوف تعتني المولد بقية. وهذا يعني أنه، مع اثنين من الأوامر، يمكنك إعداد وإنشاء جدول قاعدة بيانات جديدة.
قد يتم تثبيت "لارافيل 4 مولدات الكهرباء" من خلال الملحن.
19-الأوامر
وكما أشير من قبل، هناك عدد من الحالات عند أنها يمكن أن تكون مفيدة لكتابة أوامر مخصصة. يمكن استخدامها سقالة التطبيقات، إنشاء ملفات، ونشر التطبيقات، وكل شيء بين بين.
لأن هذا مهمة مشتركة، لارافيل يجعل من عملية إنشاء أمر سهلاً كما يمكن أن يكون.
1 |
php artisan command:make MyCustomCommand |
هذا الأمر سوف تولد النص المتداول ضروري لأمر مخصص الجديد الخاص بك. المقبل، من app/commands/MyCustomCommand.php
التي تم إنشاؤها حديثا، ملء مناسبة الاسم والوصف:
1 |
protected $name = 'command:name'; |
2 |
protected $description = 'Command description.'; |
وأخيراً، ضمن فئة الأمر fire()
الأسلوب، القيام بأي عمل أن كنت بحاجة إلى. بمجرد الانتهاء، الخطوة الوحيدة المتبقية لتسجيل الأمر مع الحرفيين، من app/start/Artisan.php
.
1 |
Artisan::add(new MyCustomCommand); |
صدقوا أو لا تصدقوا؛ هذا هو! يمكنك الآن الاتصال الأمر المخصص الخاص بك من المحطة الطرفية.
20. موك الواجهات
لارافيل روافع نمط الواجهة بشكل كبير. وهذا يسمح لبناء الجملة ثابت مثل نظيفة فسوف تأتي بلا شك الحب (Route::get()، Config::get()
، إلخ)، في حين لا يزال يسمح ل testability الكامل وراء الكواليس.
نظراً لأن تتم تسوية هذه "الفئات الأساسية" خارج الحاوية اللجنة الأوقيانوغرافية الحكومية الدولية، يمكننا بسهولة مبادلة تلك الكامنة وراء حالات الخروج مع يسخر، لأغراض الاختبار. وهذا يسمح لهذه الرقابة ك:
1 |
Validator::shouldReceive('make')->once(); |
نعم، نحن نطلق شولدريسيفي مباشر
ة الخروج من الواجهة. خلف الكواليس، يجعل لارافيل من سخرية ممتازة استخدام الإطار للسماح بهذا. وهذا يعني أنه قد بحرية استخدام هذه الواجهات في التعليمات البرمجية الخاصة بك، في حين لا يزال يسمح ل testability 100%.
21. نموذج المساعدون
لبناء النماذج وكثيراً ما يمكن أن يكون مهمة مرهقة، منشئ النموذج لارافيل في خطوات لتسهيل العملية، فضلا عن الاستفادة من العديد من الخصوصيات تتصل ببناء نموذج. وإليك بعض الأمثلة:
1 |
{{ Form::open() }} |
2 |
{{ Form::text('name') }} |
3 |
{{ Form::textarea('bio') }} |
4 |
{{ Form::selectYear('dob', date('Y') - 80, date('Y')) }} |
5 |
{{ Form::close() }} |
وماذا عن المهام، مثل تذكر المدخلات من تقديم النموذج السابق؟ لارافيل يمكن القيام بكل ذلك تلقائياً!
22. حاوية اللجنة الأوقيانوغرافية الحكومية الدولية
لب لارافيل من حاويته اللجنة الأولمبية الدولية القوية، التي هي أداة تساعد في إدارة تبعيات فئة. جدير بالذكر أن الحاوية لديه القدرة على حل تلقائياً فئات دون التكوين!
ببساطة تيبيهينت التبعيات الخاصة بك داخل المنشئ، وعند إنشاء مثيل، لارافيل سوف استخدام API التفكير بي لقراءة تيبيهينتس ذكاء، ومحاولة لضخ لهم لك.
1 |
public function __construct(MyDependency $thing) |
2 |
{
|
3 |
$this->thing = $thing; |
4 |
}
|
طالما قمت بطلب الفئة خارج الحاوية اللجنة الأولمبية الدولية، هذا القرار سوف تتم تلقائياً.
1 |
$myClass = App::make('MyClass'); |
ملاحظة هامة أن تحكم دائماً تحل خارج الحاوية اللجنة الأوقيانوغرافية الحكومية الدولية. على هذا النحو، كنت قد مجاناً تيفينت تبعيات لوحدة التحكم الخاصة بك، ولارافيل في وقت لاحق سوف تبذل قصارى جهدها لحقن لهم لك.
23. البيئات
بينما قد تعمل بيئة واحدة للمشاريع الصغيرة، لأي طلبات من الحجم، سيثبت بيئات متعددة أساسيات. التنمية، والاختبار، والإنتاج.. كل هذه ضرورية وتتطلب التكوين الخاصة بها.
ربما بيئة الاختبار الخاص بك يستخدم قاعدة بيانات في الذاكرة للاختبار. ربما يستخدم بيئة التطوير الخاصة بك مفاتيح API مختلفة. الأرجح، بيئة الإنتاج الخاصة بك سوف تستخدم سلسلة اتصال قاعدة بيانات مخصصة.
لحسن الحظ، لارافيل يجعل مهمتنا بسيطة مرة أخرى. إلقاء نظرة على bootstrap/start.php
في التطبيق الخاص بك.
هنا دليل أساسية لإعداد البيئة المحلية
والإنتاج
، استناداً إلى شريط العنوان الخاص بالمستعرض.
1 |
$env = $app->detectEnvironment(array( |
2 |
'local' => array('localhost'), |
3 |
'production' => array('*.com') |
4 |
));
|
أثناء هذا العمل، وبصفة عامة، قد يفضل استخدام متغيرات البيئة لهذا النوع من الشيء. لا تقلق؛ وهذا ما زالت قابلة للتنفيذ في لارافيل! بدلاً من ذلك، ببساطة إرجاع دالة من الأسلوب ديتيكتينفيرونمينت
على كائن حاوية.
1 |
$env = $app->detectEnvironment(function() |
2 |
{
|
3 |
return getenv('ENV_NAME') ?: 'local'; |
4 |
});
|
الآن، إلا إذا تم تعيين متغير بيئة (التي كنت ستفعل للإنتاج)، سوف الافتراضية البيئة المحلية
.
24. بسيطة التكوين
لارافيل، مرة أخرى، نهجاً القتلى بسيطة للتكوين. قم بإنشاء مجلد داخل التطبيق/التكوين
الذي يتطابق مع البيئة الخاصة بك المرجوة، وأي ملفات التكوين داخل أنها ستأخذ الأسبقية، إذا تطابق اسم البيئة. على هذا النحو، القول، بتعيين مفتاح API فواتير مختلفة للتنمية، يمكن أن تفعله:
1 |
<?php app/config/development/billing.php |
2 |
|
3 |
return [ |
4 |
'api_key' => 'your-development-mode-api-key' |
5 |
];
|
سويتشارو التكوين التلقائي. ببساطة اكتب Config::get('billing.api_key')
، وسوف لارافيل في تحديد أي ملف للقراءة من صحيح.
25. زيادة التعلم أعلى الجرف
عندما يتعلق الأمر بالتعليم، أن المجتمع لارافيل، في سن مبكرة نسبيا، وعلى الرغم من بئر لا تنتهي ابدأ. في قليلاً أكثر من سنة، تم إصدار كتب مختلفة نصف دزينة-تتصل بجميع المسائل المتعلقة بالتنمية لارافيل.
تعلم كل شيء من الأساسيات، لاختبار، لبناء وصيانة تطبيقات كبيرة!