اكتشف إطار PHP Laravel


الدرس: التثبيت والتنظيم


الصفحة السابقة
في هذا الفصل سوف نتعرف على composer مدير التبعية ( dependency manager) . سنرى أيضًا كيفية إنشاء تطبيق Laravel . سنرى أخيرًا كيف يتم تنظيم الكود في هذا التطبيق.
لاستخدام Laravel واتباع هذا الفصل والدورة بأكملها ، ستحتاج إلى خادم مزود بـ PHP مع الإصدار 5.5.9 على الأقل وكذلك MySQL . هناك العديد من تطبيقات "الكل في واحد" سهلة التثبيت : wampserver ، xampp ، easyphp  ... شخصيًا أستخدم wamp التي تلبي جميع توقعاتي دون أي مشكلة والتي تتيح لي التبديل بين إصدارات PHP و MySQL . بنقرة واحدة.
يوجد أيضًا حل جاهز ،  Homestead  ، سهل التنفيذ في نظام Linux ، ولكنه أقل سهولة في الاستخدام مع Windows . لهذا الأخير هناك احتمال آخر مدروس جيدا : لاراجون Laragon . .
أيًا كان التطبيق الذي تستخدمه ، تحقق من أن لديك الإصدار الصحيح من PHP (الحد الأدنى 5.5.9) . من ناحية أخرى ، يجب تنشيط ملحقات PDO و Tokenizer و OpenSSL و Mbstring في PHP .

Composer


تقديم
قلت لك أن Laravel يستخدم مكونات من مصادر أخرى. بدلاً من دمجها مباشرةً ، يستخدم مدير تبعية: Composer  . إلى جانب ذلك ، يتم التعامل مع مكونات Laravel أيضًا على أنها تبعيات. ولكن ما هو composer؟
تخيل أنك تقوم بإنشاء تطبيق PHP وأنك تستخدم مكونات من مصادر مختلفة: Carbon للتواريخ ، Redis للبيانات ... يمكنك استخدام الطريقة الشاقة من خلال جلب كل هذا يدويًا ، وسوف تواجه عديد الصعوبات:
  • قم بتنزيل جميع المكونات التي تحتاجها ووضعها في بنية المجلد الخاص بك ،
  • تعقب تعارضات التسمية المحتملة بين المكتبات ،
  • تحديث المكتبات يدويًا عند الضرورة ،
  • توفير الكود لتحميل الفئات التي ستستخدمها ...
من الواضح أن كل هذا قابل للتنفيذ ، لكننا نعترف أنه إذا كان من الممكن جعل كل هذه الإجراءات تلقائية ، فسيكون ذلك رائعًا حقًا. هذا هو بالضبط ما يفعله composer !
التثبيت
يستخدم Laravel كمدير التبعية composer . لذلك عليك أن تبدأ بتثبيته على جهاز الكمبيوتر الخاص بك. اعتمادًا على نظامك ، يختلف الإجراء ، لذا أحيلك إلى الموقع للحصول على جميع المعلومات المتعلقة بالموضوع. 
للتثبيت في نظام التشغيل Windows ، قم فقط بتنزيل برنامج إعداد  يقوم بكل شيء كما يقوم بإبلاغ متغير البيئة PATH ، والذي يسمح لك بعد ذلك باستخدام Composer من أي مكان. ومع ذلك ، سوف يسألك برنامج التثبيت عن مكانه php.exe  وسيكون عليك الإجابة. في الواقع Composer هو ملف PHP ويحتاج إلى تنفيذه.
بالنسبة إلى الأنظمة الأخرى ، خاصة Linux ، فإن أسهل طريقة هي الاستخدام curl . فقط اتبع التعليمات المفصلة على الموقع .
لمعرفة المزيد مع Composer ، يمكنك قراءة هذه المقالة.
كيفية عمل Composer
لفهم كيفية عمل Composer ، تحتاج إلى معرفة التنسيق JSON  الذي هو اختصار لـ JavaScript Object Notation . JSON الغرض من الملف هو احتواء معلومات قيمة التسمية. انظر إلى هذا المثال الأساسي:

{
  "name": "Durand",
  "firest_name": "Jean"
}
التسميات هي "الاسم" و "الاسم الأول" والقيم المقابلة " Durand " و" Jean" . يمكن أن تكون القيم أيضًا صفائف أو كائنات. انظر إلى هذا المثال الثاني:

