関数は参照される前に定義されている必要はありません。定義されるような場合を除きます。行われていなければなりません。ここでは関数foo()はまだ定義されていないのでコールすることはできません。bar()はコールできます。$makefooがtrueと評価されているため安全にfoo()をコールすることができます。ここでは関数bar()はまだ定義されていないのでコールすることはできません。bar()が定義されるためここではbar()をコールすることができます。関数のオーバーロードをサポートしていません。関数宣言時と同じ名前で関数をコールする方が好ましいです。機能をサポートしています。関数を再帰的にコールすることが可能です。超えるようなレベルの再帰呼び出しは避けてください。スタックが破壊され、スクリプトが異常終了してしまいます。無限に続くような再帰処理は、プログラミングの間違いでしょう。