2013-01-10 11 views
12

タイプヒントをNetbeansの別のドキュメントタグで拡張することはできますか?PHP用のタイプヒントの拡張

インクルードファイルがオブジェクトスコープにアクセスできるようにする@scopeタグでタイプヒントを拡張する方法を探しています。

例:

file: template.php 
<?php /* @var $this MyObject */ 

これは、パブリック変数やメソッドの型のヒンティングのみを可能にします。私は何を望んでいることは@scopeタグは、それはMyObjectにスコープへのアクセスを獲得することが可能とタイプヒンティングを拡張することです:

それはMyObjectにスコープになりますように行動するために、ファイル内容になるだろう
file: template.php 
<?php /* @scope MyObject */ 

$thisはプライベートメソッドをヒントします。

今、私はNetbeansプラットフォームの開発経験はありませんが、私はJavaの経験があります。私がこれを達成したければ、どこから始めるのですか?

これはあまりにも弱い質問ではありません。

+0

私はまた、[リンク](https://platform.netbeans.org/tutorials/nbm-java-hint.html#creatingthemoduleproject)で説明されているような、ほぼ同様のものを探しています。しかし、私はリンクをJavaのためにそれを行う方法を説明しながらPHPのためにしたい –

答えて

2

以前のバージョンのNetBeansでは、タイプヒントは、(オブジェクトが使用されていた)クラスのすべてのメソッド、つまりpublic、protected、private、さらには静的メソッドをすべて表示していました。現在、NetBeansの新しいリリースでは、のバグが修正され、オブジェクトのタイプヒント時には、アクセス可能なメソッド/プロパティのみがタイプヒントになります。

これは、あなたのテンプレートがクラスのプライベートプロパティ/メソッドにアクセス/呼び出しできないだけでなく、オブジェクト(クラスのインスタンス)を持っている場合だけであるからです。クラスの静的プロパティにアクセス/ /メソッド。

あなたはクラスの内部で、ヒントを入力して喜んでいる場合は同じことが適用される - 今、タイプヒンティングリストにすべてのパブリック、保護および$this->|のプライベートメソッドを(|はカーソルである)の静的プロパティとメソッドがある間リストされていません。一方、タイプヒントMyClass::|の場合は、静的なプロパティ/メソッドのみがリストされ、MyClassクラスの中にあるすべてのpublic、protectedおよびpublicのものがリストされます。リスト内に(非常に正しく)がありません。

あなたが要求している機能は間違っており、カプセル化の正しい原則を拒否しています。

+1

それはJavaや他の言語に当てはまるかもしれませんが、PHPはクラスのスコープを別のファイルに拡張することができます。このような振る舞いは、クラスのメソッドの中に別のファイルを 'include 'するだけで達成されます。その場合、ファイルはクラスを囲むすべてのメソッドとプロパティ(プライベート)にアクセスできます。この機構は他の言語の 'partial classes'と非常によく似ていますが、PHPには正式な構文がなく、タイプヒントを使用しなければなりません。このメカニズムは、多くのPHPフレームワークのビューテンプレートでよく使用されています。それが良い習慣であるかどうかは別の問題です。 –

+0

私はコードからマークアップを完全に分離しているので、かなり良い方法だと思います。つまり、私はビュー 'CreateUserView - > CreateUserView.php'を作成し、そのファイルと共に、私の拡張ビュー' CreateUserView'が自動的にロードされる 'CreateUserView.tpl.php'としてテンプレートを作成します。テンプレートはクラスの一部です同じ範囲で – Daniel

0

私はツールを示唆するものではないことを知っていますが、間違ったもので問題を解決しようとしているという気持ちに抵抗できないことがあります。私の考えでは、NetBeansは徐々にEclipseのステップに従っています。これは、時間の経過とともにほぼ完全にPHPのサポートを断念しています。しかし、PHP言語用に厳密に設計された他のIDEもあります。

個人的に私は最初から必要な機能を私に与えるツールがほしいと思う。私はプラグインを書くことに興味がありません。プラグインは時間がかかり、時間の経過とともに非難されるかもしれません。だから私は商用IDEを選択しました。それは私が必要としている以上のものを与えてくれました。ところで、それはあなたのニーズを完全に取り入れています。 PHPコードを書くつもりなら、proffesionalツールの支払いを検討することを強くお勧めします。

問題自体については、問題の問題の解決方法を示した機能リクエストへのリンク例を示します。Allow protected member access on @var $this (i.e. in views)。また、あなたが興味をそそられるかもしれない多くのものがrelated featuresです。

私の意見を要約すると、ネジを締めようとしたら、ハンマーではなくドライバーを使用します。