{ 
    "identity1" : {
      "nom": "Durand",
      "prénom": "Jean"
    },
    "identity2" : {
      "nom": "Dupont",
      "prénom": "Albert"
    }   
}
يحتاج Composer إلى ملف composer.json مرتبط. يحتوي هذا الملف على إرشادات لـ Composer: التبعيات ، يتم تحميل الفئات تلقائيًا ... هنا مقتطف من هذا الملف لـ Laravel:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*"
    },
    ...
}

إنشاء تطبيق LARAVEL


المتطلبات الأساسية
Composer يعمل من سطر الأوامر. لذلك أنت بحاجة إلى وحدة التحكم (المسماة Terminal أو Konsole على OS X و Linux ) . من المؤكد أن مستخدمي Linux معتادون على استخدام وحدة التحكم ، ولكنها ليست هي نفسها بشكل عام لمستخدمي Windows . للعثور على وحدة التحكم على هذا النظام ، ابحث عن موجه الأوامر:
framework Laravel MVC
العثور على وحدة التحكم في ويندوز
تم إنشاء هذه الدورة باستخدام الإصدار 5.2. * من Laravel . عندما تنشئ تطبيقًا جديدًا ، إما باستخدام برنامج إنشاء Composer أو المثبت ، ستحصل على أحدث إصدار ثابت. سأحاول الحفاظ على هذه الدورة التدريبية متزامنة مع أحدث إصدار من Laravel ولكن سيكون هناك دائمًا تأخير بين إصدارو إصدار جديد وهذه الدورة التدريبية. إذا واجهت اختلافات في العملية مع الأمثلة المستخدمة ، فلا يزال بإمكانك ، أثناء انتظار تحديث الدورة التدريبية ، قم بتثبيت الإصدار السابق من Laravel . ما عليك سوى استخدام الأمر create-project ، وتحديد الإصدار كوسيطة ثالثة ( التوثيق الكامل هنا ) .
التثبيت مع COMPOSER
هناك عدة طرق لإنشاء تطبيق Laravel . الذي يبدو لي الأبسط هو استخدام الأمر create-project لـ Composer . على سبيل المثال ، أريد إنشاء تطبيق في مجلد laravel5 على جذر الخادم الخاص بي ، إليك بناء الجملة المطلوب استخدامه:

composer create-project --prefer-dist laravel/laravel laravel5
يبدأ التثبيت ويجب علي الانتظار بضع دقائق حتى يقوم Composer بأداء مهمته حتى النهاية. سترى قائمة التنزيلات. في النهاية ، ينتهي بنا المطاف بهذه البنية:
framework Laravel MVC
بنية المجلد Laravel
يمكننا التحقق من أن كل شيء يعمل بشكل جيد باستخدام عنوان URL http: // localhost / laravel5 / public . عادة يجب أن نحصل على هذه الصفحة:
framework Laravel MVC
Laravel الصفحة الرئيسية
ضمن Windows مع Wamp ، من الممكن أن تواجه مشكلة في عرض الصفحة الرئيسية. إذا كانت هذه هي حالتك ، فهناك 3 حلول:
  • لا تستخدم Wamp ولكن على سبيل المثال Laragon ،
  • إنشاء مضيف افتراضي ،
  • اتبع ما يوصى به في هذه الصفحة .
بالنسبة للتحديثات اللاحقة ، لا يزال يكفي استخدام Composer مع أمر التحديث:

composer update
التثبيت مع Laravel المثبت
حل آخر لتثبيت Laravel هو استخدام برنامج التثبيت. يجب أن تبدأ بتثبيت المثبت باستخدام Composer :

composer global require "laravel/installer"
يجب عليك بعد ذلك إعلام متغير البيئة path بموقع المجلد .../composer/vendor/bin .
لإنشاء تطبيق ، فقط اكتب:

laravel new myAppli
سيتم بعد ذلك تثبيت Laravel في المجلد myAppli .
إذا قمت بتثبيت Laravel عن طريق تحميل الملفات مباشرة من Github واستخدام أمر تثبيت Composer ، فأنت بحاجة إلى تنفيذ إجراءين إضافيين. في الواقع ، في هذه الحالة لن يتم إنشاء مفتاح أمان تلقائيًا وستصادف خطأً عند التنفيذ. لذلك يجب أن يتم إنشاؤه باستخدام الأمر php artisan key:generate . من ناحية أخرى ، سيكون لديك في جذر الملف .env.example الذي ستحتاج إلى إعادة تسميته .env حتى يعمل الاعداد.
أذونات AUTHORIZATION
على مستوى مجلد Laravel ، هو الوحيد الذي يحتاج إلى أذونات كتابة الخادم storage .
الخادم
لتعمل بشكل صحيح ، يحتاج Laravel الى PHP :
  • الإصدار> = 5.5.9
  • تمديد PDO
  • تمديد Mbstring
  • OpenSSL التمديد
  • تمديد Tokenizer
