「PHP」の版間の差分

ナビゲーションに移動 検索に移動
995 バイト追加 、 1 か月前
(→‎クラス: const)
class SimpleClass
{
const var3var1 = 1+2;
}
 
$dummy = new SimpleClass;
print($dummy::var3var1);
 
?>
3
</pre>
 
 
下記は、意図的にセミコロン2個とアロー演算子を間違えた例です。
 
<syntaxhighlight lang="PHP">
<?php
class SimpleClass
{
const var1 = 1+2;
}
 
$dummy = new SimpleClass;
print($dummy::var1) . "\n";
 
 
// $dummy::var1 = 5; // エラーになる
$dummy->var1 = 5; // アローのほうに定義できるが・・・
print($dummy::var1) . "\n"; // セミコロン2個のほうは3のまま
print($dummy->var1) . "\n"; //
 
?>
</syntaxhighlight>
 
実行結果
<pre>
3
 
Deprecated: Creation of dynamic property SimpleClass::$var1 is deprecated in /home/ユーザー名/test.php on line 12
3
5
</pre>
 
このように、アロー演算子のとセミコロン2個のは、それぞれ別々の変数として扱われます。
 
「Deprecated: 」と警告的なメッセージが出るように、これはバグの原因になりやすいので、const宣言したクラス変数のアロー演算子変数の作成は、なるべく避けるのが安全でしょう。
 
 
[[Category:PHP|*]]
23,090

回編集

案内メニュー