সমস্যার সমাধান “অ-যৌগিক নাম সহ ব্যবহারের বিবৃতি… এর কোনও প্রভাব নেই” rou


97

আমি use Blog;শীর্ষে রেখে দিলে এই ত্রুটিটি পাওয়া ।

সতর্কতা: অ-যৌগিক নাম 'ব্লগ' সহ ব্যবহারের বিবৃতিতে এর কোনও প্রভাব নেই ...

Blog নিবন্ধ, তালিকা এবং বিভাগ এবং কয়েকটি ফাংশন: আমার নাম স্থানটি যেখানে আমার 3 টি শ্রেণি রয়েছে।

আমি যদি আমার রাষ্ট্রপরিধি পরিবর্তন করে থাকি use Blog\Article;তবে এটি কার্যকর হয় ...

আমি যে নামের জায়গাগুলি ব্যবহার করতে চাইছি তা কেবল নির্দিষ্ট করতে পারি না? আমার কি ক্লাস সরবরাহ করা দরকার?

আমার যদি সেই নেমস্পেসের মধ্যে ফাংশন থাকে? যখন আমি তাদেরকে নামের বাইরে বলি, তখন আমি \Blog\প্রত্যেকের নামের সাথে যুক্ত করতে বাধ্য হই ...


না, আমি কোনও কাঠামো ব্যবহার করছি না
thelolcat

4
আমি যখন আমার ফাইলটি namespace পরে ঘোষণা করি তখন আমার সাথে ঘটেছিল use Blah;
ডেরেক ইলচুক

এর অর্থ এইও হতে পারে যে 'ব্লগ' ইতিমধ্যে ইতিমধ্যে অন্তর্ভুক্ত করা হয়েছে এবং আপনি দ্বিতীয়বার এটি ব্যবহার করার চেষ্টা করছেন। আপনি যদি এমন একটি ফ্রেমওয়ার্ক ব্যবহার করেন যা ইতিমধ্যে চেইনটিকে উচ্চতর করে ফেলেছে তবে এটি সাধারণ।
রুহ

@ ডেরেক ইলচুক যদি কেবল এই উত্তর হতে পারে তবে আমি উত্তর দিতে পারি। আমাকে অনেক মাথাব্যথা বাঁচিয়েছে।
আমি খুব চেষ্টা করি তবে

উত্তর:


90

পিএইচপি এর useসি ++ এর মতো নয় using namespace; এটি আপনাকে একটি উপনাম সংজ্ঞায়িত করতে দেয় , নামস্থান "আমদানি" না করে এবং এরপরে পুরোপুরি নামস্থান যোগ্যতা বাদ দিতে পারে।

সুতরাং, আপনি কি করতে পারেন:

use Blog\Article as BA;

... এটি ছোট করার জন্য, তবে আপনি এটি থেকে সম্পূর্ণরূপে মুক্তি পেতে পারবেন না।


ফলস্বরূপ, use Blogঅকেজো, তবে আমি বিশ্বাস করি আপনি লিখতে পারেন:

use \ReallyLongNSName as RLNN;

নোট করুন যে \পার্সারটিকে ReallyLongNSNameপুরোপুরি যোগ্যতাযুক্ত তা জোর করার জন্য আপনাকে অবশ্যই এখানে একটি শীর্ষস্থানীয় ব্যবহার করতে হবে । এটি এর জন্য সত্য নয় Blog\Article, যা স্পষ্টতই ইতিমধ্যে নেমস্পেসের একটি শিকল:

লক্ষ্য করুন namespaced নামের জন্য (যেমন সম্পূর্ণরূপে যোগ্যতাসম্পন্ন নামস্থান নামস্থান বিভাজক ধারণকারী নাম, Foo\Bar যেমন যেমন বিশ্বব্যাপী নাম না যে, এর বিরোধিতাFooBar ), নেতৃস্থানীয় ব্যাকস্ল্যাশ অপ্রয়োজনীয় এবং সেগুলি প্রস্তাবিত নয়, যেমন আমদানি নাম সম্পূর্ণরূপে যোগ্যতাসম্পন্ন হতে হবে, এবং প্রক্রিয়া নেই বর্তমান নামের স্থানের সাথে সম্পর্কিত।


22
আহ যে চুষছে। সুতরাং useজিনিসটি আসলে অকেজো,
এটির

4
@ থেললক্যাট: এর ব্যবহার রয়েছে ... আপনি যা চান তা কেবল তা নয়। :) এটা নেই মত এটি একটি বিরক্তিকর সীমাবদ্ধতা হতে পারে বলে মনে হচ্ছে।
অরবিত

7
এই উত্তরটি কেবল নামছাড়া গতির ফাইলের জন্যই সঠিক। 1) একটি নেমস্পিড ফাইলটিতে, useবিবৃতিতে একটি শীর্ষস্থানীয় use ব্যবহার করার দরকার নেই , কারণ এর যুক্তিগুলি সর্বদাই পরম হিসাবে দেখা হয় (যেমন, বিশ্বব্যাপী নেমস্পেস থেকে শুরু করে)। 2) use Blog;অগত্যা অকেজো নয়: উদাহরণস্বরূপ, কোনও ফাইল নেমস্পিড হিসাবে Blog\Util\CLI, এটি আপনাকে Blog\Entry::method()পরিবর্তে লিখতে সক্ষম করবে \Blog\Entry::method()। এটি সত্যই প্রয়োজনীয় নয়, তবে এটির কোনও প্রভাব রয়েছে। এই ব্যবহারের উদাহরণের জন্য, নেট ফ্রেমওয়ার্কটি দেখুন।
জিল্ক

