Composer: تحميل الملفات تلقائيًا - قم بتحميل البائعين أولاً

تم إنشاؤها على ٣٠ يوليو ٢٠١٢  ·  11تعليقات  ·  مصدر: composer/composer

أنا أستخدم التحميل التلقائي مع أداة تحميل الملفات المخصصة. ولدي مشكلة لأن محمل بلدي يعتمد على بعض الفئات من البائعين. لكن الملحن يتطلب محملتي قبل محمل البائع.

تم إنشاء هنا autoloader.php :

<?php

// autoload.php generated by Composer
if (!class_exists('Composer\\Autoload\\ClassLoader', false)) {
    require __DIR__ . '/composer' . '/ClassLoader.php';
}

return call_user_func(function() {
    $loader = new \Composer\Autoload\ClassLoader();
    $composerDir = __DIR__ . '/composer';

    $map = require $composerDir . '/autoload_namespaces.php';
    foreach ($map as $namespace => $path) {
        $loader->add($namespace, $path);
    }

    $classMap = require $composerDir . '/autoload_classmap.php';
    if ($classMap) {
        $loader->addClassMap($classMap);
    }

    $loader->register();

    require $baseDir . '/Nella/loader.php'; // <-- my libs
    require $vendorDir . '/nette/nette/Nette/loader.php'; // <-- vendor libs

    return $loader;
});

أحتاج إلى تحميل _Nette_ قبل libs (_Nella_) لأن محمل (_Nella_) الخاص بي يتطلب بعض الفئات من _Nette_.

Bug

التعليق الأكثر فائدة

سيكون من الجيد أن تكون قادرًا على تحديد الترتيب. أو أفضل: لديك خيار إضافي لتحديد الملفات التي يجب تحميلها أولاً.

حالة الاستخدام: محاولة تجاوز الوظائف المساعدة لـ laravel كما تم تحديدها على وجه التحديد مع وضع ذلك في الاعتبار ، ولكن لا توجد طريقة لإخبار الملحن أن تعريفي يجب أن يأتي قبل التعريف الأصلي لـ Laravel.

السياق: https://laracasts.com/index.php/discuss/channels/general-discussion/override-functions-in-supporthelpersphp

الحل البديل: https://github.com/funkjedi/composer-include-files

ال 11 كومينتر

Seldaek أعتقد أن الترتيب هنا يجب أن يحترم الترتيب الموجود عند حل التبعيات ، بحيث يتم تحميل ملف التحميل التلقائي الخاص بالتبعية قبل ملف الحزمة بناءً على ذلك.

نعم ، هذا منطقي ، لست متأكدًا من مدى سهولة تحقيقه على الرغم من أنه بعد الجولة الأولى أعتقد أنه عشوائي تمامًا.

لست متأكدًا تمامًا من أنني حصلت على هذا؟ ستكون هناك حاجة إلى جميع أدوات التحميل التلقائي ، ومن ثم لا ينبغي أن يهم الأمر؟

تحرير: ما عليك إلا فهمت :)

يجب أن يقوم المحلل بإرجاعها بالترتيب الصحيح في المعاملة ، بما في ذلك الحالة التي تكون فيها الحزم مثبتة بالفعل ، لذلك لست متأكدًا من سبب عدم صحة الطلب.

لقد واجهت للتو نفس المشكلة مع kdyby/forms-replicator

{
    "name":"kdyby/forms-replicator",
    "require":{
        "php":">=5.3.2",
        "nette/nette":"*"
    },
    "autoload":{
        "files":["Replicator.php"]
    }
}

يجب أن يتوافق ترتيب require في autoload_real.php مع كيفية طلب الحزم لبعضها البعض.

تم دمج إصلاح HosipLan .

كيف نحدد أن تحريرنا يجب أن يتم تحميله أولاً؟
أعني ، أنه لا يعتمد على الآخر ، ولكن يجب تحميله أولاً قبل تحميل أي شيء آخر.

لدي نفس السؤال مثل onlyongunz - لقد قمت بتثبيت apigen/apigen و symfony/var-dumper عالميًا ، لكن عندما أستخدم إصدار dump() من tracy/tracy (مطلوب بواسطة ApiGen) يسمى. أريد استخدام إصدار VarDumper.

سيكون من الجيد أن تكون قادرًا على تحديد الترتيب. أو أفضل: لديك خيار إضافي لتحديد الملفات التي يجب تحميلها أولاً.

حالة الاستخدام: محاولة تجاوز الوظائف المساعدة لـ laravel كما تم تحديدها على وجه التحديد مع وضع ذلك في الاعتبار ، ولكن لا توجد طريقة لإخبار الملحن أن تعريفي يجب أن يأتي قبل التعريف الأصلي لـ Laravel.

السياق: https://laracasts.com/index.php/discuss/channels/general-discussion/override-functions-in-supporthelpersphp

الحل البديل: https://github.com/funkjedi/composer-include-files

حسنًا ، أعتقد أنني سأقترح load_first لإعطاء الأولوية للحزمة عند التحميل عندما لا تعتمد على كتابات أخرى (ما لم تكن php أو أي شيء آخر) ، وأضف --ignore-order لتجاهل load_first .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات