2017-11-01 1 views
1

나는 (Zend\Filter\Inflector를 사용하여) 다음 코드를 작성해야합니다 :PhpStorm 문자열 제안 등의 클래스 이름은

$inflector = new Inflector(':string'); 
    $inflector->setRules([ 
     ':string' => [ 
      new StringToLower(), 
      new UnderscoreToSeparator(), 
      new DashToCamelCase(), 
      new UpperCaseWords(), 
     ] 
    ]); 

를 보시다시피, 그것은 사용 4 배 new 키워드, 바로 (젠드 필터 인터페이스 다음) 클래스를 인스턴스화 . 이 경우 자동 완성 기능이 잘 작동하므로 PhpStorm은 new 뒤에 입력 한 내용을 쉽게 발견했습니다.

그러나 더 나은 표기 대신 직접 인스턴스화 new를 사용하는 문자열을 사용하는 공장을 사용하여 :

$inflector = new Inflector(':string'); 
    $inflector->setRules([ 
     ':string' => [ 
      'StringToLower', 
      'UnderscoreToSeparator', 
      'DashToCamelCase', 
      'UpperCaseWords', 
     ] 
    ]); 

그 문자열에 대한 자동 완성을 할 수있는 방법이 있습니까? 아마 어떤 주석 힌트 또는 뭔가?

답변

2

UpperCaseWords::class을 사용하지 않으시겠습니까? 결과 값 (런타임 중에 사용 가능함)은 FQN이됩니다.

젠드 프레임 워크에 익숙하지 않아서 Zend\Filter\Inflector이 FQN을 수락하는지 또는 클래스 이름 만 필요로하는 경우 (FQN을 받아 들여야 함 ... 사용자가 만든 클래스도 수락 됨/그것은 예상 된 행동이다).

이점 : 리팩터링/찾기 용도도 지원됩니다 (이는 문자열이 아닌 코드이기 때문에). 어떤 경우


: 문자열의 클래스 이름 완성 2017년 1월 4일 이후 작동합니다은 (현재 안정 2017년 2월 4일 여기에 잘 작동). 당신은 단지 코드 완성 한 번 더 호출

(예 Ctrl 키 + 스페이스 두 번 (또는 당신은 Code | Completion | Basic에 대한/OS) 컴퓨터가있는 어떤 다른 바로 가기) .. 아니면 그냥 Ctrl + Alt + 스페이스 직선을 사용하여 어웨이 (클래스 이름 완성).

분명히 문자열 시작 부분에서 완료가 호출되면 작동합니다. 중간 또는 끝에있는 경우 (예 : "use [CLASS_NAME_EXPECTED_HERE]") - 전체를 수동으로 입력하거나 다른 완료 방법을 시도하십시오 (예 : Cyclic Expand Word, 해당 클래스 이름이 이미 현재 파일에 언급 된 경우).