24

যেহেতু এই ত্রুটির জন্য এই প্রশ্নটি গুগলে প্রথম ফলাফল হিসাবে প্রদর্শিত হচ্ছে আমি কীভাবে এটি স্থির করেছি তা আমি জানিয়ে দেব।

মূলত যদি আপনার কোনও কাঠামো থাকে তবে Yii2 এর মতো বলুন আপনি ক্লাস যেমন ঘোষিত করতে অভ্যস্ত হবেন:

use Yii;
use yii\db\WhatEver;

class AwesomeNewClass extends WhatEver
{
}

Use Yiiএই শ্রেণীর কোনও নাম স্থান নেই বলে আপনি এই ত্রুটিটি পেয়ে যাবেন ।

যেহেতু এই শ্রেণীর কোনও নাম স্থান নেই এটি স্বয়ংক্রিয়ভাবে বৈশ্বিক প্রতীক টেবিলের উত্তরাধিকার সূত্রে প্রাপ্ত এবং তাই এটি সংজ্ঞায়িত করার মতো জিনিসের প্রয়োজন নেই, কেবল এটি সরিয়ে দিন।


হ্যাঁ! এই সমস্ত বুদ্ধি তৈরি! :)
মার্তিও ব্রিডিস

4
আমার জন্য সমস্যাটি ছিল যে আমি বিশ্বব্যাপী নেমস্পেস থেকে একটি চিহ্ন ব্যবহার করার চেষ্টা করছিলাম, use \Passwordতবে পিএইচপি পছন্দ করে না যখন আপনি কোনও এলিফ ছাড়া এটি করার চেষ্টা করেন, তাই এমনকি use \Password as Passwordঠিক কাজ করে।
Kzqai

যখন মডারেটর নেমস্পেস ব্যবহারের ক্ষেত্রে আরও সাধারণ উত্তর খুঁজছিল তখন ওওডি-র ব্যবহারের পরামর্শের জন্য বঞ্চিত।
জোশ হাবদাস

4
@ জোশ আপনি কি সম্পর্কে আছেন? এমনকি আপনার শেষ উত্তরটি আমি পাই না। আপনি এই বলে গেলেন যে কোনও মডারেটর
ওওপি ট্রলিংয়ের

4
@ জোশাহ (বিটিডব্লিউ) আমি এটিকে ঘৃণা করি যখন লোকেরা মতামতযুক্ত ব্লগগুলিকে কোনও প্রশ্নের উত্তর দেওয়ার জন্য
অনুমোদনযোগ্য

6

useপিএইচপি স্টেটমেন্ট সত্যিই কিছু মধ্যে একটি দীর্ঘ নামস্থান করে একটি একটু সহজ পড়তে হতে পারে ওরফে মাত্র একটি সুবিধার্থে। এটি আসলে কোনও ফাইল অন্তর্ভুক্ত করে না বা অন্য কিছু করে না, যা আপনার বিকাশকে প্রভাবিত করে, সুবিধার্থে সরবরাহ করার সাথে। যেহেতু, Blogআপনি কোনও সুবিধার্থে পাচ্ছেন না এমন কিছু হিসাবে এলিয়াস নেই। আমি ভাবতে পারি আপনি এরকম কিছু করতে পারেন

use \Blog as B;

এবং এটি এমনকি কাজ করতে পারে। ( এটি যুক্তিযুক্ত হতে পারে যে আপনি এখানে অস্পষ্টতার মাধ্যমে সুবিধাটি হারাতে পারেন তবে প্রশ্নটি এমনটি নয় ) কারণ আপনি প্রকৃতপক্ষে Blogঅন্য কোনও নামের স্থানটি অপরিষ্কার করছেন । Blog\Articleকাজগুলি ব্যবহার করছে কারণ ডক্স অনুসারে:

// this is the same as use My\Full\NSname as NSname
use My\Full\NSname;

সুতরাং আপনার স্নিপেট সমান হবে:

use Blog\Article as Article;

4
Bআপনি সক্রিয়ভাবে অবিস্মরণীয় কোড না লিখলে বা অন্যকে মাথা ব্যথার জন্য কঠোরভাবে ইচ্ছা না করে দয়া করে কখনও কোনও কল করবেন না ।
জোশ হাবদাস

2

শ্রেণীর সংজ্ঞার আগে যদি আপনি কোনও বৈশিষ্ট্য ব্যবহার করার চেষ্টা করেন তবে "ব্যবহারের বিবৃতি ... এর কোনও প্রভাব নেই ..." ত্রুটিটিও পপ আপ হয়।

use My_trait; // should not be here

class My_class{
// use My_trait; should be here instead
}

2

যদি আপনি সিনট্যাক্সের মতো 'হিসাবে' ব্যবহার করতে না চান

use \Blog as B;

ফাইলের জন্য একটি নেমস্পেস নির্ধারণ করুন

namespace anyname;

use Blog
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.