php5 の呼び出し時間パスバイリファレンスが削除されました
呼び出し時間パスバイリファレンスが削除されました
オンラインで状況を検索できます。簡単に言うと、関数を呼び出すときに foo(&$var) を記述する必要がなくなりました。
これは本当に合理的ですか?
まず、この呼び出し方法は最初よくわかりませんでしたが、定義時に & があり、呼び出し時にもペアにする必要があるのと同じだと思いました。
しかし、現在の記述を見ると、PHP は非常に自由であるようです。呼び出し時に & があればパラメータを渡すことを意味し、定義時に & があればパラメータも渡すことになります。十分。
現状では呼び出し時の&の書き方は廃止され、定義時のみ使用可能となっています。
しかし、これは別の使用法の問題を無視します
function foo(& $var) {このような定義の場合、呼び出し時に foo(&$var) と記述すると、実際の関数定義にアクセスして変更されるかどうかを確認することなく、このパラメーターが変更される可能性があることが明確になります。期待。
この言語は定義時記述と呼び出し時非記述をサポートしていますが、プロジェクト管理がこのように記述すると、たとえば他の人の関数を呼び出すときに値が意味不明に変更されるなど、多くの不要なバグを減らすことができます。いくつかの予測不可能な問題。
Uniform が呼び出し時にそれを記述しないので、関数の動作を予測するのは困難になります。PHP 構文を設計した人は頭がおかしいのでしょうか。
また、PHP のバージョンをアップグレードする場合、設定の変更、設定のキャンセル、機能のキャンセルなど、元のバージョンとの互換性が常に失われます。膨大な数の問題が発生しており、.net はまったく適切な設計がなく、開発者は完全に途方に暮れています。
ちょっと言ってください
$HTTP_GET_VARS などの定義がキャンセルされました。コードの過度の変更を避けるために、シンプルな統一方法で実装できます
$HTTP_GET_VARS = $_GET;