PHP は、__ (2 つのアンダースコア) で始まるすべてのクラスメソッドをマジックメソッドとして扱います。したがって、独自のクラス メソッドを定義する場合は、先頭に __ を付けないでください。
1. __construct()
オブジェクトをインスタンス化するとき、このオブジェクトのコンストラクター メソッドが最初に呼び出されます
php5 オブジェクト モデルとクラスと同じ名前の関数が、コンストラクターと __construc() メソッドを同時に定義すると、php5 は同じ名前の関数を呼び出す代わりに、デフォルトで __contruct() を呼び出すため、 __contruct() がクラスのデフォルトのコンストラクターとして機能します。 ;
rrree
2, __destruct ()
デストラクターは、オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに実行されます。
header('content-type:text/html;charset=utf-8'); class person{ private $name; /** * 构造函数-当你调用 new person创建对象的时候就调用. * @param string */ function __construct($name='啦'){ echo '调用构造'.$name; }}$obj = new person();//就会输出 "调用构造啦"五个字
header('content-type:text/html;charset=utf-8'); class person{ private $_name; function __construct($val){ $this->_name = $val; } function __destruct(){ echo $this->_name.'调用析构函数<br/>'; } }$obj1 = new person('1');$obj2 = new person('2');$obj3 = new person('3');//因为以堆载的形式存入内存,析构时以的原则是后进先出,所以obj3先被析构,输出以下//3调用析构函数//2调用析构函数//1调用析构函数
3. オブジェクトに存在しないプロパティを読み取ろうとする場合は、__get(string $name)
が呼び出されます。場合によっては、php がエラー情報を提供することがあります。クラスに __get メソッドを追加すると、この関数を使用して Java のリフレクションと同様のさまざまな操作を実装できます。
header('content-type:text/html;charset=utf-8'); class person{ private $_name; function __construct($val){ $this->_name = $val; } function __destruct(){ echo $this->_name.'调用析构函数<br/>'; } }$obj1 = new person('1');$obj2 = new person('2');unset($obj2);$obj3 = new person('3');//值得注意的是,您如果再中间用unset移除了obj2或者用obj2=null显示移除 输出以下//会先执行析构obj2然后再执行obj3//2调用析构函数//3调用析构函数//1调用析构函数
未定義の変数に値を代入するときに呼び出されます
header('content-type:text/html;charset=utf-8'); class person{ private $name; function __get($val){ return '没有这个名称的属性'.$val; }}$obj = new person();echo $obj->name;//调用没有的属性输出该属性的值时,就能调用__get()魔术函数 $val就是你调用属性名称 //值得注意的是,没存在和定义私有修饰符,都属于未定义, 子类继承父类获取不到也一样//输出:没有这个名称的属性name
5、__call( string $name, array $arguments)
アクセスできないメソッド (未定義または非表示など) を呼び出すと、__call() が呼び出されます。
__callStatic(string $name, array $arguments)
アクセスできないメソッド (未定義または非表示など) が静的メソッド内で呼び出される場合、__callStatic() が呼び出されます。
6. __toString()
は、オブジェクトを印刷するときに呼び出されます。この関数は、オブジェクトを直接印刷するときに呼び出されます。
7. __clone()
オブジェクトが複製されるときに呼び出されます。
8. __sleep()
Serialize() 関数は、マジック メソッド __sleep があるかどうかを確認し、存在する場合は、__sleep() メソッドが最初に呼び出され、その後シリアル化操作が実行されます。この関数を使用すると、オブジェクトをクリーンアップし、オブジェクト内のすべての変数の名前を含む配列を返すことができます。メソッドが何も返さない場合、NULL がシリアル化され、E_NOTICE エラーが発生します。 __sleep メソッドは、コミットされていないデータや同様の操作を送信するためによく使用されます。同時に、この機能は、保存する必要のない大きなオブジェクトがある場合に非常に便利です。
9. __wakeup()
__sleep() とは逆に、unserialize() は __wakeup メソッドがあるかどうかを確認します。存在する場合、__wakeup メソッドが最初に呼び出され、オブジェクト データを事前に準備します。 __wakeup は、データベース接続の再確立やその他の初期化操作の実行など、逆シリアル化操作でよく使用されます。
10. __isset()
未定義の変数に対して isset() または empty() が呼び出される場合、 __isset() が呼び出されます。
11. __unset()
オブジェクトのプロパティの設定を解除するときに呼び出されます。例: unset($c->name)。
12. __set_state()
var_export が呼び出されるときに呼び出されます。 __set_state の戻り値を var_export の戻り値として使用します。
13. __autoload()
オブジェクトをインスタンス化する際、対応するクラスが存在しない場合、このメソッドが呼び出されます。簡単に言えば、これはクラスの自動ロードです。PHP が編成していないクラスを使用しようとすると、グローバル関数 __autoload が存在する場合、PHP はその名前のパラメーターを使用してそれを呼び出します。クラス。 。
14. __invoke()
関数を呼び出してオブジェクトを呼び出そうとすると、__invoke メソッドが自動的に呼び出されます。
マジック定数:
__LINE__ ファイル内の現在の行番号。
__FILE__ ファイルのフルパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パス (またはシンボリック リンクの場合は解決された絶対パス) が含まれますが、以前のバージョンには相対パスが含まれる場合がありました。
__DIR__ ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能) =
__FUNCTION__ 関数名 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は関数が定義されたときの関数の名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。
__CLASS__ クラスの名前 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。
__METHOD__ クラスのメソッド名 (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。
__NAMESPACE__ 現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。

PHPでのユーザーセッションアクティビティの追跡は、セッション管理を通じて実装されます。 1)SESSION_START()を使用してセッションを開始します。 2)$ _Sessionアレイを介してデータを保存およびアクセスします。 3)セッションを終了するには、session_destroy()を呼び出します。セッショントラッキングは、ユーザーの動作分析、セキュリティ監視、パフォーマンスの最適化に使用されます。

データベースを使用してPHPセッションデータを保存すると、パフォーマンスとスケーラビリティが向上します。 1)MySQLを構成してセッションデータを保存します:PHP.iniまたはPHPコードでセッションプロセッサを設定します。 2)カスタムセッションプロセッサを実装します:データベースと対話するために、開いて、閉じ、読み取り、書き込み、その他の機能を定義します。 3)最適化とベストプラクティス:インデックス、キャッシュ、データ圧縮、分散ストレージを使用して、パフォーマンスを向上させます。

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

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

ホットトピック









