programing

트러블 슈팅: "복잡하지 않은 이름의 use 스테이트먼트...효과가 없다.

sourcetip 2022. 10. 29. 16:39
반응형

트러블 슈팅: "복잡하지 않은 이름의 use 스테이트먼트...효과가 없다.

이 에러를 표시하다use Blog;맨 위에.

경고:복합 이름이 아닌 'Blog'인 use 문은 다음 항목에 적용되지 않습니다.

Blog클래스가 입니다.문, 、 록록 、 록고리기기 。

를 「」로 .use Blog\Article;★★★★★★★★★★★★...

사용할 네임스페이스만 지정하면 되나요?수업을 해야 하나요?

네임스페이스 내에 기능이 있으면 어떻게 해야 하나요? 수 에 붙습니다.\Blog\★★★★★★★★…

PHP†use의 C++와using namespace; 이름 공간을 "가져오기"가 아니라 별칭을 정의할 수 있으므로 이름 공간 한정자를 모두 생략할 수 있습니다.

다음 작업을 수행할 수 있습니다.

use Blog\Article as BA;

하지만 그걸 완전히 없앨 순 없어요


결과, 그결,,use Blog쓸모없지만 이렇게 써주시면 됩니다.

use \ReallyLongNSName as RLNN;

, '마음껏 하다'를 사용해야 합니다.\서 파서는 '가 '파서'가 '파서'를 인식하도록 강제합니다.ReallyLongNSName완전한 자격을 갖췄습니다.은 사실이 Blog\Article이는 분명히 이미 네임스페이스 체인입니다.

namespried name(네임스페이스 구분자를 포함하는 완전 수식 네임스페이스 이름)의 경우는, 을 참조해 주세요.Foo\Bar Import명은 완전 수식되어야 하며 현재 네임스페이스를 기준으로 처리되지 않기 때문에 등 글로벌 이름과는 달리 선행 백슬래시는 불필요하며 권장되지 않습니다.

이 질문은 구글에서 이 오류에 대한 첫 번째 결과로 표시되므로 어떻게 수정했는지 설명하겠습니다.

기본적으로 프레임워크가 있다면 Yii2처럼 다음과 같은 클래스 선언에 익숙해질 것입니다.

use Yii;
use yii\db\WhatEver;

class AwesomeNewClass extends WhatEver
{
}

는 에러입니다.Use Yii이 클래스에는 네임스페이스가 없기 때문에

이 클래스에는 네임스페이스가 없으므로 글로벌 기호 테이블을 자동으로 상속하므로 이러한 정의와 같은 작업은 필요하지 않습니다. 삭제하기만 하면 됩니다.

PHP의 문장은 긴 네임스페이스를 읽기 쉬운 것으로 에일리어스 붙이기 위한 편리함일 뿐입니다.실제로는 파일이나 그 외의 조작이 포함되어 있지 않기 때문에, 편리함을 제공하는 것 외에 개발에 영향을 주는 것은 없습니다.부터,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;

다음과 같은 'as' 구문을 사용하지 않을 경우

use \Blog as B;

파일의 네임스페이스를 정의하다

namespace anyname;

use Blog

오류: "The use statement...효과가 없습니다.클래스 정의 전에 특성을 사용하려고 할 때도 표시됩니다.

use My_trait; // should not be here

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

Blog이미 사용 가능하기 때문에$article = new Blog\Article();없이.use Blog;맨 위에.이것이 에러가 나타내는 것입니다.추가한 행은 효과가 없습니다.해도 소용없다use SingleNonNestedClassThatIsAlreadyPresentInTheCurrentNamespace;가명을 붙이고 싶지 않다면use SingleNonNestedClassThatIsAlreadyPresentInTheCurrentNamespace as Phew;.

다른 한편으로 사용하고 싶은 경우$article = new Article();그 후, use는 "filename"의 약자이며, 당신은 다음과 같이 해야 합니다.use Blog\Article;에 상당합니다.use Blog\Article as Article;

실제로 당신은 다음과 같은 일을 할 것이다.

use Some\TooLong\Namespace\App\User;
use Some\TooLong\Namespace\App\Ecommerce;
use Some\TooLong\Namespace\App\Auth;

그렇다고 꼭 그렇지는 않다

use Some\TooLong\Namespace\App\Ecommerce\Cart;
use Some\TooLong\Namespace\App\Ecommerce\Checkout;

뿐만 아니라.이것보다 더 좋은 예가 있을 거예요;)

언급URL : https://stackoverflow.com/questions/9317022/troubleshooting-the-use-statement-with-non-compound-name-has-no-effect

반응형