各種php

WBOY
WBOYオリジナル
2016-06-23 14:35:021019ブラウズ

PHP は、入れ子の略称で、英語の Hypertext Preprocessing Language (PHP: Hypertext Preprocessor) の略称です。 PHP は HTML 埋め込み言語であり、Microsoft の ASP に似ています。どちらも HTML ドキュメントに埋め込まれ、言語のスタイルは C 言語に似ています。 Web サイトのプログラマーによって広く使用されています。 PHP の独自の構文は、C、Java、Perl、および PHP 独自の革新的な構文を組み合わせたものです。 CGI や Perl よりも高速に動的 Web ページを実行できます。 PHP で作成された動的ページは、他のプログラミング言語と比較して、プログラムを HTML ドキュメントに埋め込んで実行するため、HTML タグを完全に生成する CGI よりも実行効率が高く、同じく HTML に埋め込まれているスクリプト言語 JavaScript と比較して、対照的に、PHP はサーバー側で実行され、サーバーのパフォーマンスを最大限に活用します。PHP 実行エンジンは、ユーザーが頻繁にアクセスする PHP プログラムもメモリに保存するため、他のユーザーがアクセスするときにプログラムを再コンパイルする必要はありません。プログラムを再度メモリ内で直接実行するだけです。これも PHP の効率の高さの現れの 1 つです。 PHP には非常に強力な機能があり、すべての CGI または JavaScript 関数を PHP で実装でき、ほとんどすべての一般的なデータベースとオペレーティング システムをサポートしています。
PHP はもともと 1994 年に Rasmus Lerdorf によって作成されました。それは、彼自身の Web サイトへの訪問者をカウントするために Perl 言語で書かれた単純なプログラムとして始まりました。その後、データベースへのアクセスも含めてC言語で書き直されました。最初のバージョンは 1995 年に Personal Home Page Tools (PHP Tools) としてリリースされ、Lerdorf はプログラムを紹介するいくつかのドキュメントを作成し、PHP 1.0 をリリースしました。この初期バージョンでは、ゲストブックや来訪者カウンターなどの簡単な機能が提供されていました。その後、PHP を使用する Web サイトが増え、ループ文や配列変数などの機能の追加が強く求められ、開発チームに新しいメンバーが加わり、1995 年半ばに PHP 2.0 がリリースされました。 2 番目のバージョンは PHP/FI (フォーム インタプリタ) と呼ばれます。 PHP/FI は mSQL のサポートを追加し、それ以来、動的 Web 開発における PHP の地位を確立しました。 1996 年末までに、PHP/FI を使用する Web サイトは 15,000 ありましたが、1997 年半ばまでに、PHP/FI を使用する Web サイトの数は 50,000 を超えました。 1997 年半ばに、開発チームに Zeev Suraski と Andi Gutmans が加わり、3 番目のバージョンは PHP3 と名付けられ、2000 年に多くの新機能が追加されました。 。
[この段落を編集] PHP の機能
PHP の機能には以下が含まれます:
オープン ソース コード: すべての PHP ソース コードは実際に利用可能です。
PHPは無料です。
phpの利便性:PHPは非常に便利で習得が簡単です
サーバーサイドベース:PHPはサーバーサイドで動作するスクリプトであるため、UNIX、LINUX、WINDOWSで実行できます。
埋め込みHTML: PHPはHTML言語を埋め込むことができるため、学習は難しくありません。
シンプルな言語: PHP は Java や C++ とは異なり、スクリプト言語を主要な言語として主張します。
高効率: PHP が消費するシステム リソースは大幅に少なくなります。
画像処理: PHPを使用して画像を動的に作成します
オブジェクト指向: php4とphp5では、オブジェクト指向の側面が大幅に改善され、phpを使用して大規模な商用プログラムを開発できるようになりました。
PHPは他の言語と比べて編集が簡単で実用性が高く、初心者に適しています。
[この段落を編集]PHP 3 と PHP 4
【PHP3】
PHP3 は Apache サーバーと密接に統合されており、常に更新され、新しい機能が追加されており、ほとんどすべての主流データベースと非主流データベースをサポートしています。その高速な実行効率により、PHP は 1999 年には 150 万以上のサイトで使用されました。さらに、そのソースコードは完全に公開されており、オープンソース意識の高まりに伴い、この点で主流となっています。新しい関数ライブラリの継続的な追加と継続的な更新の活力により、PHP は UNIX、LINUX、または Windows プラットフォーム上でより多くの新しい関数を搭載できるようになります。プログラミングをより良くサポートする豊富な機能を提供します。
【PHP4】
PHP4.0ではスクリプトプログラム全体の核が大幅に変更され、プログラムの実行速度がより高速な要件に対応できるようになりました。最適化後の効率は、従来の CGI または ASP プログラムよりも優れています。さらに強力な新機能とより豊富な関数ライブラリもあります。あなたがそれを受け入れるかどうかに関係なく、PHP は Web CGI の分野に革命を起こすでしょう。プロのWebマスターにとっても必須コースの1つになります。
PHP 4.0 は、より効果的で信頼性の高い動的 Web ページ開発ツールであり、ほとんどの場合、スクリプト記述がより強力で複雑になっています。 PHP 4.0 のこれらの優れたパフォーマンスは、PHP スクリプト エンジンの再設計の結果です。このエンジンは、AndiGutmans と Zeev Suraski によってボトムアップで完全に書き直されました。 PHP4.0 スクリプト エンジンである Zend エンジンは、PHP 3.0 で採用された解析時実行モデルではなく、より効率的なコンパイルおよび実行方法を使用します。
[この段落を編集] PHP4 の利点
PHP4 は、バージョン 3.0 をベースに、主に次のような多くの便利な機能を追加または強化しています:
(1) エイ​​リアス: PHP4 では、参照を使用して変数に値を割り当てることができ、プログラミングに大きな柔軟性をもたらします。
(2) 拡張 API モジュール: PHP 4.0 は、古い API バージョンよりも大幅に高速な拡張 API モジュール用の拡張 PHP インターフェイス モジュールを提供します。 PHP モジュールの既存の最も一般的に使用されるインターフェイスのほとんどは、この拡張機能を使用するインターフェイスに変換されています。
(3)リソースの自動解放:PHP4は参照カウント機能を追加 この新技術の導入により、PHP4には自動メモリ管理機能が備わり、開発者の負担が軽減されます。
(4) ブール型: PHP 4.0 はブール型をサポートします。
(5) プロセス生成: UNIX 環境の PHP 4.0 は、automake/libtool と呼ばれるシステム生成テクノロジを使用して、非常にインテリジェントで汎用性の高い生成プロセスを提供します。
(6) COM/DCOM サポート: PHP 4.0 は、COM オブジェクトにシームレスにアクセスおよびアクセスできる COM/DCOM サポート (Windows 環境のみ) を提供します。
(7) PHP 3.0 との非常に優れた互換性: PHP 4.0 は、PHP 3.0 コードとほぼ 100% の下位互換性があります。 PHP 4 のアーキテクチャが改善されたため、いくつかの微妙な違いがありますが、ほとんどの人はおそらくこの状況に遭遇することはありません。
(8) 設定: PHP4 は PHP.ini ファイルを再設計および強化し、PHP.ini を使用した PHP の設定を非常に簡単にしました。このファイルは実行時に Apache (UNIX システム) または Windows (Windows 環境) によって登録できます。 。
(9) 暗号化のサポート: PHP4 は完全な暗号化を実装しており、これらの暗号化関数は完全な mycrypt ライブラリであり、PHP 4.0 はハッシュ関数をサポートしています。 Blowfish、TripleDES、MD5、SHA1 なども使用できる暗号化アルゴリズムの一部です。
(10) 型チェック: PHP 4.0 は型チェック用に同じ演算子、=== (3 つの等号演算子) をサポートしており、2 つの値とその型の間をチェックします。たとえば、3 ===3 は false (型が異なる) とみなされ、3 ==3 (等しい) は true とみなされます。
(11) FTP サポート: PHP 4.0 は FTP をサポートします。通常は、モデム接続を介して大きなファイルをダウンロードするためのインターフェイスを提供します。ただし、本当に必要な場合は、PHP を使用できます。
(12) PHP4 の新機能または強化された機能: PHP 4.0 では、多くの新機能が追加され、また多くの既存の機能も強化されました。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start()strip_tags() unset()
(13) Here print: PHP 4.0 の Here print は Perl に似ていますが、完全に同じではありません。 HTMLファイルなどの大量の記事を、目次タグなどの文字も欠落させずに印刷する場合に便利な方法をご紹介します。
(14) HTTP セッションフォールバックシステム: HTTP セッション管理のためのフォールバックシステムが PHP 4.0 に実装されています。デフォルトでは、セッション識別子は Cookie に保存されます。 Cookie がサポートされていない場合、または Cookie タスクが失敗した場合、セッション ID が自動的に作成され、URL のクエリ文字列に組み込まれます。
(15) ISAPI サポート: PHP 4.0 は、IIS プラグインとしてパーソナライズされた ISAPI モジュールとして使用できます。これは、外部プログラムとして実行される PHP 3.0 よりも効率的です。
(16) メモリ: PHP 4.0 は、主に参照カウント技術の実装により、メモリをより効率的に使用できるため、メモリ消費量が少なくなります。
(17) 他クラスのメンバー関数: PHP 4.0 では、メンバー関数自体のスコープ内、またはグローバル スコープ内で、他のクラスのメンバー関数を呼び出すことができます。たとえば、親関数を子関数でオーバーライドし、子関数内で親関数を呼び出すことができます。
(18) 多次元配列: PHP 4.0 では、GET、POST、Cookie を使用したデータ送信で多次元配列がサポートされています。
(19) パーソナライズされた HTTP セッションのサポート: フォールバック システム管理を含む HTTP セッションの処理は、PHP 4.0 の新しいライブラリ関数によって実装されます。バージョン 3.0 でセッションを処理するには、PHPLIB およびサードパーティのライブラリ関数を使用する必要があります。これは、PHP でセッションを直接サポートする場合よりもはるかに時間がかかります。
(20) パーソナライズされた Java サポート: PHP 4.0 は Java との対話をサポートします。このパーソナライズされた Java サポートにより、Java オブジェクトのメソッドを作成および使用するためのシンプルで効率的なツールが PHP に提供されます。
21) オブジェクトとネストされた数値グループ: PHP 4.0 は、より強力なオブジェクトを実装し、PHP 3.0 に存在したさまざまな構文制限を削除します。ニーズに応じて、オブジェクトを配列内でネストしたり、その逆を行うことができます。
(22) オブジェクト指向プログラミング: PHP 4.0 は、オブジェクト指向プログラミングとクラスとオブジェクトの構築のための拡張機能と新機能を提供します。 PHP4 は、オブジェクトのオーバーロードや参照テクノロジなどの新しいテクノロジを実装します。
(23) オブジェクト オーバーロードのサポート: オブジェクト オーバーロード構文により、サードパーティのオブジェクト指向クラス ライブラリが PHP4 のオブジェクト指向機能を使用して独自の関数にアクセスできるようになります。この機能を使用する COM モジュールが実装されています。
(24) 出力バッファリングのサポート: PHP は、出力バッファリング関数のコレクションを提供します。出力バッファリングのサポートにより、圧縮されたバッファーの周囲に関数をラップする関数を作成できます。 PHP4 の出力バッファリングのサポートにより、HTML 本文が出力されるかどうかに関係なく、HTML ヘッダー情報を保存できます。ヘッダー情報 ((header()、コンテンツ タイプ、Cookie) はバッファリングを使用しません。
(25) PCRE ライブラリの追加: PHP 4.0 には、通常の正規表現ライブラリとともに PHP にバンドルされている Perl 互換の正規表現 (PCRE) ライブラリが含まれていますPCRE の分割および置換関数はサポートされています。PCRE と Perl の正規表現にはいくつかの小さな違いがあります。
PHP.ini ファイルは、PHP 4.0 で再設計され、PHP 構成を使用する方が簡単で効率的です。すべてのファイルは、実行時に Apache (Apache の下) または Windows レジストリによって操作できます。関連するすべての設定ディレクティブは、モジュールで自動的に追加されます。 : PHP 4.0 は、リソースを含むシステム内のすべての値の参照カウントを提供します。リソースが変数から参照されなくなると、メモリ リソースを節約するために自動的に解放されます。組み込みの SQL クエリ。PHP 3.0 では、別の SQL 結果セットが再帰されるたびに、メモリが繰り返し割り当てられ、これらの結果セットによって占有されていたメモリは、スクリプトが実行されるまで解放されません。
28) 参照のサポート:変数の値は参照によって変更できます
(29) 関数の実行時バインディング: PHP 4.0 の実行時バインディング関数を使用すると、宣言がコードの後半か後かに関係なく、関数を宣言する前に関数を呼び出すことができます。実行時
(30) クラス実行時情報: PHP 4.0 は、実行時に次のクラス情報へのアクセスをサポートします: オブジェクトのクラス名、オブジェクトの親クラスのクラス名、オブジェクトの関数の名前
( 31) サーバー抽象化レイヤー: Web サーバーをサポートするための拡張 SAPI (サーバー API) インターフェイスを提供します。これは、PHP 4.0 の不可欠な部分であり、一般的な WEB サーバー インターフェイスのサポートと、マルチスレッド WEB サーバーの透過的なサポートを提供します。 Apache、IIS (ISAPI)、および AOL サーバーを含むほとんどの WEB サーバーの場合
(32) 構文の強調表示: PHP 4.0 の構文の強調表示により、開発者は代わりにソース コードを参照できるようになり、この機能は PHP 3.0 よりも効率的に実行されます。より高速で、パフォーマンスが向上し、よりコンパクトな HTML コードが生成されます
参照による変数の値の変更: PHP 4.0 は、2 つの「関連付けられた」変数のいずれかの値が変更されると、変数の割り当てがサポートされます。他の変数も変更されます。これは C のポインター型に似ています。
(34) 参照文字列内の変数参照: PHP 4.0 では、参照文字列内の変数参照が強化されています。
[この段落を編集] データベースの側面
PHP のデータベースの豊富なサポートも、その急速な人気の理由の 1 つであり、次のデータベースまたはデータ ファイルをサポートしています。 PostgreSQL
また、電子メールに関連する IMAP および POP3、ネットワーク ニュース NNTP、グローバル情報ネットワーク HTTP および Apache サーバー、その他のネットワークなどの多くの通信プロトコルもサポートしています。関連する機能。
さらに、PHPで書かれたWebバックエンドCGIプログラムは、さまざまなオペレーティングシステムに簡単に移植できます。たとえば、最初に Web サイトを Linux 上に構築した場合、システム負荷が高すぎる場合、CGI プログラムを再コンパイルすることなく、システム全体を SUN ワークステーションにすぐに移行できます。インターネットの急速な発展に直面して、これは長期的な計画を立てるのに最適な選択です。
変数の種類:
PHP には多くの種類の変数があります。主なものは次のとおりです:
-数値 (整数 - 例: 32)
-ブール値 (ブール値 - 例: TRUE)
-文字列 (文字列 - 例: ' text ')
- NULL
- Resource (リソース)
- Array (配列 - 例: arrayname[2])
構文:
構文は 3 種類あります:
//comment
/* comment */
# comment
基本的な「制御構造」:
* if ... else
if (condition == true)


