ホームページ > バックエンド開発 > PHPチュートリアル > php5 をスプレーする Call-time pass-by-reference が削除されました

php5 をスプレーする Call-time pass-by-reference が削除されました

WBOY
リリース: 2016-06-13 13:17:59
オリジナル
1128 人が閲覧しました

php5 の呼び出し時間パスバイリファレンスが削除されました

呼び出し時間パスバイリファレンスが削除されました

オンラインで状況を検索できます。簡単に言うと、関数を呼び出すときに foo(&$var) を記述する必要がなくなりました。


これは本当に合理的ですか?

まず、この呼び出し方法は最初よくわかりませんでしたが、定義時に & があり、呼び出し時にもペアにする必要があるのと同じだと思いました。

しかし、現在の記述を見ると、PHP は非常に自由であるようです。呼び出し時に & があればパラメータを渡すことを意味し、定義時に & があればパラメータも渡すことになります。十分。

現状では呼び出し時の&の書き方は廃止され、定義時のみ使用可能となっています。

しかし、これは別の使用法の問題を無視します

function foo(& $var) {
//その他のコード
}

このような定義の場合、呼び出し時に foo(&$var) と記述すると、実際の関数定義にアクセスして変更されるかどうかを確認することなく、このパラメーターが変更される可能性があることが明確になります。期待。

この言語は定義時記述と呼び出し時非記述をサポートしていますが、プロジェクト管理がこのように記述すると、たとえば他の人の関数を呼び出すときに値が意味不明に変更されるなど、多くの不要なバグを減らすことができます。いくつかの予測不可能な問題。

Uniform が呼び出し時にそれを記述しないので、関数の動作を予測するのは困難になります。PHP 構文を設計した人は頭がおかしいのでしょうか。


また、PHP のバージョンをアップグレードする場合、設定の変更、設定のキャンセル、機能のキャンセルなど、元のバージョンとの互換性が常に失われます。膨大な数の問題が発生しており、.net はまったく適切な設計がなく、開発者は完全に途方に暮れています。


ちょっと言ってください

$HTTP_GET_VARS などの定義がキャンセルされました。コードの過度の変更を避けるために、シンプルな統一方法で実装できます

$HTTP_GET_VARS = $_GET;

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート