اذهب إلى المحتوى

السؤال

نشر

حملت اكثر من مكثبه ولا قدرت استعمل اي واحده منها والسبب هو عدم معرفتي بكيفية تظمين ملفات هذه المكتبات، اقصد لا استطيع العثور على مسار محدد او ملف معين لتضمينه وتشنغل المكتبه، ووجدت بعض المكتبت تقوم بتضمين هذا المسار 

vendor/autoload.php

ولكن عدما ابحث في مجلدات وملفات المكتبه عن هذا المسار لا اجده مطلقا، اعتقد جميع ملفات المكتبه تم تضمينها في الملف autoload.php, ولكن هذا الملف غير موجود او كيف يمكن التعامل معه، اتمنى اي شخص تعامل مع اي مكتبه من هذه الشاكله يشرح لي وللجميع كيف نظم هذه المكتبات والعمل بها خطوة بخطوة لتعم الفائدة، للعلم انا انشئت فورم ورك بسيط، بحيث قمت بتضمين جميع مسارات الملفات في ملف واحد ومن ثم اضمن هذا الملف في اي ملف اريد كتابة كود فيه واستفيد من الكلاسات تبع الفورم ورك خاصتي لكن مع المكتبات الخارجيه لا اعلم كيف يتم تضمين وربط الملفات ببعضها البعضوكيف يمكن الوصول والاستفاده من كلاسات المكتبه، خاصه اانني لا اعلم اين الملف الذي تم تضمين جميع الملفات بداخله

Recommended Posts

  • 1
نشر

الملف vendor/autoload.php يتم توليده من قِبل Composer وهو عبارة عن أداة تقوم بإدارة الحزم والمكتبات الخاصة بلغة PHP في المشروع، يمكنك تحميل وتثبيت Composer من هنا

لماذا تستعمل Composer؟

إذا كنت تعمل على أحد المشاريع وتستخدم العديد من الحزم والمكتبات في مشروع، فستجد أنك تقوم ببعض الخطوات الروتينية في كل مرة تريد إضافة أو تحديث مكتبة في المشروع، حيث تقوم بتحميل المكتبة من الإنترنت وتضيفها إلى المشروع حسب طريقة الإستدعاء الخاصة بها، وعليك أن تتأكد بنفسك من الإصدار الذي تريد أن تعمل عليه (وتبحث عنه في الإنترنت أيضًا)، كما يجب أن تقوم بإستخدام الدالة require و الدالة include لإستدعاء المكتبة ولن تستطيع إستخدام namespace بسهولة.

وهنا يأتي دور Composer حيث يقوم بكل هذه الخطوات بصورة تلقائية، فعلى سبيل المثال لتثبيت المكتبة monolog/monolog (مكتبة خاصة بالتسجيل logging)، كل ما عليك هو تنفيذ الأمر التالي في مجلد المشروع:

 composer require monolog/monolog

وسيقوم Composer بالبحث في موقع packagist (أكبر موقع يحتوي على مكتبات لغة PHP بشكل مجاني) إلى أن يجد المكتبة المطلوبة ويتأكد من الإصدار المستخدم في المشروع (يمكنك تحديد إصدار معين عند عملية التثبيت)، وسيقوم Composer بتحميل الإصدار الصحيح في مجلد vendor حيث سيتم عمل المجلد  monolog/monolog في داخله وستجد فيه كل ملفات المكتبة، ثم سينشئ Composer ملف autoloader.php لجميع المكتبات المحمّلة وسيحمّل الاعتمادية كاملةً في المشروع الذي تعمل عليه، وبالتالي ليس عليك سوى إستدعاء هذا الملف فقط لتستطيع إستخدام كل المكتبات التي تم تثبيتها بشكل مباشر.

الملفات التي يتم إنشائها تلقائيًا من خلال Composer

يقوم Composer بإنشاء بعض الملفات الإضافية، وهي ملفات أساسية لكي يعمل (يتم إنشاء هذه الملفات أول مرة فقط، وبعد ذلك يتم التعديل عليها فقط عند تثبيت أي مكتبة جديدة). من ضمن تلك الملفات ستجد الملف composer.json وهو يحتوي على كل المكتبات التي تم تثبيتها في المشروع مع إصدارها الحالي.

محتوى الملف composer.json:

{
    "require": {
        "monolog/monolog": "^2.3"
    }
}

وستجد الملف composer.lock، وهو ملف يحتوي على كل المكتبات والحزم التي تم تثبيتها بالتفصيل (إصدار PHP المطلوب لتعمل المكتبة ومصدر المكتبة ومالك المكتبة وحقوقها .. إلخ)، وكذلك المكتبات والحزم الإضافية التي تحتاجها المكتبات.

يمكنك الآن أن تستعمل المكتبة monolog/monolog كالتالي:

<?php
require __DIR__ . '/vendor/autoload.php';

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->warning('Foo');

لاحظ تم إستخدام الأصناف Monolog\Logger و Monolog\Handler\StreamHandle بشكل مباشر، وذلك لأننا إستخدمنا الملف vendor/autoload.php في بداية الملف، حيث يقوم بتجهيز وإستدعاء كل الملفات المطلوبة تلقائيًا.

الكود السابق سوف ينشيء ملف باسم app.log وستم كتابة بعض البيانات فيه:

[2021-12-01T19:11:32.629010+00:00] name.WARNING: Foo [] []

إدارة المكتبات من خلال Composer

يمكنك أيضًا أن تقوم بتحديث المكتبات من خلال الأمر التالي:

composer update

عند تنفيذ هذا الأمر، فسيبحث composer عند أحدث إصدار لكل مكتبة يمكن تثبيته، ويقوم بتحديث المكتبات.
أو يمكن حذف أحد المكتبات من خلال الأمر remove واسم المكتبة التالي:

composer remove monolog/monolog

لمزيد من المعلومات عن Composer يمكنك أن تقرأ هذه المقالات هنا:

 

  • 0
نشر
بتاريخ 19 ساعات قال سامح أشرف:

الملف vendor/autoload.php يتم توليده من قِبل Composer وهو عبارة عن أداة تقوم بإدارة الحزم والمكتبات الخاصة بلغة PHP في المشروع، يمكنك تحميل وتثبيت Composer من هنا

لماذا تستعمل Composer؟

إذا كنت تعمل على أحد المشاريع وتستخدم العديد من الحزم والمكتبات في مشروع، فستجد أنك تقوم ببعض الخطوات الروتينية في كل مرة تريد إضافة أو تحديث مكتبة في المشروع، حيث تقوم بتحميل المكتبة من الإنترنت وتضيفها إلى المشروع حسب طريقة الإستدعاء الخاصة بها، وعليك أن تتأكد بنفسك من الإصدار الذي تريد أن تعمل عليه (وتبحث عنه في الإنترنت أيضًا)، كما يجب أن تقوم بإستخدام الدالة require و الدالة include لإستدعاء المكتبة ولن تستطيع إستخدام namespace بسهولة.

وهنا يأتي دور Composer حيث يقوم بكل هذه الخطوات بصورة تلقائية، فعلى سبيل المثال لتثبيت المكتبة monolog/monolog (مكتبة خاصة بالتسجيل logging)، كل ما عليك هو تنفيذ الأمر التالي في مجلد المشروع:


 composer require monolog/monolog

وسيقوم Composer بالبحث في موقع packagist (أكبر موقع يحتوي على مكتبات لغة PHP بشكل مجاني) إلى أن يجد المكتبة المطلوبة ويتأكد من الإصدار المستخدم في المشروع (يمكنك تحديد إصدار معين عند عملية التثبيت)، وسيقوم Composer بتحميل الإصدار الصحيح في مجلد vendor حيث سيتم عمل المجلد  monolog/monolog في داخله وستجد فيه كل ملفات المكتبة، ثم سينشئ Composer ملف autoloader.php لجميع المكتبات المحمّلة وسيحمّل الاعتمادية كاملةً في المشروع الذي تعمل عليه، وبالتالي ليس عليك سوى إستدعاء هذا الملف فقط لتستطيع إستخدام كل المكتبات التي تم تثبيتها بشكل مباشر.

الملفات التي يتم إنشائها تلقائيًا من خلال Composer

يقوم Composer بإنشاء بعض الملفات الإضافية، وهي ملفات أساسية لكي يعمل (يتم إنشاء هذه الملفات أول مرة فقط، وبعد ذلك يتم التعديل عليها فقط عند تثبيت أي مكتبة جديدة). من ضمن تلك الملفات ستجد الملف composer.json وهو يحتوي على كل المكتبات التي تم تثبيتها في المشروع مع إصدارها الحالي.

