teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

参考質問を追加

2017/04/27 10:48

投稿

raccy
raccy

スコア21767

title CHANGED
File without changes
body CHANGED
@@ -87,6 +87,11 @@
87
87
 
88
88
  C++がそういう動作になる理由はちょっと複雑になるので除きますが、JavaやRubyはclass内の定数であっても、定義されていない定数は使えません。定数の定義処理を順番にしていくと考えれば妥当な仕様だと思います。しかし、PHPだと、順番に定義していくと考えることはできません。となると、`A::Y`部分をHaskellのように遅延評価しているとか、そんな感じなのでしょうか?
89
89
 
90
+ ###参考にした質問
91
+
92
+ [PHP - 定数の定義より前にその定数を使う関数の定義を書いても大丈夫なのか(73837)|teratail](https://teratail.com/questions/73837)
93
+ 上の質問については、関数内の式の評価が呼び出し時だから問題ないという物です。では、constの右辺の評価も呼び出し時だから…と考えると、Xの右辺が評価されるときにYの右辺が評価済みというのもおかしな話ですし、class外だとうまくいかない理由も付けられなくなります。
94
+
90
95
  ---
91
96
 
92
97
  [定数式のバグ - Qiita](http://qiita.com/rana_kualu/items/4cf44c3a47071d40280b)を読んで、ふと気になりました。なお、この現象は記事に書いているバグと関係はありますが、バグそのもののことではありません。