目次
phpデストラクター、php関数に関する興味深い質問です
ホームページ バックエンド開発 PHPチュートリアル php デストラクター、php function_PHP チュートリアルに関する興味深い質問

php デストラクター、php function_PHP チュートリアルに関する興味深い質問

Jul 13, 2016 am 09:44 AM
デストラクター

phpデストラクター、php関数に関する興味深い質問です

オブジェクト指向プログラミングの広範な発展に伴い、オブジェクト指向には多くの興味深い問題が明らかになりました。 PHPのオブジェクト指向を学ぶ際、多くの初心者がコンストラクタとデストラクタという2つの関数に触れることがあると思います。コンストラクターはより多く使用され、デストラクターはあまり使用されないようです (初心者の限られたプログラミング経験と比較すると、作成者にも同様のことが当てはまります)。機能的には、オブジェクトの作成時にコンストラクターが呼び出され、オブジェクトの作成時にデストラクターが呼び出されます。オブジェクトが破壊される場合、特に片端と片端と呼ぶ必要はありませんが、前後とも呼ばれます。

デストラクタがよく処理する処理は、たとえば、fopen() が前に呼び出され、fclose() がここで呼び出され、imagecreatefromjepg() が前に呼び出され、imagedestory() がここで呼び出される、などの一般的な例です。もちろんこれに限定されません。これは、オブジェクトが破棄されるか、スクリプトが実行されるときに実行される通常の関数として扱うことができます。 たくさんのことが起こっているので、できるだけ早く今日の主要な質問を提起しましょう: リーリー このスクリプトを実行した結果はどうなるでしょうか?

この質問に答える前に、上でマークした言葉を振り返ってください。出力区切り線

unset

(

$test1) の前に、デストラクターが呼び出され、テキストが出力されることは当然のことと考えてください。スクリプト デストラクターは実行後に呼び出されます。つまり、分割線の上には 1 段落のテキストが出力され、分割線の下には 2 段落のテキストが出力されます。 現時点では、デストラクターをいつ呼び出すべきかを知っているので、少し誇りに思ってもいいでしょう。しかし、本当にそうなのでしょうか?実行結果を見てみましょう。 ねえねえ、なんで一文だけアウトプットしたの? ? ? 実際、私たちは重要な前提条件を見落としていました。それは、オブジェクトのデフォルトの割り当ては参照割り当てであるということです。この点に気づいていない人も多いので、初心者の方はもっと注意してほしいと思います。 つまり、参照代入なので、通常の変数の理解と組み合わせると、3 つの変数名は同じ記憶アドレスを指しているとすぐに考えられました。この場合、

unset(

$test1

)

はどのような役割を果たすのでしょうか? ? ?ストレージアドレスを指す変数を破棄しますか、それともストレージアドレスに格納されているコンテンツを破棄しますか?

unset()関数の使い方を直感的に理解している方は、この段落を読み飛ばしてください。

この厄介な問題について考えて、マニュアルを確認してみてはいかがでしょうか。

同じく参照渡しで、格納アドレスを指す変数名だけが破棄されます。通常の unset() 関数と組み合わせると、次のように記述できます。 複数の変数名またはオブジェクト名がストレージ アドレスを指している場合、unset() 関数の機能は、変数名のポインターを破棄するだけであり、変数名またはオブジェクト名が 1 つしかない場合、unset を指定すると、指定されたストレージ アドレスの内容が破棄されます。 実際のストレージの中身はテレビだと想像できます。複数の人 (複数の変数名またはオブジェクト名) がテレビを見ています。 unset() の後、視聴をやめて立ち去る人は誰もいませんでしたが、テレビはまだ付いていました。 1 人だけがテレビを見ている場合、unset() の後、その人が離れるときにテレビの電源を切る必要があります。これは、占有されていたストレージ領域を解放するためです。この部分の内容に興味がある場合は、「PHP 再帰関数を実装する 3 つの方法」も参照してください。

さて、本題に戻ります。 unset($test1)

後も、元のオブジェクトはまだそこにあります。分割線が出力されるとスクリプトが実行され、デストラクタが呼び出されます。 オブジェクトが 1 つしかないため、デストラクターの呼び出しは 1 回だけ呼び出されます。上記の結果が出力されるのは当然です。

その他の関連する興味深い質問: プログラム内でデストラクターを呼び出す方法はたくさんあります。オブジェクトが null または false に設定されているかどうかに関係なく、他のオブジェクトは影響を受けません。ここも通常の変数とは異なります。 (unset() 関数の効果は同じです)。興味があれば試してみてください。

もう 1 つの恥ずかしいこと: コンストラクターが __construct() を使用できることは誰もが知っていますが、同じ名前のコンストラクターを無視します。したがって、誰もが注意を払う必要があります。

http://www.bkjia.com/PHPjc/1048735.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/1048735.html

技術記事

PHP デストラクターに関する興味深い質問。オブジェクト指向プログラミングの広範な発展に伴い、PHP 関数にはオブジェクト指向プログラミングにおける多くの興味深い問題が示されています。多くの初心者が php を学ぶために...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

See all articles