محتوى الملف composer.json:


{
    "require": {
        "monolog/monolog": "^2.3"
    }
}

وستجد الملف composer.lock، وهو ملف يحتوي على كل المكتبات والحزم التي تم تثبيتها بالتفصيل (إصدار PHP المطلوب لتعمل المكتبة ومصدر المكتبة ومالك المكتبة وحقوقها .. إلخ)، وكذلك المكتبات والحزم الإضافية التي تحتاجها المكتبات.

يمكنك الآن أن تستعمل المكتبة monolog/monolog كالتالي:


<?php
require __DIR__ . '/vendor/autoload.php';

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->warning('Foo');

لاحظ تم إستخدام الأصناف Monolog\Logger و Monolog\Handler\StreamHandle بشكل مباشر، وذلك لأننا إستخدمنا الملف vendor/autoload.php في بداية الملف، حيث يقوم بتجهيز وإستدعاء كل الملفات المطلوبة تلقائيًا.

الكود السابق سوف ينشيء ملف باسم app.log وستم كتابة بعض البيانات فيه:


[2021-12-01T19:11:32.629010+00:00] name.WARNING: Foo [] []

إدارة المكتبات من خلال Composer

يمكنك أيضًا أن تقوم بتحديث المكتبات من خلال الأمر التالي:


composer update

عند تنفيذ هذا الأمر، فسيبحث composer عند أحدث إصدار لكل مكتبة يمكن تثبيته، ويقوم بتحديث المكتبات.
أو يمكن حذف أحد المكتبات من خلال الأمر remove واسم المكتبة التالي:


composer remove monolog/monolog

لمزيد من المعلومات عن Composer يمكنك أن تقرأ هذه المقالات هنا:

 

اخي هل يوجد طريقه اخرى لتضمين المكتبات غير الكمبوسر لانه لا يشتغل عندي او يشتغل ولكنه يفشل في تحميل المكتبات الحزم، انا استهدم هاتف اندرويد واستخدم برنامج سطر الاوامر تيرمكس

  • 0
نشر
بتاريخ 54 دقائق مضت قال علي الكاسر:

اخي هل يوجد طريقه اخرى لتضمين المكتبات غير الكمبوسر لانه لا يشتغل عندي او يشتغل ولكنه يفشل في تحميل المكتبات الحزم، انا استهدم هاتف اندرويد واستخدم برنامج سطر الاوامر تيرمكس

إن لم يكن لديك composer مسبقًا، فستحتاج أولًا إلى تثبيت composer من خلال الأمر التالي:

pkg install composer

ثم يمكنك أن تقوم بمحاولة تثبيت أحد الحزم كتجربة في مجلد جديد، من خلال مثل هذا الأمر:

composer require monolog/monolog

ثم يمكنك التأكد من أن عملية التثبيت تمت بنجاح من خلال عرض محتويات الملف composer.json، حيث سيحتوي على اسم الحزمة وإصدارها أيضًا.

أما إن لم تستخدم composer من الأساس، فستحتاج إلى أن تقوم بعمل ما يقوم به composer يدويًا، مثل البحث عن المكتبات وإختيار الإصدار المناسب والمتوافق مع إصدار php لديك وكذلك الإصدار المتوافق مع باقي المكتبات المثبته بالفعل .. إلخ.

  • 0
نشر
بتاريخ منذ ساعة مضت قال سامح أشرف:

إن لم يكن لديك composer مسبقًا، فستحتاج أولًا إلى تثبيت composer من خلال الأمر التالي:


pkg install composer

ثم يمكنك أن تقوم بمحاولة تثبيت أحد الحزم كتجربة في مجلد جديد، من خلال مثل هذا الأمر:


composer require monolog/monolog

ثم يمكنك التأكد من أن عملية التثبيت تمت بنجاح من خلال عرض محتويات الملف composer.json، حيث سيحتوي على اسم الحزمة وإصدارها أيضًا.

أما إن لم تستخدم composer من الأساس، فستحتاج إلى أن تقوم بعمل ما يقوم به composer يدويًا، مثل البحث عن المكتبات وإختيار الإصدار المناسب والمتوافق مع إصدار php لديك وكذلك الإصدار المتوافق مع باقي المكتبات المثبته بالفعل .. إلخ.

اخي استخدمت ما اخبرتني به والامر شغال ممتاز لكن لا اعلم اين قام بتحميل المكتبه 

كيف اجعله يحمل المكتبه في مجلد المشروع

  • 0
نشر
بتاريخ الآن قال علي الكاسر:

اخي استخدمت ما اخبرتني به والامر شغال ممتاز لكن لا اعلم اين قام بتحميل المكتبه 

كيف اجعله يحمل المكتبه في مجلد المشروع

يتم تحميل المكتبة في المكان الحالي في سطر الأوامر، ويمكنك التأكد من هذا الأمر من خلال تنفيذ الأمر التالي:

ls

وستجد أنه يوجد كل الملفات والمجلدات الخاصة بـ composer (مثل composer.json و vendor .. إلخ).

أما إن أردت تثبيت المكتبة (وملفات composer) في مشروع موجود، فعليك أن تذهب إلى مجلد المشروع أولًا من خلال الأمر cd، على النحو التالي:

cd path/to/my-project

مع تغير المسار إلى مسار المشروع الخاص بك.

  • 0
نشر
بتاريخ 4 دقائق مضت قال سامح أشرف:

أما إن أردت تثبيت المكتبة (وملفات composer) في مشروع موجود، فعليك أن تذهب إلى مجلد المشروع أولًا من خلال الأمر cd، على النحو التالي:


cd path/to/my-project

مع تغير المسار إلى مسار المشروع الخاص بك.

فعلت هذا وفشل في تحميل المكتبه رغم انه نجح في تحميلها عدما لم ادخل لملف المشروع، هل هناك طريقه لنقل ماتم تحميله في الدليل العام للكمبوسر الى دليل ومجلد المشروع 

  • 0
نشر
بتاريخ 1 دقيقة مضت قال علي الكاسر:

فعلت هذا وفشل في تحميل المكتبه رغم انه نجح في تحميلها عدما لم ادخل لملف المشروع، هل هناك طريقه لنقل ماتم تحميله في الدليل العام للكمبوسر الى دليل ومجلد المشروع 

في الغالب ليس لديك صلاحيات للتعديل على مجلد المشروع، لذلك أرجو منك تنفيذ الأمر التالي:

termux-setup-storage

سيطلب منك صلاحيات الوصول إلى الملفات، ويجب أن تقوم بالسماح للتطبيق من خلال الضغط على "سماح allow"

بعد ذلك حاول مرة أخرى تحميل المكتبة عبر composer في مجلد المشروع

  • 0
نشر
بتاريخ 12 دقائق مضت قال سامح أشرف:

في الغالب ليس لديك صلاحيات للتعديل على مجلد المشروع، لذلك أرجو منك تنفيذ الأمر التالي:


termux-setup-storage

سيطلب منك صلاحيات الوصول إلى الملفات، ويجب أن تقوم بالسماح للتطبيق من خلال الضغط على "سماح allow"

بعد ذلك حاول مرة أخرى تحميل المكتبة عبر composer في مجلد المشروع

للاسف اخي فعلت ماطلبت وفشل في التحميل، عندما ادخل الامر ls تطهر لي ملفات ومجلدات من بينها المكتبه التي طلبت مني ان احرب تحميلها ولكن لا يمكنني استخدامها متلم انزلها لمجلد المشروع كيف يمكن ان انقلها او انسخها لمجلد المشروع 

  • 0
نشر
بتاريخ 16 دقائق مضت قال علي الكاسر:

للاسف اخي فعلت ماطلبت وفشل في التحميل، عندما ادخل الامر ls تطهر لي ملفات ومجلدات من بينها المكتبه التي طلبت مني ان احرب تحميلها ولكن لا يمكنني استخدامها متلم انزلها لمجلد المشروع كيف يمكن ان انقلها او انسخها لمجلد المشروع 

يمكنك نقل الملفات والمجلدات عبر الأمر التالي:

cp old/path/filename new/path/filename
cp old/path/dirname new/path/dirname -r

يجب أن تستخدم r- عندما تحاول نقل مجلد ما

أيضًا، يمكنك محاولة إنشاء/نقل المشروع في مجلد downloads (في الذاكرة الداخلية) والدخول إلى المشروع عبر الأمر التالي:

cd storage/downloads/my-project

ثم تنفيذ أوامر composer مرة أخرى

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...