عناوين URL نظيفة
بالنسبة لخادم Apache ، يوجد في المجلد public ملف .htaccess به هذا الكود في المجلد :

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
الهدف هو تجنب وجود index.php في عنوان url . ولكن لكي تعمل ، يجب عليك تنشيط الوحدة mod_rewrite
هناك طريقة أخرى للحصول على Laravel مخصصة وهي استخدام أداة الإنترنت الخاصة بي . أنا أصف ذلك قليلا هنا .

تنظيم Laravel


الآن بعد أن أصبح لدينا Laravel جديد يعمل ، دعونا نلقي نظرة على ما يحتوي عليه.
مجلد التطبيق (app)
يحتوي هذا المجلد على العناصر الأساسية للتطبيق:
framework Laravel MVC
مجلد التطبيق
  • : Console/Commands وحدة التحكم / الأوامر  جميع الأوامر في وضع وحدة التحكم ، يوجد في البداية أمر Inspire  يعمل كمثال ،
  • Jobs الوظائف:   الأوامر المتعلقة بالمهام التي يتعين على التطبيق تنفيذها. هذه ميزة جديدة في الإصدار 5 لن أناقشها في هذه الدورة التدريبية ،
  • Events  و  Listeners : اللازمة للتطبيق،
  • Http : كل ​​ما يتعلق بالاتصال: وحدات التحكم (Controllers)، والطرق(routes) ، والوسيطة (middlewares) (هناك أربعة وسيطات أساسية) والطلبات ،
  • Providers مقدمي الخدمات : جميع مقدمي الخدمات ، هناك بالفعل 4 في البداية. يتم استخدام مقدمي الخدمات  لتهيئة المكونات.
  • Policies السياسات   : تطور حديث يتيح إدارة سهلة لحقوق الوصول.
نجد أيضًا ملف User.php وهو نموذج يتعلق بالمستخدمين لقاعدة البيانات.
من الواضح أن كل هذا يجب أن يبدو غامضًا في الوقت الحالي ، لكننا سنرى بالتفصيل معظم هذه الأقسام خلال الدورة.
ملفات أخرى
framework Laravel MVC
ملفات أخرى
فيما يلي وصف لمحتويات الملفات الأخرى:
  • bootstrap  : البرامج النصية لتهيئة Laravel للتحميل التلقائي للفئة ، وتحديد البيئة والمسارات ، ولبدء تشغيل التطبيق ،
  • public : كل ​​ما يجب أن يظهر في المجلد العمومي للموقع: الصور ، CSS ، البرامج النصية ...
  • vendor  : جميع مكونات Laravel وملحقاتها ،
  • config  : جميع التكوينات: التطبيق ، المصادقة ، ذاكرة التخزين المؤقت ، قاعدة البيانات ، مساحات الأسماء ، رسائل البريد الإلكتروني ، أنظمة الملفات ، الجلسة ...
  •  :database  migrations et les populations
  • resources  : طرق العرض وملفات اللغة والأصول (على سبيل المثال ملفات LESS أو Sass ) ،
  • storage  : بيانات التطبيق المؤقتة: طرق العرض المجمعة ، ذاكرات التخزين المؤقت ، مفاتيح الجلسة ...
  • tests  : ملفات اختبار الوحدة.
ملفات الجذر
يوجد عدد معين من الملفات في الجذر ، وفيما يلي أهمها:
  • artisan  : أداة Laravel على الإنترنت و التي تقوم بمهام الإدارة ،
  • composer.json  : الملف المرجعي لـ composer ،
  • phpunit.xml  : ملف تعديلات phpunit  (لاختبارات الوحدة) ،
  • .env   : ملف لتحديد بيئة التنفيذ.
