検索
ホームページバックエンド開発PHPチュートリアルPHPリファレンス&詳細解説_PHPチュートリアル

PHPリファレンス&詳細解説_PHPチュートリアル

Jul 13, 2016 pm 04:59 PM
ampphpいいえ関数存在する引用普通持っている単純詳しい説明移行戻る

PHP での単純なアンパサンドは大きな記事になる可能性があります。今日は PHP での変数参照とパラメータ値の転送について簡単に説明します。初心者の方はこの記事を読んで参考にしてください。

この方法で $a=test(); が取得するものは、実際には関数参照の戻りではなく、通常の関数呼び出しと変わりません。これは PHP の規定です
。 PHP では、$a=&test(); を通じて取得されるものは関数の参照戻りであると規定されています
参照リターンとは何かというと(PHPマニュアルには、参照リターンは、参照をバインドする必要がある変数を見つけるために関数を使用したい場合に使用されます。)このナンセンスなため、私は長い間理解できませんでした

上記の例を使用して説明します
$a=test() を使用して関数を呼び出すと、関数の値が $a に代入されるだけであり、$a を変更しても関数内の $b
には影響しません。 $a=&test() を通じて関数を呼び出すと、その関数は $b を返す $b 変数のメモリ アドレスと、$a 変数のメモリ アドレスが同じ場所を指すようになります
つまり、これと同等の効果が生じる($a=&b;)ので、$aの値を変更すると$bの値も変更されるので、

を実行した後、
コードは次のとおりです コードをコピー
$a=&test();
$a=5;

その後、$bの値は5になります

ここで静的変数を使用するのは、関数の参照戻りを誰もが理解できるようにするためです。実際、関数の参照戻りは主にオブジェクトで使用されます

オブジェクトの参照

上記のコードはPHP5での実行エフェクトです
PHP5 では、オブジェクトのコピーは参照を通じて行われます。上の列では、 $b=new a; $c=$b; は $b=&$b; と同等です。 PHP5 のデフォルトでは、参照によってオブジェクトを呼び出しますが、オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないようにしたい場合があります。この目的のために、PHP は __clone と呼ばれる特別なメソッドを定義しています。

引用符の役割

プログラムが比較的大きく、同じオブジェクトを参照する変数が多数あり、オブジェクトを使用した後に手動でクリアしたい場合は、個人的には "&" メソッドを使用し、それ以外の場合は $var=null を使用してクリアすることをお勧めします。また、php5 で大きな配列を転送する場合は、メモリ領域を節約できるため、「&」メソッドを使用することをお勧めします。

引用解除

参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:

コードは次のとおりですコードをコピー
$a = 1;
$b =& $a;
設定を解除 ($a);
?>
$b の設定は解除されず、$a のみが解除されます。

グローバルな引用

global $var を使用して変数を宣言すると、実際にはグローバル変数への参照が作成されます。それはこれを行うのと同じです:

コードは次のとおりですコードをコピー

これは、たとえば、unset $var ではグローバル変数の設定が解除されないことを意味します。

$これ
オブジェクト メソッドでは、$this は常に、それを呼び出すオブジェクトへの参照になります。

//もう一つ小さなエピソードをご紹介します
PHP のアドレス ポインティング (ポインタに似た) 関数は、ユーザー自身によって実装されるのではなく、Zend コアによって実装されます。PHP の参照は、書き込みが行われない限り、コピーオンライトの原則を採用しています。操作が発生した場合、同じアドレスを指す変数またはオブジェクトはコピーされません。

平たく言うと
1: 次のコードがある場合

実際、この時点では、$a と $b が異なるメモリを占有するのではなく、両方とも同じメモリ アドレスを指します

$var =& $GLOBALS["var"];
?>
コードは次のとおりです コードをコピー

$source="110";
$a=$ソース;
$b=&$source;
$source="120";
エコー $a."rn",$b

これは、PHP の参照演算子 & の問題です。値を割り当てるときに & が変数 $b に適用されるため、$b は "110" を自分自身にコピーせず、$source のホームを直接指します。彼は$bになります。 $source がどのように変化しても、それは $b の変化につながります。ホストと 2 つのモニターの関係と同じように、$b の変化は $source の変化につながります

これは、PHP の参照演算子 & の問題です。値を割り当てるときに & が変数 $b に適用されるため、$b は "110" を自分自身にコピーせず、$source のホームを直接指します。彼は$bになります。 $source がどのように変化しても、それは $b の変化につながります。ホストと 2 つのモニターの関係と同じように、$b の変化は $source の変化につながります

出力結果: 122、ほら、この 2 つの変数はこれから 1 人の「人」になります、いじめないでください。

実際、プログラムの可読性とその後のプログラミングの誤操作を考慮して、& 参照演算子の使用はお勧めしません。よく考えてください。行 10,000 より前に $b=&$source; を使用していましたが、行 10,000 以降はそれを覚えていない可能性があります。誤って間違った値を割り当てても、デバッグ中には十分です。はは…

実際、この演算子はデータベース接続でよく使用されます。これは、データベース接続オブジェクトを作成するときに必要なのは 1 つだけであり、多すぎると役に立たないことが多いためです。

次のクラスがあるとします:

コードは次のとおりです コードをコピー

class MysqlConnect{} // データベース接続の作成に使用され、呼び出すたびに次のように記述できます

$conn=& new MysqlConnect();

この書き方により、データベース接続が繰り返し作成されてシステム リソースを消費することがなくなります。しかし、実際に複数の異なる接続が必要な場合は、このように記述してはいけません。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631318.html技術記事 PHP で取得するのは関数参照の戻り値ではなく、通常の関数呼び出しと何ら変わりません。 理由としては、PHP の規定で $a=test();...
と規定されているためです。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません