@property で属性を宣言すると、次のコードのようにクラスでも属性を使用できることがわかりました。 adminName1 と adminName2 の違いは何ですか?通常、プロパティを宣言するには @property を使用しますか?
/**
* @property string adminName1
*/
クラス test {
private $adminName2;
public function getName($pram1,$pram2) {
$this->adminName1 = $pram1;
$this->adminName2 = $pram2;
}
}
?>
コメントにありませんでしたか?
@property string adminName1
は、プロパティ adminName1 が文字列であることを意味します
これは、プログラムの説明テキストを理解するのに役立つだけです
コメントで見て、他の場所で呼び出されたときに情報を求めるために使用できることを知りました!なぜクラス内で使用できるのかわかりません。
あなたはそのルールに従うだけです。このコードはどこから来たのでしょうか?
yiiフレームワークで見ました。しかし、私は自分でテストを書いたので、次のように動作します。
/**
* @property string adminName1
*/
class test {
private $adminName2
public function setName($pram1,$) pram2 ) {
$this->adminName1 = $pram1;
$this->adminName2 = $pram2; }
public function getName() {
return $result = $this->adminName1." "。 $ this->adminName2
}
}
$test = new test();
echo $test->getName(); > ;
//出力結果: admin1 admin2
ということは、PHP にはこのルールがあるのだろうか?
プログラムの説明文を理解しやすくするためだと言われています
/**
*/
のように変更すると、逆に説明の意味がなくなってしまいます。誤解を招くでしょう。明らかに、彼は adminName1 属性があると言いました。なぜ私はそれを見なかったのですか? adminName2 しか表示されません。別の adminName1 を定義する必要がありますか?
何を言っているのですか?
プログラムの説明文を理解しやすくするためだと言われています
/**
*/
のように変更すると、逆に説明の意味がなくなってしまいます。誤解を招くでしょう。明らかに、彼は adminName1 属性があると言いました。なぜ私はそれを見なかったのですか? adminName2 しか表示されません。別の adminName1 を定義する必要がありますか? 兄弟、ご回答ありがとうございます。でも、私の言っている意味が理解できないと思います。
元の投稿者、私もこの質問に対する答えを探していますが、回答した人たちは元の投稿者の意味を本当に理解していませんでした。
Google で答えが見つかりませんでした。私の個人的な理解では、これは IDE 用です。
@property キーワードは、このタイプのコメントを検出すると、自動的にプロパティに追加されます。リスト (存在しない場合でも、この形式で存在しない属性を追加してみるを押すことができます)。
目的は、呼び出し元の開発者がより明確にできるように、いくつかのマジック属性を明示することです。もちろん、IDE サポートが必要です
まず第一に、この識別属性の後、属性はまだ未定義であり、これらの呼び出しは未定義です。属性は最終的に __set メソッドおよび __get メソッドと呼ばれます。一般的な使用方法は次のとおりです:
public function __get($name){ $getter='get'.$name; if(method_exists($this,$getter))return $this->$getter();}
@property キーワードは、このタイプのコメントを検出すると、自動的にプロパティに追加されます。リスト (存在しない場合でも、この形式で存在しない属性を追加してみるを押すことができます)。
目的は、呼び出し側の開発者がより明確にできるように、いくつかのマジック属性を明示することです。もちろん、それには IDE のサポートが必要です
そうですね、この種の属性には を割り当てる必要があると思います。使用前に値を指定すると、割り当てがない場合は警告が発行されます。