إمكانيات الوصول
لأسباب تتعلق بالأمان على الخادم ، يجب فقط الوصول إلى المجلد public :
framework Laravel MVC
يمكن فقط الوصول إلى المجلد public
هذه التعديلات غير ممكنة دائمًا على خادم مشترك ، يجب عليك تعديل Laravel قليلاً حتى يعمل ؛ سأتحدث عن ذلك في الفصل الخاص بالنشر.
البيئة ورسائل الخطأ
بشكل تلقائي عند تثبيت Laravel ، يكون في وضع "تصحيح" . على مستوى عرض الخطأ إذا أدخلت عنوان URL غير متوفر ، فستحصل على شيء مثل هذا:
framework Laravel MVC
رسالة خطأ في وضع "تصحيح"
خلال مرحلة التطوير ، نحتاج إلى الحصول على رسائل واضحة لتعقب الأخطاء الحتمية التي سنرتكبها. في وضع "الإنتاج" ، يتعين عليك تغيير هذا الوضع ، لذلك افتح الملف config/app.php  وابحث عن هذا السطر:

'debug' => env('APP_DEBUG', false),
بمعنى آخر ، سوف نبحث عن القيمة في البيئة ، لكن أين يمكننا أن نجدها؟ انظر إلى جذر المجلدات ، ستجد ملفًا هناك .env :
framework Laravel MVC
ملف البيئة
مع هذا المحتوى:

APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:/qnv1yuwcCDFJuki91gc7LBtIzRkJgFxusIX2x1wwUM=
APP_URL=http://localhost

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
...
لاحظت أن المتغير في هذا الملف APP_DEBUG له القيمة true . سنبقيها بهذه الطريقة لأننا نريد أن نكون في وضع "تصحيح" . أنت في وضع التصحيح مع عرض رسائل خطأ مفصلة. إذا قمت بوضعه false (أو حذفه) ، باستخدام عنوان URL غير متوقع ، فستحصل الآن على:
framework Laravel MVC
رسالة خطأ في وضع "الإنتاج"
من الواضح ، يجب ألا تترك القيمة true  أثناء بدء الإنتاج! سنتحدث عن ذلك عندما نرى الإدارة البيئية. لن تخاطر بنسيان تغيير هذه القيمة لأن Laravel ستعرف ما إذا كنت تعمل على خادم التطوير أو الإنتاج لديك.
يتم إنشاء قيمة APP_KEY التي تؤمن المعلومات تلقائيًا أثناء التثبيت باستخدام create-project .

المكون HTML


في الإصدار 4 من Laravel ، كان هناك المكون Html  الذي يسمح بإنشاء النماذج بسهولة والذي يقدم الكثير من المساعدين لكتابة HTML . في الإصدار 5 ، لا يتم تحميل هذا المكون تلقائيا. كما سنحتاج في هذه الدورة التدريبية ، بمجرد الانتهاء من تثبيت تطبيق Laravel جديد تمامًا ، ستقوم بتعديل الملف كما يلي composer.json  :

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "laravelcollective/html": "5.2.*"
},
نطلب من Composer تحميل المكون / larmlelcollective html . ثم نقوم بتشغيل تحديث (احرص على وضع نفسك في المجلد الجذر للتطبيق):

composer update
انتظر التحميل حتى النهاية. ثم عليك تعديل الملف كما يلي config/app.php :

<?php

    /*
     * Application Service Providers...
     */
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    Collective\Html\HtmlServiceProvider::class,
    
    ...
    
    'View'  => Illuminate\Support\Facades\View::class,
    'Form'  => Collective\Html\FormFacade::class,
    'Html'  => Collective\Html\HtmlFacade::class,
    
    ...
لذلك أضف هذا السطر في جدول مقدمي الخدمات providers :

<?php
Collective\Html\HtmlServiceProvider::class,
يجب أيضًا إضافة هذين السطرين إلى جدول الاسماء المستعارة alias :

<?php
'Form'  => Collective\Html\FormFacade::class,
'Html'  => Collective\Html\HtmlFacade::class,
لذلك سيكون لديك هذا المكون مفيد جدا!
يتم اشتقاق المكون المستخدم Illuminate/html  والذي لن يتم اتباعه بعد ذلك.

في الخلاصة


  • لتثبيته وتحديثه يستخدم Laravel مدير التبعية Composer .
  • يتم إنشاء تطبيق Laravel من وحدة التحكم باستخدام سطر أوامر بسيط.
  • يتم تنظيم Laravel في عدة ملفات.
  • الملف public  هو الوحيد الذي يجب أن يكون في متناول العميل.
  • تم تعيين البيئة باستخدام الملف  .env .
  •  لا يتم توفير المكون Html بشكل تلقائي ، يجب تحميله بشكل مستقل.