“비 복합 이름이있는 use 문은… 효과가 없습니다.”문제 해결
내가 use Blog;
맨 위에 놓을 때이 오류가 발생 합니다.
경고 : 비 복합 이름 'Blog'를 사용하는 use 문은 ...
Blog
Article, List 및 Category와 몇 가지 기능의 세 가지 클래스가있는 내 네임 스페이스입니다.
내 statememnt를 use Blog\Article;
다음으로 변경 하면 작동합니다 ...
사용할 네임 스페이스 만 지정할 수 없습니까? 수업을 제공해야합니까?
해당 네임 스페이스 내에 함수가 있으면 어떻게합니까? 네임 스페이스 외부에서 호출하면 이름 앞에 \Blog\
이름 을 붙여야 합니다.
PHP use
는 C ++와 동일하지 않습니다 using namespace
. 네임 스페이스를 "가져 오기"하지 않고 별칭 을 정의 할 수 있으므로 네임 스페이스 한정자를 모두 생략 할 수 있습니다.
따라서 다음을 수행 할 수 있습니다.
use Blog\Article as BA;
... 단축하기는하지만 완전히 제거 할 수는 없습니다.
결과적으로 use Blog
쓸모가 없지만 다음과 같이 쓸 수 있다고 생각합니다.
use \ReallyLongNSName as RLNN;
\
여기에 선행을 사용 하여 구문 분석기 ReallyLongNSName
가 완전하게 인식 되도록 해야합니다 . 이는 Blog\Article
이미 네임 스페이스 체인 인 에는 해당되지 않습니다 .
참고 네임 스페이스 이름을 (예 : 네임 스페이스 구분을 포함하는 정규화 된 네임 스페이스 이름
Foo\Bar
과 같은하지 않는 글로벌 이름, 반대로FooBar
), 선도 백 슬래시가 불필요 수입 이름은 완전해야하고, 처리되지 않기 때문에 권장하지 현재 네임 스페이스에 상대적입니다.
이 질문이이 오류에 대한 Google의 첫 번째 결과로 표시되므로 어떻게 수정했는지 설명하겠습니다.
기본적으로 Yii2와 같은 프레임 워크가있는 경우 다음과 같은 클래스를 선언해야하는 데 익숙해 질 것입니다.
use Yii;
use yii\db\WhatEver;
class AwesomeNewClass extends WhatEver
{
}
Use Yii
이 클래스에는 네임 스페이스가 없기 때문에이 오류가 발생 합니다.
이 클래스에는 네임 스페이스가 없기 때문에 자동으로 전역 심볼 테이블을 상속하므로 이와 같은 정의가 필요하지 않으므로 제거하면됩니다.
use
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;
클래스 정의 전에 트레이 트를 사용하려고하면 "사용 문 ...은 효과가 없습니다 ..."라는 오류 메시지도 나타납니다.
use My_trait; // should not be here
class My_class{
// use My_trait; should be here instead
}
다음과 같은 'as'구문을 사용하지 않으려면
use \Blog as B;
파일에 대한 네임 스페이스 정의
namespace anyname;
use Blog
'Nice programing' 카테고리의 다른 글
git stash가 브랜치마다 고유하지 않은 이유는 무엇입니까? (0) | 2020.10.12 |
---|---|
Perm 공간과 힙 공간 (0) | 2020.10.12 |
'확인'버튼으로 메시지 상자를 추가하는 방법은 무엇입니까? (0) | 2020.10.12 |
div를 "탭 가능"으로 만드는 방법은 무엇입니까? (0) | 2020.10.12 |
Docker는 7000에서 8000까지의 모든 포트 또는 포트 범위를 노출합니다. (0) | 2020.10.12 |