সমস্যাটি সুপরিচিত: lib
ক্লাসগুলি অটোল্যাডারের মাধ্যমে একচেটিয়াভাবে লোড করা হয়, এবং আমরা এগুলি ছাড়া অন্য কোনও পরিবর্তন করতে পারি না:
- এগুলি সম্পূর্ণভাবে কোনও কোডপুলে অনুলিপি করা হয় যা lib এর চেয়ে আগে পরীক্ষা করা হয়।
- পিএসআর -0 অটোলয়েডার ইনস্টল করা , একটি অটোলোড ক্লাসম্যাপ নির্দিষ্ট করে এবং তারপরে সেই ফোল্ডারের কাঠামোর মধ্যে পুরো ফাইলটি অনুলিপি করা। [আমার বর্তমান সমাধান]
আমি একটি শক্ত জায়গায় রয়েছি কারণ আমি এই ফাইলগুলির মধ্যে অনেকগুলি স্পর্শ করতে চাই - তবে আমার বিচক্ষণতা এবং স্থিতিশীলতার জন্য / স্টোরের আপগ্রেডিবিলিটির জন্য পুরো লাইব্রেরি ক্লাস অনুলিপি করতে চাই না।
এখন স্পষ্টতই এই সমস্যার সম্ভাব্য সমাধান রয়েছে তবে তারা সকলেই তাদের নিজস্ব সেটগুলির সমস্যা নিয়ে আসে:
- এওপি রুটে যান এবং পিএইচপি-ভিত্তিক লাইব্রেরি গোয়ের মতো ব্যবহার করুন ! এওপি : সর্বশেষে আমি এটি যাচাই করেছিলাম যে এটির জন্য ম্যাজেন্টো ক্লাসগুলি কেবল একটি উপলব্ধ না হয়েই সুরকার অটোলোডার দ্বারা লোড করা প্রয়োজন। ফ্লাইংম্যানা এই এলাকায় কিছু কাজ করেছে তবে এটি অবশ্যই উত্পাদন ব্যবহারের জন্য প্রস্তুত নয় এবং আমার প্রয়োজনগুলি আরও তাত্ক্ষণিক। আমি একটি এক্সটেনশান হিসাবে জাহাজেও যেতে চাই এবং এর জন্য আরও সুরকার সেটআপ প্রয়োজন।
- যান Aop রুট এবং ব্যবহার নেটিভ পিএইচপি এক্সটেনশন : এই সময়ে সম্ভবত সবচেয়ে অনুকূল, কিন্তু এটা একটি পৃথক এক্সটেনশন ইনস্টল করার উল্লেখ না করতে হবে এটি HHVM সঙ্গে কাজ করবে না।
- পিএইচপি-র ক্লাসকিট এবং / অথবা রানকিট ব্যবহার করুন : এটি অন্য নেটিভ পিএইচপি এক্সটেনশন তাই এটি উপরের মতো একই সমস্যা problem
- প্যাচ কল সাইটগুলিকে আমার নিজের নেমস্পিড (
\Danslo\Varien_X
) সংস্করণটি ব্যবহার করতে হবে , তারপরে আসল (\Varien_X
) থেকে প্রসারিত করুন : প্যাচ করার জন্য খুব বেশি কলসিট রয়েছে এবং এর জন্য পুনর্লিখনের একটি নির্লিপ্ত পরিমাণের প্রয়োজন হবে। কোনও বিকল্প নয়। আমার নিজস্ব রোল: এটি সম্ভব হওয়া উচিত:
- আমার নিজের অটোলোডার লিখুন।
- একটি পৃথক ফোল্ডারে (
{root_dir}/var/tmp
) মূল ক্লাসটি অনুলিপি করুন , এটি মোড়ানোnamespace \Magento { < original contents > }
। - ফাইলটি অন্তর্ভুক্ত করুন।
- আমার সংশোধিত ক্লাস অন্তর্ভুক্ত করুন
OriginalClass extends Magento\OriginalClass {}
এর নেতিবাচক দিকটি স্পষ্ট: গতিশীল কোড জেনারেশন, রেজেক্স, পুনর্লিখনের ক্লাসগুলি লোড করার জন্য একটি সামান্য ওভারহেড। তবে আমি প্রায় নিশ্চিত যে এই মুহুর্তে এটি ~ 5000 লাইন কোডের অনুলিপিটি মারবে যখন আমি কেবল just 100 টি লাইন স্পর্শ করতে / যুক্ত করতে চাই।
আমি জানি যে আমি অনেক জিজ্ঞাসা করছি, তবে সেখানে কি আধুনিক এবং তুলনামূলকভাবে পরিষ্কার কিছু রয়েছে যা এই সমস্যার সমাধান করতে সহায়তা করে?