5. オブジェクトをインスタンス化する方法
オブジェクト指向プログラムの単位はオブジェクトであると述べましたが、クラス
を宣言するので、次のステップはオブジェクトをインスタンス化することです。
クラスを定義した後、new キーワードを使用してオブジェクトを生成します。
$对象名称= new 类名称(); <?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "这个人在说话"; }f unction run() //这个人可以走路的方法 { echo "这个人在走路"; } } $p1=new Person(); $p2=new Person(); $p3=new Person(); ?> $p1=new Person();
このコードは、クラスを通じてインスタンスオブジェクトを生成するプロセスです。$p1 は、インスタンス化するオブジェクトの名前です。同様に、$p2、$p3
も、1 つのクラスで複数のインスタンスを生成できます。オブジェクト、各オブジェクトは独立しています。上記のコードは 3 人の人の例に相当します。これは、各人が独自の姓と属性を持っていることを意味します。メンバー属性とメンバー メソッドがクラスに反映されている限り、インスタンス化されたオブジェクトにはこれらの属性とメソッドが含まれます。
整数型や浮動小数点型などの PHP のオブジェクトも、さまざまな種類のデータを格納するために使用されます。
実行時に使用するためにメモリにロードする必要があります。そのため、メモリ内のオブジェクトは次のようになります。反映されましたか?論理的に言えば、メモリは通常、スタック領域セグメント、ヒープ領域セグメント、コード セグメント、および初期化静的セグメントの 4 つのセグメントに分割され、スタック領域セグメントは同じ記憶領域を占有します。整数 1、10、
100、1000、10000、100000 など、長いスペースを持ち、小さなスペースを占有する型は、メモリ内で同じ長さのスペースを占有し、すべて 64 ビットと 4 バイトです。それでは、可変長で多くのスペースを占めるデータ型のデータは、メモリのどのセグメントに配置すべきでしょうか?このようなデータは
ヒープ メモリに配置されます。スタック メモリには直接アクセスできますが、ヒープ メモリには直接アクセスできません。このオブジェクトの場合、数値は大きなデータ型であり、可変長のスペースを占めるため、オブジェクトはヒープに配置されますが、オブジェクト名はスタックに配置されるため、オブジェクト名を通じて取得できます。オブジェクトを使用します。
$p1=new Person();
、詳細については、以下の図を参照してください:
上の図からわかるように、等号の右側は実際のオブジェクト インスタンス、つまりヒープ メモリ内のエンティティです。上の図には 3 つあります
new Person() 回なので、ヒープ内に 3 つのスペースが開かれ、PHP ではそれぞれのオブジェクトが独立して独自のスペースを使用します。新しいキーがあるため、単語が出現すると、オブジェクトがインスタンス化され、ヒープ内に独自のスペースが作成されます。
ヒープ内の各インスタンス オブジェクトには属性が保存されます。たとえば、ヒープ内のインスタンス オブジェクトには名前、性別、年齢が保存されます。各属性にはアドレスがあります。
$p1=new Person(); 等号 $p1 の右側は参照変数です。代入演算子 "=" によってオブジェクトの最初のアドレスが参照変数 "$p1" に代入されます。は、格納されたオブジェクトの最初のアドレスです。アドレス変数 $p1 は、ヒープ内のオブジェクトを指すポインターに相当するため、参照変数 $p1 を通じてオブジェクトを操作できます。 . 通常、オブジェクト参照
もオブジェクトと呼びます。
6. オブジェクト内のメンバーの使い方 上で見たように、PHP オブジェクトには 2 種類のメンバーがあり、1 つはメンバー属性、もう 1 つはメンバーメソッドです。 $p1=new Person(); オブジェクトのメンバーを使用する方法を説明します。オブジェクトのメンバーにアクセスしたい場合は、特殊な演算子「->」を使用してオブジェクト メンバーへのアクセスを完了する必要があります。 $ p3->sex;
Object->Method $p1->say(); $p2->run();
次の例のように:
<?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "这个人在说话"; }f unction run() //这个人可以走路的方法 { echo "这个人在走路"; } } $p1=new Person(); //创建实例对象$p1 $p2=new Person(); //创建实例对象$p2 $p3=new Person(); //创建实例对象$p3 //下面三行是给$p1对象属性赋值 $p1->name=”张三”; $p1->sex=”男”; $p1->age=20; //下面三行是访问$p1对象的属性 echo “p1对象的名字是:”.$p1->name.”<br>”; echo “p1对象的性别是:”.$p1->sex.”<br>”; echo “p1对象的年龄是:”.$p1->age.”<br>”; //下面两行访问$p1对象中的方法 $p1->say(); $p1->run(); //下面三行是给$p2对象属性赋值 $p2->name=”李四”; $p2->sex=”女”; $p2->age=30; //下面三行是访问$p2对象的属性 echo “p2对象的名字是:”.$p2->name.”<br>”; echo “p2对象的性别是:”.$p2->sex.”<br>”; echo “p2对象的年龄是:”.$p2->age.”<br>”; //下面两行访问$p2对象中的方法 $p2->say(); $p2->run(); //下面三行是给$p3对象属性赋值 $p3->name=”王五”; $p3->sex=”男”; $p3->age=40; //下面三行是访问$p3对象的属性 echo “p3对象的名字是:”.$p3->name.”<br>”; echo “p3对象的性别是:”.$p3->sex.”<br>”; LAMP 大讲堂PHP 面向对象技术(全面讲解) echo “p3对象的年龄是:”.$p3->age.”<br>”; //下面两行访问$p3对象中的方法 $p3->say(); $p3->run(); ?>
上記の例からわかるように、オブジェクト内でのみメンバーにアクセスする必要があります。オブジェクト内のメンバーにアクセスする 2 番目の方法はありません。上記は PHP オブジェクト指向チュートリアル 3 の内容です。コンテンツについては、PHP 中国語 Web サイト (www.php.cn) を参照してください。

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

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

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

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

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 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はより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック









