2017-12-04 25 views
2

Silverstripe 3에서 eveything은 필요에 따라 자동로드되었습니다. 즉, 사용하고자하는 클래스와 메서드를 알 수있었습니다. 예 :Silverstripe 4 - 액세스 핵심 방법

Debug::dump('dump message'); 

내가 제대로 SS4의 개념을 이해하고있어 경우에, 하나는 당신이 방법 (또는 속성)를 사용하고자하는 파일에 클래스를 가져올 필요가있다. 위의 예에서 파일 상단에서 다음과 같이 처리해야합니다.

use /name/space/to/Debug 
Debug::dump('dump message'); 

올바른지 이해하고 있습니까? 만약 그렇다면, 나의 진정한 질문은 개발자가 코어의 모든 것의 정확한 위치를 효과적으로 어떻게 알 수 있는가하는 것이다. 그들은이 핵심 파일이 시스템의 어디에 이름과 사용 방법을두고 있는지 정확히 알기를 기대합니까? 이것을 돕기위한 도구 나 방법이 있습니까?

답변

7

우선, 설명하는 것은 자동 로딩이 아니라 별칭과 유사하지만 두 가지가 관련되어 있습니다.

Debug 클래스가 더 이상 전역 이름 공간에 없기 때문에 이름이 훨씬 상세합니다 (SilverStripe\Dev\Debug). 이것은 완전한 클래스 이름 또는 간단히 "FQCN"이라고합니다. 그러나 그 새로운 이름에 관해서는 짧지는 않습니다. 입력하기가 번거롭고 클래스의 이름이 변경되면 많은 업데이트가 필요합니다.

이 목적을 위해 use 문을 사용하여 해당 클래스를 별칭으로 파일의 로컬 범위로 "가져 오기"할 수 있습니다. 기본적으로 해당 별칭은 FQCN (Debug)의 후행 부분이지만 사용자가 원하는 별칭을 사용할 수도 있습니다. (use SilverStripe\Dev\Debug as MyDebugger).

SS4는 이제 이름 공간이 중요한 부분 인 PSR-4 autoloading을 사용합니다. 매우 짧은 기간에, 그것은 디렉토리 구조가 FQCN과 일치해야한다고 지시한다. /framework/src/Dev/Debug.php. 이렇게하면 자동로드가 결정적이고 예측 가능 해집니다.

툴링의 경우 PHPStorm과 같은 완전히 전원이 공급되는 IDE를 사용하면 이름 공간이있는 클래스가있는 프레임 워크에서 dev 작업을 수행하는 데 매우 중요합니다. PHPStorm과 같은 좋은 IDE는 클래스 이름을 삽입 할 때 자동 완성뿐만 아니라 use 문을 추가합니다. 많은 다른 많은 멋진 시간 절약 기능 중 하나입니다.

더 많은 수동 접근 방식을 위해 api.silverstripe.org는 클래스 매핑을 찾는 좋은 장소입니다.

+3

자세한 설명을 주셔서 감사합니다. 그것은 모두 의미가 있습니다. PHPStorm과 함께 싸워야했는데/vendor에서 아무것도 얻지 못했기 때문입니다. 그러나 특정 디렉토리를 넣을 수있는 것은 제외 표시였습니다. – Aaryn