はじめに:
今日は、PHP のオブジェクト指向の性質について紹介します。オブジェクト指向と言えばプロセス指向についても触れておかなければなりません。私が初心者の頃は違いが分からないことがよくありました。 では、オブジェクト指向とプロセス指向の違いは何でしょうか?それを簡単に紹介します:
オブジェクト指向どのオブジェクトが問題を処理するかに焦点を当てます。
最大の特徴は、属性や関数を持ったクラスで構成され、クラスからオブジェクトを取得して問題を解決することです。
プロセス指向問題を解決するプロセスに焦点を当てます。 最大の特徴は、この問題を一連のプロセスで一つ一つ解決していくという点です。
オブジェクト指向とプロセス指向の違いを理解した後、オブジェクト指向PHPの基礎知識を学びましょう。
***この章のキーワード: オブジェクト指向の基本、カプセル化と継承、PHP キーワード、シングルトン、オブジェクトのシリアル化とマジック メソッド、抽象クラスと抽象メソッド、インターフェイスとポリモーフィズム。
知っておくべきPHPオブジェクト指向の3つの主要な特徴があります:
1. オブジェクト指向の基本 |
一オブジェクト指向
1. クラスとは何ですか?
同じ属性 (特性) とメソッド (動作) を持つ一連の個体の集合。クラスは抽象的な概念です。
2. オブジェクトとは何ですか?
クラスから取得した特定の属性値を持つ個体をオブジェクトと呼びます。対象は特定の個人です。
例: 人間; Zhang San
3. クラスとオブジェクトの関係は何ですか?
クラスはオブジェクトの抽象化です!オブジェクトはクラスを具体化したものです。
クラスは、このタイプのオブジェクトが持つ属性を示すだけですが、特定の値を持つことはできないため、クラスは抽象クラスになります。
オブジェクトは、クラスのすべての属性を割り当てた後に生成される特定の個体です。すべてのオブジェクトは固有です。
2. クラスの宣言とインスタンス化
1. クラスの宣言方法:
class クラス名 {
アクセス修飾子 $property[=デフォルト値];
[アクセス修飾子] 関数メソッド(){}
}
2. クラス宣言時の注意点:
①クラス名は英数字とアンダースコアのみで構成でき、数字で始めることはできず、ビッグキャメルケースに従う必要があります。ルール;
②クラス名は class で変更する必要があり、クラス名の後に () を付けることはできません
③属性にはアクセス修飾子が必要ですが、メソッドにはアクセス修飾子がなくてもかまいません。
3. インスタンス化されたオブジェクトとオブジェクト属性メソッドの呼び出し:
$object name = new class name(); //() は、
クラスの外部からの属性とメソッドの呼び出しを行わずに呼び出すことができます。 $Object name-> $Attribute name; // -> を使用して属性を呼び出す場合、属性名に $ 記号を含めることはできません
$this -> $属性名;
3. コンストラクター
1. コンストラクターとは何ですか?
コンストラクターはクラス内の特別な関数です。 new キーワードを使用してオブジェクトをインスタンス化することは、クラスのコンストラクターを呼び出すことと同じです。
2. コンストラクターの機能は何ですか?
オブジェクトをインスタンス化するときに、オブジェクトのプロパティに初期値を割り当てるために自動的に呼び出され、使用されます。
3. コンストラクターの書き方:
①コンストラクターの名前はクラス
[public] function person($name){
$this -> name = $name と同じである必要があります。 ;
}
②マジックメソッド__construct
[public] function __construct($name){
$this -> name = $name;
}
4. :
①最初の書き方、コンストラクターの名前はクラスと同じでなければなりません! ! ! !
②クラスに手書きのコンストラクターがない場合、システムにはデフォルトで null パラメーターのコンストラクターがあるため、 new Person() を使用できます
パラメーターを含むコンストラクターを作成すると、null はなくなります。パラメーターの構築、つまり new person() は直接使用できません。
person の後の () 内のパラメーター リストはコンストラクターの要件を満たしている必要があります。 ! ! !
③両方のコンストラクターが同時に存在する場合、__constructが使用されます。
5. デストラクター: __destruct():
①デストラクターは、オブジェクトが破棄されて解放される前に自動的に呼び出されます。
②デストラクターは、リソースを解放するためによく使用されます。オブジェクトの使用後にリソースなどを閉じます。
6. マジックメソッド:
PHP は、__ で始まる一連の関数を提供します。これらの関数は、適切なタイミングで自動的に呼び出されます。はマジックと呼ばれます。 マジックはマジック関数と呼ばれます。
例: 新しいオブジェクトが作成されると関数 __construct(){} が自動的に呼び出されます
オブジェクトが破棄されると関数 __destruct(){} が自動的に呼び出されます
マジック メソッドに加えて、次のことが必要です。カスタム関数とメソッドを __ で始めることはできません。
最後に、一般に、より複雑な関数を持つクラスの場合は、それらを別のクラス ファイルに書き込みます。
クラスファイル名は「クラス名小文字.class.php」の方法で同じ小文字で付けます。
このクラスを他のファイルで使用する場合は、include を使用してこの「.class.php」ファイルをインポートできます。
1. カプセル化とは何ですか? *注: アクセス制御を実装するためのものであり、アクセスを拒否するものではありません。言い換えれば、属性をプライベート化した後、ユーザーが提供するメソッドを通じて属性を処理できるように、対応するメソッドを提供する必要があります。 2. カプセル化の役割は何ですか? 3. カプセル化操作を実装しますか? ③属性のカプセル化+マジックメソッド 4. カプセル化の魔法のメソッドについて: ④__unset($key): unset() 関数がプライベート属性を削除するために外部で使用されるときに自動的に呼び出されます。
②サブクラスが親クラスを継承した後は、親クラスのプロパティとメソッドをサブクラスにコピーするのと同じになり、$thisを使用して直接呼び出すことができます。 条件2: サブクラスが親クラスの既存のメソッドを書き換える サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラス内で同じ名前の親クラスのメソッドを呼び出すにはどうすればよいですか? したがって、サブクラスが親クラスを継承する場合、サブクラス構築の最初のステップでコピーのために親クラスのコンストラクターを呼び出す必要があります。 function __construct($name,$sex,$school){ $this -> school = $school; 1.final 2. static 3. const キーワード: 4.instanceof演算子: [簡単な概要] いくつかの特殊な演算子 シングルトン パターンは単形パターンとも呼ばれます。 実装のポイント: ***キーワード: clone と __clone、__antoload()、シリアル化と逆シリアル化 (シリアル化と逆シリアル化)、型制約、マジック メソッドの概要 (12) ② 存在しないクラスがインスタンス化されると、このマジック メソッドが自動的に呼び出されます。 ③呼び出し時、__autoload()にパラメータが自動的に渡されます:インスタンス化されたクラス名 3. シリアル化と逆シリアル化 (シリアル化と逆シリアル化) 2. 型制約が特定のクラスの場合、このクラスとそのクラスのサブクラス オブジェクト、通過できます。 5. マジックメソッドの概要 1. 抽象メソッドとは何ですか? 2. 抽象クラスとは何ですか? 3. 抽象クラスに関する注意事項: 4. サブクラスが抽象クラスを継承する場合、サブクラスも抽象クラスでない限り、サブクラスは親クラスのすべての抽象メソッドをオーバーライドする必要があります。 5. 抽象クラスを使用する役割は何ですか? 1. インターフェース 2. インターフェース内のすべてのメソッドは抽象メソッドである必要があります。 3. インターフェース内で変数を宣言することはできず、定数のみを使用できます。 ! ! 4. extends キーワードを使用して、インターフェイスはインターフェイスを継承できます。 5。クラスは、implements キーワードを使用してインターフェースを実装できます。 ※【インターフェースと抽象クラスの違い】 2. ポリモーフィズム 2. ポリモーフィズムを実現するために必要な方法: |
以上がPHP におけるオブジェクト指向についての私の理解の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1
使いやすく無料のコードエディター

ホットトピック