<br> </head> <br> <?php <br /> echo "hello world" を参照してください。 <br /> PHP公式ウェブサイト: www.php.net <br /> PHP によるオブジェクト指向プログラミングのサポート <br /> オブジェクト指向プログラミングの概念: <br /> 異なる作成者は異なる意見を持っているかもしれませんが、OOP 言語には次のいくつかの側面が必要です: <br /> 抽象データ型と情報encapsulation <br /> 継承 <br /> ポリモーフィズム <br /> PHP では、カプセル化はクラスを通じて完了します。 <br /> <?php <br /> class Something { <br /> // OOP クラスでは、通常、最初の文字は大文字です <br /> var $x <br /> function setX($v) { <br /> // メソッドは小文字の単語で始まり、getValueOfArea() のように大文字で単語を区切ります <br /> $this->x=$v; } <br /> function getX() { <br /> return $this- >データ メンバーは、「var」宣言を使用してクラス内で定義されます。データ メンバーに値が割り当てられるまでは、データ メンバーには型がありません。データ メンバーには、整数、配列、連想配列、またはオブジェクトを指定できます。メソッドはクラス内の関数として定義されます。メソッド内のクラス メンバー変数にアクセスする場合は、$this->name を使用する必要があります。それ以外の場合、メソッドにはローカル変数のみを使用できます。 <br /> new 演算子を使用してオブジェクトを作成します: <br /> $obj=new Something; <br /> $obj->setX(5); <br> $see=$obj->getX(); を使用してメンバー関数を使用できます。 <br> この例では、setX メンバー関数がオブジェクトのメンバー変数 x (クラスではない) に 5 を代入し、getX がその値 5 を返します。 $obj->x=6 のようなクラス参照を通じてデータ メンバーにアクセスできます。これは OOP の良い習慣ではありません。メソッドを通じてメンバー変数にアクセスすることを強くお勧めします。メンバー変数を操作不可能なものとして扱い、オブジェクト ハンドルを通じてのみメソッドを使用すれば、優れた OOP プログラマーになれるでしょう。残念ながら、PHP はプライベート メンバー変数の宣言をサポートしていないため、PHP では不正なコードが許可されています。 PHP では継承を簡単に実装できます。extend キーワードを使用するだけです。 <br> <?php <br /> class Another extends Something { <br /> var $y; <br /> function setY($v) { <br /> } <br /> } <br /> 「Another」クラスのオブジェクト親クラス (Something) のすべてのデータ メンバーとメソッドが含まれ、独自のデータ メンバーとメソッドも追加されました。 <br /> $obj2=new Something; <br /> $obj2->setY(7); を使用できます <br> PHP はまだ多重継承をサポートしていないため、2 つまたは 2 つを継承することはできません。新しいクラスは複数のクラスから派生します。派生クラスでメソッドを再定義できます。「Another」クラスで getX メソッドを再定義すると、「Something」で getX メソッドを使用できなくなります。派生クラスで基本クラスと同じ名前のデータ メンバーを宣言すると、それを扱うときに基本クラスのデータ メンバーが「隠蔽」されます。 <br> クラス内にコンストラクターを定義できます。コンストラクターはクラス名と同じ名前のメソッドで、クラスのオブジェクトを作成するときに呼び出されます。例: <br> <?php <br /> class Something { <br /> var $x <br /> function Something($y) { <br /> $this - > <br> 次のようにしてオブジェクトを作成できます。 <br> $obj=new Something(6); <br> コンストラクターは自動的にデータ変数 x に 6 を代入します。コンストラクターとメソッドは通常の PHP 関数であるため、デフォルトのパラメーターを使用できます。 <br> function Something($x="3",$y="5") <br> 次に、 <br> $obj=new Something() // x=3 and y=5 <br> $obj=new Something(8); / x=8 と y=5 <br> $obj=new Something(8,9) // x=8 と y=9 <br>;デフォルトのパラメータは C++ メソッドを使用するため、Y の値を無視して X にデフォルトのパラメータを指定することはできません。パラメータは左から右に割り当てられ、渡されたパラメータが必要なパラメータより小さい場合は、そのパラメータが使用されます。 . デフォルトのパラメータ。 <br> 派生クラスのオブジェクトが作成されるとき、そのコンストラクターのみが呼び出され、親クラスのコンストラクターは呼び出されません。基本クラスのコンストラクターを呼び出したい場合は、そのコンストラクターの中で明示的に呼び出す必要があります。派生クラス。これが可能なのは、親クラスのすべてのメソッドが派生クラスで使用できるためです。 <br> <?php <br /> function Another() { <br /> $this->y=5; <br> $this->Something(); を使用しています。抽象クラスはインスタンス化できず、派生クラスへのインターフェイスのみを提供できます。設計者は多くの場合、抽象クラスを使用してプログラマに基本クラスからの派生を強制し、新しいクラスに必要な機能が確実に含まれるようにします。 PHP には標準メソッドはありませんが、この機能が必要な場合は、基本クラスを定義し、そのコンストラクターの後に「die」呼び出しを追加して、基本クラスがインスタンス化されないようにすることができます。その後に「die」ステートメントを追加します。各メソッド (インターフェイス) に依存するため、プログラマが派生クラスのメソッドをオーバーライドしないと、エラーが発生します。また、PHP は型指定されていないため、オブジェクトが基本クラスからの派生クラスであることを確認してから、クラスの ID を指定する (ある種の識別 ID を返す) メソッドを基本クラスに追加し、オブジェクトパラメータを受け取るときにこの値を確認してください。もちろん、邪悪なプログラマが派生クラスでこのメソッドをオーバーライドした場合、このメソッドは機能しませんが、一般に問題は邪悪なプログラマではなく怠惰なプログラマに見られます。 <br> もちろん、プログラマにとって基本クラスを非表示にしておけるのは素晴らしいことです。プログラマはインターフェイスを出力するだけで仕事を行うことができます。 PHP にはデストラクターがありません。 <br> オーバーロード(オーバーライドとは異なり)は PHP ではサポートされていません。 OOP では、メソッドをオーバーロードして、名前は同じでパラメータの数やタイプが異なる 2 つ以上のメソッド (言語に応じて異なります) を実装できます。 PHP は型付けが緩い言語であるため、型によるオーバーロードは機能しませんが、異なる数のパラメーターによるオーバーロードも機能しません。 <br> さまざまな方法 (さまざまな数の引数を渡す) でオブジェクトを作成できるように、OOP でコンストラクターをオーバーロードすると良い場合があります。 PHP で実装するコツは次のとおりです。 <br> <?php <br /> class Myclass { <br /> function Myclass() { <br /> $this->$name(); <br /> $name="Myclass".func_num_args(); $this->name() は通常エラーですが、ここで $name は呼び出されるメソッドの名前です <br> } <br> function Myclass1($x) { <br> code; <br> } <br> function Myclass2($x) ,$ y) { <br> code; <br> } <br> } <br> このクラスの使用は、クラス内の追加処理を通じてユーザーに透過的です: <br> $obj1=new Myclass('1') //Myclass1 が呼び出されます <br> $obj2= new Myclass('1','2'); //Myclass2 が呼び出されます <br> これは非常に便利な場合があります。 <br>[この段落を編集]ポリモーフィズム<br> ポリモーフィズムは、実行時に渡されたオブジェクトパラメータに基づいてどのオブジェクトメソッドを呼び出すかを決定できます。たとえば、Figure クラスがある場合は、draw メソッドを定義します。そして、circle クラスと Rectangle クラスを派生し、派生クラスでdraw メソッドをオーバーライドし、パラメーター x を予期し、$x->draw() を呼び出すことができる関数を持つこともできます。ポリモーフィズムがある場合、どの描画メソッドが呼び出されるかは、関数に渡すオブジェクトのタイプによって異なります。 <br> PHP のようなインタープリター型言語のポリモーフィズム (C++ コンパイラーがこのようなコードを生成すると想像してください。どのメソッドを呼び出す必要がありますか? また、オブジェクトのタイプもわかりません。まあ、それは重要ではありません) は非常に簡単で自然です。したがって、当然のことながら、PHP はポリモーフィズムをサポートします。 <br> <?php <br /> function niceDrawing($x) { <br /> //Board クラスのメソッドであるとする <br /> $x->draw(); <br /> $obj=new Circle(3,187); <br /> $obj2 = new Rectangle(4,5); <br /> $board->niceDrawing($obj); <br> //Circle の描画メソッドが呼び出されます <br> $board->niceDrawing($obj2); //描画メソッドof Rectangle が呼び出されます <br> PHP によるオブジェクト指向プログラミング <br>一部の「純粋主義者」は、PHP は真のオブジェクト指向言語ではないと言うかもしれませんが、これは真実です。 PHP はハイブリッド言語であり、OOP または従来の手続き型プログラミングを使用できます。ただし、大規模なプロジェクトの場合は、純粋な OOP を使用して PHP でクラスを宣言し、プロジェクト内でオブジェクトとクラスのみを使用する必要がある場合があります。 <br> プロジェクトが大きくなるにつれて、OOP コードは保守しやすく、理解しやすく、再利用しやすいので便利です。これらはソフトウェアエンジニアリングの基礎です。これらの概念を Web ベースのプロジェクトに適用することが、将来の Web サイトの成功の鍵となります。 <br>[この段落を編集] PHP の高度な OOP テクノロジ<br> OOP の基本的な概念を見た後、より高度なテクノロジを紹介します: <br> シリアル化 (シリアル化) <br> PHP は永続オブジェクトをサポートしていません、OOP の永続オブジェクト 状態と状態を維持できるオブジェクトこれは、オブジェクトをファイルまたはデータベースに保存し、後でそのオブジェクトをロードする機能を備えていることを意味します。これはいわゆるシリアル化メカニズムです。 PHP にはオブジェクトに対して呼び出すことができるシリアル化メソッドがあり、シリアル化メソッドはオブジェクトの文字列表現を返すことができます。ただし、シリアル化ではオブジェクトのメンバー データのみが保存され、メソッドは保存されません。 <br> PHP4では、オブジェクトを文字列$sにシリアル化してからオブジェクトを解放し、その後オブジェクトを$objに逆シリアル化すると、オブジェクトのメソッドを引き続き使用できます。これを行うことはお勧めしません。(a) ドキュメントには、この動作が将来のバージョンでも機能するという保証がないからです。 (b) これにより、シリアル化されたバージョンをディスクに保存してスクリプトを終了するときに、誤解が生じる可能性があります。後でこのスクリプトを実行する場合、文字列表現にはメソッドがまったく含まれていないため、オブジェクトを逆シリアル化するときにオブジェクトのメソッドが存在することは期待できません。 <br> 要するに、PHPのシリアル化はオブジェクトのメンバ変数を保存するのに非常に便利です。 (関連する配列や配列をファイルにシリアル化することもできます)。 <br> 例: <br> <?php <br /> $obj=new Classfoo(); <br /> $str=serialize($obj); <br /> //$strをディスクに保存 <br /> //数ヶ月後 <br /> //ディスクからロード strと入力<br /> $obj2=unserialize($str) <br /> メンバーデータは復元しますが、メソッドは復元しません(ドキュメントによると)。これにより、メンバー変数にアクセスするには $obj2->x を使用するような方法しかなくなります (他に方法はありません)。自宅では試さないでください。 <br /> この問題を解決するにはいくつかの方法がありますが、この簡潔な記事にはあまりにももったいないので省略します。私は、PHP の次のバージョンでの完全にシリアル化された機能を喜んで歓迎します。 <br /> PHP や OOP でデータ ストレージにクラスを使用することの優れた点の 1 つは、何かを行うクラスを簡単に定義でき、それを使用したいときにいつでも対応するクラスを呼び出すことができることです。ユーザーが製品 ID 番号を選択して製品を選択できる HTML フォームがあるとします。データベースに製品情報があり、その製品とその価格などを表示したいとします。さまざまなタイプの製品があり、同じアクションでも製品ごとに異なる意味を持ちます。たとえば、サウンドを表示するということは、そのサウンドを再生することを意味する場合がありますが、他の種類の製品の場合は、データベースに保存されている画像を表示することを意味する場合があります。 OOP または PHP を使用して、コーディングを削減し、品質を向上させることができます: <br /> 製品のクラスを定義し、それに必要なメソッド (例: 表示) を定義してから、製品クラス (SoundItem クラス、 ViewableItem クラスなど) を使用して、製品クラスのメソッドをオーバーライドして、メソッドが希望どおりに動作するようにします。 <br /> データベース内の各製品のタイプフィールドに従ってクラスに名前を付けます。一般的な製品テーブルには(ID、タイプ、価格、説明などのフィールド)がある場合があります...その後、処理スクリプトでタイプの値を取得できます。データベースから取得し、type という名前のオブジェクトをインスタンス化します: <br /> <?php <br /> $obj=new $type(); <br /> $obj->action(); これは非常に優れた PHP 機能です。オブジェクトのタイプを考慮せずに、$obj のメソッドやその他のメソッドを表示します。この手法を使用すると、新しいタイプのオブジェクトを追加するためにスクリプトを変更する必要はなく、それを処理するクラスを追加するだけで済みます。 <br> この関数は非常に強力です。すべてのオブジェクトの型を考慮せずに、メソッドを異なるクラスに実装し、メイン スクリプト内の任意のオブジェクトで使用するだけです。 2 人のプログラマーは必要ありません。ただ楽しいだけです。 <br> これで、プログラミングは簡単、メンテナンスは安価、そして再利用可能であるということに同意されましたか? <br> プログラマのグループを管理する場合、各人がオブジェクトの種類とそれを処理するクラスを担当することは非常に簡単です。 <br>ユーザーが選択した言語分野に応じて対応するクラスを適用するだけで、この技術を通じて国際化を実現できます。 <br> Copy and Clone <br> $obj のオブジェクトを作成するとき、$obj2=$obj でオブジェクトをコピーできます。新しいオブジェクトは $obj のコピー (参照ではありません) なので、$obj の値を持ちます。その時の状態。場合によっては、これを実行したくない場合もあります。obj クラスのような新しいオブジェクトを生成したい場合は、 new ステートメントを使用してクラスのコンストラクターを呼び出すことができます。これは、PHP でもシリアル化と基本クラスを通じて実現できますが、他のすべてのクラスは基本クラスから派生する必要があります。 <br> 危険ゾーンへの突入 <br> オブジェクトをシリアル化すると、何らかの形式で文字列が得られます。興味があれば調べてみると、文字列の中にクラスの名前が含まれています (素晴らしい!)。次のように取り出すことができます: <br> <?php <br /> $herring=serialize($obj); <br /> $nam=str_replace(""",'') , $vec[2]); <br /> したがって、「Universe」クラスを作成し、すべてのクラスを強制的にユニバースから拡張すると仮定すると、次のようにユニバースでクローン メソッドを定義できます。 clone() { <br /> $herring=serialize($this); <br /> $vec=explode(':',$herring) <br /> $nam=str_replace(""",'',$vec[2 ]); <br /> $ ret=new $nam; <br /> return $ret; } <br /> } <br /> //次に <br /> $obj=new Something() <br /> // Universe から展開 $other=$obj->clone( ); get は新しい Something クラスのオブジェクトであり、new メソッドを使用してコンストラクターを呼び出して作成されたオブジェクトと同じです。これがうまくいくかどうかはわかりませんが、経験則として、ユニバース クラスは派生クラスの名前を知っていると考えられます。限界があるのは想像力だけです。 <br> <?php echo date("Y-m-d H:i:s");?>このステートメントは現在時刻を書き込みます。 <br>[この段落を編集] PHP の開発 <br> PHP は、もともと Personal Home Page と呼ばれ、個人 Web ページを維持するために元々使用されていた Perl プログラムを置き換えるために Rasmus Lerdorf によって C 言語で開発された CGI ツールのセットです。当初、これらのツールは、Rasmus Lerdorf の履歴書を表示し、Web トラフィックをカウントするために使用されていました。彼はこれらのプログラムをいくつかのフォーム インタプリタと統合し、PHP/FI と呼びました。 PHP/FI をデータベースに接続して、単純な動的 Web プログラムを生成できます。 Rasmus Lerdorf は、プログラム開発をスピードアップし、コミュニティを通じてエラーを発見することを期待して、1995 年 6 月 8 日に PHP/FI を一般公開しました。 PHP 2 と名付けられたこのリリースされたバージョンには、Perl のような変数命名、フォーム処理機能、HTML への実行の埋め込み機能など、今日の PHP のプロトタイプのいくつかがすでに備わっていました。プログラム構文も Perl に似ていますが、より多くの制限がありますが、Perl の方がシンプルで柔軟性があります。 <br> 1997 年、Technion IIT で働く 2 人のイスラエル人プログラマー、Zeev Suraski と Andi Gutmans が PHP のパーサーを書き換え、PHP 3 の基礎となりました。このとき、PHP の名前も PHP: Hypertext Preprocessor に変更されました [5]。数か月のテストの後、開発チームは 1997 年 11 月に PHP/FI 2 をリリースし、その後 PHP 3 のオープン テストを開始し、最終的に 1998 年 6 月に PHP 3 をリリースしました。 Zeev Suraski と Andi Gutmans は、PHP 3 のリリース後に PHP のコアを書き直し始めました。1999 年にリリースされたパーサーは Zend Engine と呼ばれていました [7]。彼らはまた、PHP の開発を管理するためにイスラエルのラマトガンに Zend Technologies を設立しました。 。 <br> 2000 年 5 月 22 日、Zend Engine 1.0 に基づく PHP 4 が正式にリリースされ、PHP 5 は 2004 年 7 月 13 日にリリースされました。PHP 5 は第 2 世代 Zend Engine [5] を使用しました。 PHP には、強化されたオブジェクト指向関数、PDO (PHP Data Objects、データベースにアクセスするための拡張関数ライブラリ) の導入、および多くのパフォーマンスの強化など、多くの新機能が含まれています。現在、PHP 4 は、ユーザーに PHP 5 への移行を促す更新は行われません。 <br> 2008 年に、PHP 5 が開発中の唯一の PHP バージョンになりました。将来的には、PHP 5.3 には後期静的バインディングとその他の機能拡張が追加される予定です。 PHP 6 の開発も進行中です。主な改善には、register_globals、マジック クオート、セーフ モードの削除が含まれます。 <br> phpの最新バージョンは5.2.6(2008-05-03更新) <br> phpの公式サイト: http://www.php.net/ <br> PHP: PHPはオープンソースのスクリプトプログラミング言語です。主に動的 Web デザイン用の Web サーバーのサーバー側アプリケーションで使用され、HTML ページに埋め込まれたスクリプト言語です。 <br> WindowsでのPHP環境の設定<br> 1. 必要なソフトウェア環境: <br> 1. apache 2.2.4 <br> 2. c:perlにactive perl 5.10がインストールされている必要があります <br> 3. c:phpにphp 5.2.6がインストールされている必要があります <br> ? <br> <br></p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="php unset()の詳しい説明" href="https://m.php.cn/ja/faq/266417.html">php unset()の詳しい説明</a></span><span>次の記事:<a class="dBlack" title="php unset()の詳しい説明" href="https://m.php.cn/ja/faq/266419.html">php unset()の詳しい説明</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>