ইন্টারফেস ঘোষণা করতে পারে না, কারণ নামটি ইতিমধ্যে ব্যবহৃত


12

আমার নতুন মডিউলটিতে একটি সাধারণ ইন্টারফেস তৈরির পরে। আমি বিন / ম্যাজেন্টো সেটআপ টাইপ করেছি: ডি: সংকলন করুন এবং নামটি ইতিমধ্যে ব্যবহৃত হয়েছে বলে আমি একটি ত্রুটি পেয়েছি।

আমার কোডটি এখানে:

namespace Company\Test\Api;

/*
 *  @api
 */
interface XyzInterface {
    public function getSomething();
}

তারপরে আমি এই ত্রুটিটি পেয়েছি:

Repositories code generation... 1/7 [====>-----------------------]  14% 2 secs 52.0 MiBPHP 
Fatal error:  Cannot declare interface Company\Test\Api\XyzInterface, because the name is already in use in .../app/code/Company/Test/Api/XyzInterface.php on line 13

লাইনটি হ'ল "ইন্টারফেস জাইজি ইন্টারফেস" আমি কী ভুল করছি তা নিশ্চিত নই।


1
আপনি দয়া করে স্ট্যাক ট্রেস দেখতে -vvv বিকল্প সহ কমান্ডটি চালাতে পারেন? ফাইলটি কোনও কারণে দু'বার অন্তর্ভুক্ত থাকতে পারে।
বাসকামুজা

এটি কেবল "পিএইচপি মারাত্মক ত্রুটি" দেখায়
নেলি

আপনি xdebug সক্ষম করার চেষ্টা করতে পারেন। আমি মনে করি এটি ব্যাকট্রেস প্রদর্শন সাহায্য করা উচিত।
বাসকামুজা

1
আমি ভুল ত্রুটিযুক্ত "নেমস্পেস" শ্রেণীর কারণেও এই ত্রুটি পেয়েছি
আনসোরি

উত্তর:


36

আজ আমি একই ধরণের ত্রুটি পেয়েছি:

পিএইচপি মারাত্মক ত্রুটি: শ্রেণি declare নাম declare এখানে শ্রেণি ঘোষণা করা যায় না, কারণ নামটি ইতিমধ্যে /var/www/m2/magento2/app/code/p////hehe/class.php 100 লাইন ব্যবহার করা হয়েছে

যেখানে 100 লাইনটি ফাইলের শেষ।

প্রায় 4 ঘন্টা ডিবাগিংয়ের পরে আমি সত্যিই কারণটি খুঁজে পাই: নেমস্পেসের ঘোষণায় একটি ভুল ছাপ। চূড়ান্ত মুহুর্ত পর্যন্ত আমি বিশ্বাস করি নি যে এটি নাম ঘোষণার ক্ষেত্রে একটি টাইপোগ্রাফিক ত্রুটি, তবে যখন আমি সমস্ত নাম নতুন করে লিখেছি - ভুলটি অদৃশ্য হয়ে গেছে। এই নিবন্ধটি খুব সহায়ক ছিল:

আমি কিছুক্ষণের জন্য আমার মাথা স্ক্র্যাচ করব, অবাক হয়ে কী ঘটছে, এবং অবশেষে বুঝতে পারি এটি এটি

Pulsetorm

উদাহরণস্বরূপ, আমি একটি নেমস্পেসের নামটি ভুল টাইপ করেছি এবং যখন প্রাথমিক অটোল্যাডগুলি ক্লাস ফাইলটি লোড করে, তখন এটি যে শ্রেণীর সন্ধান করছে তা সংজ্ঞায়িত করবে না এবং তারপরে দ্বিতীয় অটোলোডার (কম্পোজারের সাধারণত) এটি আবার লোড করে এবং পুনরায় সংজ্ঞা দেওয়ার চেষ্টা করে ভুল ক্লাস

অর্থাত্, ম্যাগেন্টো ক্লাস চেয়েছিল

Pulsestorm\Helloworld\Observers\Block

তবে আমি সংজ্ঞায়িত করেছি

Pulsetorm\Helloworld\Observers\Block

ভুল নাম স্থান ধন্যবাদ।

ধন্যবাদ, অ্যালান ঝড় :)

হালনাগাদ:

এই ত্রুটির আর এক প্রকারের নাম স্থানের অনুপস্থিত অংশের সাথে ভুল নামস্থান ঘোষণা, যেমন এই উদাহরণ হিসাবে:

ত্রুটি:

সংগ্রহস্থলগুলির কোড জেনারেশন ... 1/7 [====> -----------------------] 14% 1 সেকেন্ড 50.0 এমআইবিপিএইচপি মারাত্মক ত্রুটি: ঘোষণা করতে পারছে না ক্লাস মাইগ্রেশন \ পদক্ষেপ \ সংস্করণ11410to2000 টেস্ট, কারণ নামটি ইতিমধ্যে /var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrRRewrite/Version11410to2000Test on000 এ ব্যবহৃত হচ্ছে লাইন 109

যেখানে 109 লাইনটি ফাইলের শেষ।

ফাইলটিতে vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.phpআমরা নেমস্পেসটি খুঁজে পেয়েছিলাম যেমন Migration\Stepকখন সঠিক নেমস্পেস হওয়া উচিত Migration\Step\UrlRewriteকারণ এই শ্রেণীর দিকে যাওয়ার পথ Migration/Step/UrlRewrite। নাম স্থান পরিবর্তন করার Migration/Step/UrlRewriteপরে ত্রুটি চলে গেছে।


1
আমার একই সমস্যা ছিল, এটি উন্মাদ ইস্যু
হামজা আলেয়েড

নাম স্থান ইস্যু জন্য +1। আমি ২ ঘন্টা নষ্ট করেছি অনেক ধন্যবাদ!
ভিজি

1
এছাড়াও কেবল এটিতে যুক্ত করতে চান, আপনার ডিরেক্টরিগুলির নামকরণ করার সময় অতিরিক্ত যত্ন নিন কারণ কেসিংটি অবশ্যই মিলবে - এটি আরও দুই ঘন্টা নষ্ট হতে পারে!
স্মিথে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.