ホームページ バックエンド開発 PHPチュートリアル PHP コンストラクターとデストラクター PHP メモリ管理関数

PHP コンストラクターとデストラクター PHP メモリ管理関数

Jul 25, 2016 am 08:53 AM

  1. class person{
  2. var $name;
  3. var $age;
  4. function __construct(){// コンストラクター
  5. $this->name="lisi";
  6. $this- > ;age=28;
  7. }
  8. function Say(){
  9. echo "私の名前は ".$this->name."
    ";
  10. echo "私の年齢は ".$this- > ;年齢。"

    ";

  11. }
  12. }
  13. $per=新しい人();
  14. $per->say();
  15. $per->name="張三";
  16. $per-> ;age=26;
  17. $per->say();
  18. ?>
コードをコピー

コンストラクターの反対はデストラクターです。デストラクタは php5 に新しく追加されたものです。php4 にはデストラクタはありません。デストラクターを使用すると、クラスが破棄される前に一部の操作または関数を実行できます。これは通常、クラスへのすべての参照がリセットされるかスコープ外になると自動的に行われます。 コンストラクターの名前と同様に、クラスのデストラクターの名前は __destruct() でなければなりません。デストラクターはパラメータを取ることができません。

  1. class person {
  2. function __destruct()
  3. {
  4. echo "バイバイ !"
  5. }
  6. }
  7. $a=new person();
  8. ?>
;コードをコピー

__construct という名前のクラスで関数を宣言すると、この関数はコンストラクターとして扱われ、オブジェクト インスタンスの作成時に実行されます。 明確にするために、__ は 2 つのアンダースコアです。 他の関数と同様に、コンストラクターにはパラメーターまたはデフォルト値を含めることができます。 クラスを定義してオブジェクトを作成し、そのすべてのプロパティをステートメントに含めることができます。

オブジェクトが破棄される前に PHP が呼び出す __destruct という関数を定義することもできます。 それはphpデストラクターと呼ばれます。

継承はクラスの強力な機能です。 あるクラス (サブクラス/派生クラス) は、別のクラス (親クラス/基本クラス) の機能を継承できます。 派生クラスには基本クラスのすべてのプロパティとメソッドが含まれており、派生クラスに他のプロパティとメソッドを追加できます。 基本クラスのメソッドとプロパティをオーバーライドすることもできます。 3.1.2 に示すように、extends キーワードを使用してクラスを拡張できます。

コンストラクターがどのように継承されるのか疑問に思われるかもしれません。 他のメソッドとともに継承された場合、オブジェクトの作成時に実行されません。 この機能が必要な場合は、:: 演算子を使用する必要があります。 これにより、名前空間を指すことができます。 parent は親クラスの名前空間を指します。parent::__construct を使用して親クラスのコンストラクターを呼び出すことができます。

一部のオブジェクト指向言語では、コンストラクターにクラスの後に名前を付けます。以前のバージョンの php にも同じことが当てはまり、この方法は今でも有効です。つまり、クラスにanimalという名前を付け、その中にanimalという名前のメソッドを作成すると、このメソッドがコンストラクタになります。クラスに __construt コンストラクターと、クラスと同じ名前の関数の両方がある場合、PHP は __construct をコンストラクターとして扱います。これにより、以前の PHP バージョンで作成されたクラスを引き続き使用できるようになります。 ただし、新しいスクリプト (php5) では __construct を使用する必要があります。

PHP でコンストラクターを宣言するこの新しい方法により、コンストラクターが属するクラスの名前に関係なく、コンストラクターに一意の名前を付けることができます。 こうすることで、クラスの名前を変更するときにコンストラクターの名前を変更する必要がなくなります。

PHP のコンストラクターには、他のクラス メソッドと同様にアクセス メソッドを与えることができます。 アクセス メソッドは、特定の範囲からオブジェクトをインスタンス化する機能に影響します。 これにより、シングルトン パターンなどのいくつかの固定設計パターンの実装が可能になります。

php デストラクター、コンストラクターの反対。 PHP はこれらを呼び出して、メモリからオブジェクトを破棄します。 デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリのみを解放し、オブジェクト関連のリソースを破棄します。 デストラクターを使用すると、オブジェクトの使用後に任意のコードを実行してメモリをクリアできます。

スクリプトがオブジェクトに関連付けられていないとphpが判断すると、phpデストラクターが呼び出されます。 関数の名前空間内では、関数が戻るときにこれが発生します。 グローバル変数の場合、これはスクリプトの最後に行われます。 オブジェクトを明示的に破棄する場合は、オブジェクトを指す変数に他の値を代入できます。 通常、変数には null が代入されるか、unset が呼び出されます。

次の例では、クラスからインスタンス化されたオブジェクトの数をカウントします。カウンタ クラスの値はコンストラクタから増加し始め、PHP デストラクタで値が減少します。

クラスを定義したら、new を使用してこのクラスのインスタンスを作成できます。 クラス定義は設計図であり、インスタンスは組立ラインに配置される部品です。 new はクラスの名前を取得し、そのクラスのインスタンスを返します。 コンストラクターにパラメーターが必要な場合は、new の後にパラメーターを入力する必要があります。 例:

    class counter {
  1. private static $count = 0;
  2. function __construct() { self::$count++; }
  3. function __destruct() { self::$count--;
  4. function getcount() { return self::$count; } }
  5. //最初のインスタンスを作成し、コンストラクターを呼び出します。 $count = 1
  6. $c = new counter()
  7. // 1 を出力します
  8. print($ c ->getcount() . "
    ");
  9. // 2 番目のインスタンスを作成し、コンストラクターを呼び出します。 $count = 2
  10. $c2 = new counter();
  11. // 出力 2
  12. ; $c->getcount() . "
    ");
  13. // インスタンスを破棄し、デストラクターを呼び出します。 $count = 1
  14. $c2 = null
  15. // 1 を出力します
  16. print( $c ->getcount() . "
    ");
  17. プログラムの実行結果: 1 2 1 新しい 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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

See all articles