2013-01-10 2 views
12

Netbeans에서 다른 문서 태그로 유형 힌트를 확장 할 수 있습니까?PHP 용 확장 유형 힌트

@scope 태그로 유형 힌트를 확장하여 포함 된 파일이 객체 범위에 액세스 할 수 있도록하는 방법을 찾고 있습니다.

예 :

이 공공의 변수와 메소드의 타입 힌트를 허용 할
file: template.php 
<?php /* @var $this MyObject */ 

. 그것은 MyObject를 범위에있을 것 같은 파일 내용을 만들 것

file: template.php 
<?php /* @scope MyObject */ 

행동하기 : 내가 뭘 바라고하는 것은 myObject에 범위에 액세스 할 수 있도록 @scope 태그 타입 힌트를 확장하는 것이다 $this은 개인 메소드를 암시합니다.

이제 Netbeans 플랫폼을 개발 한 경험이 없지만 Java 경험이 있습니다. 내가 이것을 성취하고 싶다면 어디에서 시작할 것인가?

희망 사항이 너무 약하지 않습니다.

+0

[link] (https://platform.netbeans.org/tutorials/nbm-java-hint.html#creatingthemoduleproject)에서 설명한 것과 비슷한 것을 찾고 있습니다. 그러나 링크를 자바에 대한 방법을 설명하는 동안 나는 PHP를 원한다 –

답변

2

과거에는 (NetBeans의 이전 버전) 유형 힌트는 모든 객체 (사용중인 객체), 즉 모든 public, protected, private 및 static 메소드의 모든 메소드를 보여주었습니다. 이제 NetBeans의 새 릴리스에서는 버그이 수정되었으며 객체에 대한 힌트가있는 경우 액세스 할 수있는 메서드/속성 만 유형 힌트가되었습니다.

이것은 단순히 템플릿이 클래스의 개인 속성/메소드를 액세스/호출 할 수 없거나 클래스 (클래스의 인스턴스)가있는 경우 액세스 할 수 없기 때문일뿐입니다. 클래스의 정적 속성에 액세스하거나 호출해서는 안됩니다 /행동 양식.

클래스 내부에 입력 힌트를 사용하려는 경우에도 마찬가지입니다. 이제 형식 힌트에 $this->| (|)의 공용, 보호 및 개인 메서드가 모두 나열되지만 정적 속성과 메서드는 여전히 있습니다. 나열되지 않았습니다. 다른면에서 MyClass::|에 대한 입력 힌트가있는 경우 MyClass 클래스 내부에있는 모든 정적 인 속성/메서드가 나열되고 다시 나타납니다. 개인 클래스 외부에서 액세스 할 때 모든 public, protected 및 public 속성이 나열됩니다. 목록에 (매우 정확하게)가 누락되었습니다.

요청한 기능이 잘못되어 캡슐화의 올바른 원칙을 거부합니다.

+1

그 자바 또는 다른 언어에 대한 사실 일 수 있지만 PHP는 클래스의 범위가 다른 파일로 확장 할 수 있습니다. 이러한 동작은 클래스의 메서드 안에 다른 파일을'include '하여 간단히 얻을 수 있습니다. 이 경우 파일은 모든 클래스를 포함하는 메서드 및 속성에 액세스 할 수 있습니다 (심지어 비공개). 이 메카니즘은 다른 언어의'partial classes'와 매우 비슷합니다. 단 PHP에는 형식적인 구문이 없으며 타입 힌트를 사용해야합니다. 이 메커니즘은 많은 PHP 프레임 워크의 뷰 템플릿에서 매우 일반적으로 사용됩니다. 그것이 좋은 연습인지 여부는 다른 문제입니다. –

+0

코드에서 마크 업을 완전히 분리 했으므로 꽤 좋은 방법이라고 할 수 있습니다. 즉, CreateUserView -> CreateUserView.php'라는 뷰를 만들고 그 파일과 함께'CreateUserView.tpl.php'로 템플릿을 생성합니다. 확장 뷰'CreateUserView'가 자동으로로드되고 템플릿이 클래스의 일부입니다 같은 범위로. – Daniel

0

우리는 도구를 제안하지 않아도되지만 사람들이 잘못된 도구로 문제를 해결하려고한다는 느낌에 저항 할 수없는 경우가 있음을 알고 있습니다. NetBeans는 제 생각에 서서히 PHP에 대한 지원을 거의 포기한 Eclipse의 단계를 따르고 있습니다. 그러나 다른 IDE는 엄격하게 PHP 언어 용으로 설계되어있어 상자 밖으로 문제를 해결할 수 있습니다.

개인적으로 나는 처음부터 필요한 기능을 제공 해주는 도구를 원합니다. 나는 내 시간이 걸리고 시간이 지남에 따라 사용되지 않을 수도있는 플러그인 작성에 관심이 없다. 그래서 필자는 필자에게 필자가 필요로하는 것 이상을 제공하는 상업용 IDE를 선택했다. 그런데 그 질문에 포함 된 필요를 완벽하게 강조한다. PHP 코드를 작성하려면 proffesional 도구를 지불하는 것이 좋습니다.

문제 자체에 대해서는 기능 요청에 대한 예제 링크를 제공 할 예정이며 문제의 문제가 어떻게 해결되었는지 보여줄 것입니다 : Allow protected member access on @var $this (i.e. in views). 또한 더 많은 것이 이며 재미있을 수도 있습니다.

제 의견을 요약하면 다음과 같습니다. 나사를 조이면 스크류 드라이버가 아니라 망치를 사용하십시오.