ホームページ バックエンド開発 PHPチュートリアル Php5.0 命令 ------オブジェクト指向のために生まれた PHP5_PHP チュートリアル

Php5.0 命令 ------オブジェクト指向のために生まれた PHP5_PHP チュートリアル

Jul 13, 2016 pm 05:24 PM
php5 のために 物体 説明する のために

Php5.0 の説明-----オブジェクト指向のために生まれた PHP5 オブジェクト指向のために生まれた PHP5 ------------------------ -- ----------------- 【概要】 現在開発中のPHP5のオブジェクト指向機能が大幅に強化されました。次世代の PHP はどのような言語になるのでしょうか?現在公開されているPHP5のベータ版について詳しく解説していきます。 (1) Zend 2.0 の誕生 現在の PHP4 で使用されている基本的な文法は、Zend エンジンと呼ばれるスクリプト コンパイル エンジンです。これが、PHP3 の改良として生まれた言語である PHP4 の機能が優れている理由の 1 つです。 PHP4 は当初の目的に基づいて PHP3 に比べてパフォーマンスが大幅に向上しており、ネットワーク プログラミングの世界で大きなシェアを占めていると誰もが常に信じてきました。 Zend エンジンを開発した Zend 社は、PHP3 の主な開発者である Zeev Suraski 氏と Andi Gutmans 氏が PHP4 の開発中に設立した会社を統合したものです。 Zend の名前は、Zeev と Andi の名前を組み合わせたものです。 Zend のビジネス モデルは、zend エンジンの PHP コアを継続的にオープンソースで提供すると同時に、周辺製品の開発と販売のメリットを増大させることです。オープンソース ソフトウェアに基づくビジネスは、世界中の苦境に立たされている企業の中でも比較的良い典型例であると考えられています。 ■PHP4の限界 PHP4の成功により、このアプリケーションの適用範囲は徐々に広がっています。エンタープライズレベルの目的で PHP を使用するという話があります。そのため、大規模なWebサイトを構築する場合、コードの再利用性が非常に悪いという問題があります。具体的には、PHP4 のオブジェクト指向のパフォーマンスが非常に低いため、Java などのテクノロジーの使用に慣れている技術者から多くの不満が寄せられています。 PHP4 のオブジェクト指向のパフォーマンスを段階的に向上させ、基本的な文法を大幅に変更することで、開発者は PHP の記述方法を更新するという開発目標を達成しました。 ■Zend 2.0 の開発が開始 その後、Zend PHP センターの開発者は、2001 年 7 月に次世代の PHP 言語エンジンとして Zend 2.0 エンジンのアイデアを発表しました。 [Zend Engine バージョン 2.0: 機能の概要と設計] (http://www.zend.com/engine2/ZendEngine-2.0.pdf) をターゲットにしながら、オブジェクト指向のパフォーマンスが大幅に強化されました。 現在の PHP4 Zend エンジンの拡張は、かつての PHP3 とまったく同じです。これは、新しい言語エンジンのメジャー バージョン番号を増やし、手法の目標を明確にし、開発チームから賞賛を受けることを意味します。 Ze2 の開発は、以前の Zend エンジンと同様、オープン ソース モードで実行されます。 CVS では最新のソースコードが完全に公開されており、オープンな開発者向けなので開発に関する議論が非常に活発です。 この度、Ze2 は PHP の次期バージョンである PHP5 で採用されることが決定しました。最終的なリリース時期はまだ決定されていませんが、2003 年 4 月 1 日に Zend Company がリリースしたニュースレターによれば、現時点でベータ リリースになるはずです。 (2) PHP5 の新機能 次に、PHP5 の性能強化を順に見ていきます。 1 つ目は、最も重要なオブジェクト指向のパフォーマンスです。クラスのエンティティ特性が大幅に変更されています。ここで話しているのは、クラスの新しい機能についてのみです。・オブジェクトの参照遷移はデフォルト(デフォルト) ・プロパティへのアクセス制限の導入 ・メソッドへのアクセス制限の導入 ・抽象クラスと抽象メソッド ・インターフェース ・最終宣言 ・名前空間 ・クラス内定数 ・クラス変数 ・統合ビルダー ・分析コンストラクタ(ディストラクタ) ・その他の付帯機能 上記の内容は、2003年4月22日にCVSに登録されたバージョン情報に基づいています。正式リリースまでに変更される可能性もあります。 ■オブジェクトのデフォルト参照遷移 PHP4では、変数$var1がクラスのエンティティオブジェクトの場合、$var2 = $var1の場合、$var2には$var1のコピーが代入されます。明らかに、$var2 が $var1 と同じオブジェクトを指すようにするには、$var2 =& $var1 として記述し、参照として & を追加する必要があります。 PHP5ではオブジェクト置換が自動参照遷移になります。つまり、$var2=$var1 は両方とも同じオブジェクトを指します。 php4のようなコピーを取り込みたい場合は__clone()をインポートする方法を使います。 $var2 = $var1->__clone(); ここで、clone の前には 2 つの連続した "_" が付いています (これはクラスの実体の特性にすぎません) ■PHP4 クラスでは、属性および属性とともに、属性へのアクセス制限が導入されています。メソッド内部では、クラスの内外のどこにでも制限なく自由にアクセスできます。したがって、ユーザーは属性に対する不注意な変更に対する保護がありません。 PHP5 では、C++ や Java と同様に、プライベート、プロテクト、パブリックの 3 つのレベルのアクセス制限が導入され、クラス設計者がプロパティとメソッドの使用を制限できるようになります。さまざまなアクセス制限の意味は次のとおりです。・パブリック:クラス内外どこでも自由に参照・変更可能 ・プライベート:このクラスのメソッドのみ参照・変更可能 ・プロテクト:このクラスのメソッドのみ参照・変更可能。このクラスを継承する別のクラスを参照して変更します。また、継承したクラスにアクセス指定を記述することができます。 PHP4 の「var」は、これまでと同様に public と同じ意味を持ちます。アクセス制限がどのように機能するかを示す例を次に示します。PHP コード:---------------------------------------------- ---------------------------------- class Hoge1 { private $var1 = A protected $var2 = B; 保護された $ var3 = C; 関数 setLower() { $this->var2 = b; } 関数 var1() { return $this->var1 ; } 関数 var2( ) { 戻り $this->var2; } 関数 var3() { 戻り $this->var3; -------- -------------------------------------- -------- ---- このクラスには、$var1、$var2、$var3 の 3 つの属性があります。ここで $var1 はプライベートとして宣言され、$var2 と $var3 は保護されています。 -------------------------------------------------- - $hoge=new Hoge1; echo'var1:'.$hoge->var1.” ---------------------------- -------------------------------------------------- -- 外部からアクセスが許可されていないプライベートプロパティを参照しようとすると、以下のエラーが表示されます。 Fatal error: Cannot access private property hoge1::$var1 in /path/to/script.php on XX 行 protected $ の場合 var2 についても同様です。 ただし、$hoge メソッドはプライベートまたは保護されていないため、次のコードは正常に動作し、内部のプライベート変数と保護された変数の値を返すことができます。 PHP コード:---------------------------------------------- - ---------------------------------- echo var1: . $hoge->var1() . "; // var1: エコー var2: . $hoge->var2() . " "; // var2: B echo var3: . $hoge->var3() . " "; // var3: C $hoge->setLower(); echo var1: . $hoge->var1() . " "; // var1: エコー var2: . $hoge->var2() . " "; // var2: b echo var3: . $hoge->var3() . " "; // var3: c ---------------------------------------- ---------------------------------------------------- 2つ目, protected属性の状態を確認するために、Hoge1のPHPコードを継承したクラスHoge2を作成してみます。 ------------------- ------------------------------- -------------- class Hoge2 extends Hoge1 { public $ var3 = 3; function d_var1() { return $this->var1 } function d_var2() { return $this->var2; ; } 関数 d_var3() { $this->var3 を返す } } ------ ---------------------------- - - - - - - - - - - - - - - - - - - - - - - - - クラスでHoge2 では、$var3 のみが public として宣言されており、属性が protected の場合、サブクラスの属性宣言によって制限が決まります。 Hoge1 では $var1 がプライベートなので、Hoge2 のサブクラスには $var1 という名前のプロパティが作成される可能性があります。 Hoge1::$ var1 と Hoge2::$var1 は明確に区別する必要があります。 ---------------------------------------------------- ------- $hoge = 新しい Hoge2; $hoge->var1 . "; // var1: // echo var2: . $hoge->var2 . " "; // エラー echo var3: . $hoge->var3 . " "; // var3: 3 echo var1: . $hoge->d_var1() . " "; // var1: echo var2: . $hoge->d_var2() . " "; // var2: B echo var3: . $hoge->d_var3() . " "; // var3: 3 ---------------------------------------- ---- ------------------------------------- $hoge->var1 は何も関係ありませんHoge1::var1 変数があるので表示されません var2 にはプロテクトされたアクセス制限があるため、メソッドを渡さずに $var2 を直接参照すると致命的エラーが発生します ■アクセスメソッド導入時の制限は上記と同様また、 private 、 protected 、 public にも分類されます。 · Public: どこからでも呼び出すことができます。 · Private: このクラスのメソッドからのみ呼び出すことができます。 · Protected: このクラスとサブクラスのメソッドからのみ呼び出すことができます。ここでの意味は Java と C++ と同じです。混同しないでください。 ■ 抽象クラスと抽象メソッドは、Java と同じ抽象クラスと抽象メソッドをサポートします。 抽象メソッドはメソッド名の呼び出しのみを提供します。クラスは、クラス自体を抽象的に宣言する必要があります。抽象クラスのオブジェクトを直接作成したい場合は、次の致命的なエラーが発生します。 エラーの実際の例は次のとおりです。 : PHP コード:- ------------------------------------------- ----- ----------------------------- 抽象クラス MyAbstract { 抽象パブリック関数 test() パブリック関数 test2; () { エコー "MyAbstract: :test2() が呼び出されました。 "; } } class MyImplement extends MyAbstract { public function test() { echo "MyImplement::test() が呼び出されます。 "; } } $obj = new MyImplement; $obj->test(); ?> ---------------------------- ---------------------------------------------------- ---- ■インターフェース(インターフェース)はJavaと同じインターフェースをサポートしており、記述された外部呼び出し形式に合わせてインターフェースが設計されています。対照的に、インターフェイスを実装するクラスは、インターフェイスのメソッドに対応するエンティティを保持する必要があります。さらに、クラスは複数のインターフェイスを実装できるため、多重継承が可能です。 PHP コード:---------------------------------------------- - ---------------

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/532145.html技術記事 Php5.0 の説明-----オブジェクト指向のために生まれた PHP5 オブジェクト指向のために生まれた PHP5 ------------------------ -- ----------------- 【要約】現在開発中のPHP5のオブジェクト指向機能は...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

php5とphp8の違いは何ですか php5とphp8の違いは何ですか Sep 25, 2023 pm 01:34 PM

php5 と php8 の違いは、パフォーマンス、言語構造、型システム、エラー処理、非同期プログラミング、標準ライブラリ関数、セキュリティの点です。詳細な紹介: 1. パフォーマンスの向上. PHP5 と比較して、PHP8 はパフォーマンスが大幅に向上しています. PHP8 では、高頻度の実行コードをコンパイルおよび最適化できる JIT コンパイラーが導入されており、それによって実行速度が向上しています; 2. 言語構造の改善、 PHP8 では、いくつかの新しい言語構造と関数が導入されており、PHP8 では名前付きパラメータがサポートされており、開発者はパラメータの順序などの代わりにパラメータ名を渡すことができます。

PHP の json_encode() 関数を使用して配列またはオブジェクトを JSON 文字列に変換する PHP の json_encode() 関数を使用して配列またはオブジェクトを JSON 文字列に変換する Nov 03, 2023 pm 03:30 PM

JSON (JavaScriptObjectNotation) は、Web アプリケーション間のデータ交換の一般的な形式となっている軽量のデータ交換形式です。 PHP の json_encode() 関数は、配列またはオブジェクトを JSON 文字列に変換できます。この記事では、PHPのjson_encode()関数の構文、パラメータ、戻り値、具体的な例などの使い方を紹介します。構文 json_encode() 関数の構文は次のとおりです。

ソースコードの探索: Python ではオブジェクトはどのように呼び出されますか? ソースコードの探索: Python ではオブジェクトはどのように呼び出されますか? May 11, 2023 am 11:46 AM

Wedge オブジェクトは主に 2 つの方法で作成されることがわかっています。1 つは Python/CAPI を使用する方法、もう 1 つは型オブジェクトを呼び出すことによる方法です。組み込み型のインスタンス オブジェクトについては、両方のメソッドがサポートされています。たとえば、リストは [] または list() を通じて作成できます。前者は Python/CAPI で、後者は呼び出し型オブジェクトです。ただし、カスタム クラスのオブジェクトの場合は、型オブジェクトを呼び出すことによってのみ作成できます。オブジェクトを呼び出すことができる場合、そのオブジェクトは呼び出し可能ですが、それ以外の場合は呼び出し可能ではありません。オブジェクトが呼び出し可能かどうかは、対応する型オブジェクトにメソッドが定義されているかどうかによって決まります。のように

PHP の Request オブジェクトとは何ですか? PHP の Request オブジェクトとは何ですか? Feb 27, 2024 pm 09:06 PM

PHP の Request オブジェクトは、クライアントからサーバーに送信される HTTP リクエストを処理するために使用されるオブジェクトです。 Request オブジェクトを通じて、リクエストを処理して応答するために、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト パラメータなどのクライアントのリクエスト情報を取得できます。 PHP では、$_REQUEST、$_GET、$_POST などのグローバル変数を使用して、要求された情報を取得できますが、これらの変数はオブジェクトではなく配列です。リクエスト情報をより柔軟かつ便利に処理するために、次のことができます。

MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? Apr 29, 2024 pm 01:09 PM

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

Python の __contains__() 関数を使用してオブジェクトの包含操作を定義する Python の __contains__() 関数を使用してオブジェクトの包含操作を定義する Aug 22, 2023 pm 04:23 PM

Python の __contains__() 関数を使用して、オブジェクトの包含操作を定義します。Python は、さまざまな種類のデータを処理するための多くの強力な機能を提供する、簡潔で強力なプログラミング言語です。その 1 つは、__contains__() 関数を定義してオブジェクトの包含操作を実装することです。この記事では、__contains__() 関数を使用してオブジェクトの包含操作を定義する方法とサンプル コードを紹介します。 __contains__() 関数は Pytho です

Python の __le__() 関数を使用して、2 つのオブジェクトの小なり等しい比較を定義します。 Python の __le__() 関数を使用して、2 つのオブジェクトの小なり等しい比較を定義します。 Aug 21, 2023 pm 09:29 PM

タイトル: Python の __le__() 関数を使用して 2 つのオブジェクト以下の比較を定義する Python では、特別なメソッドを使用してオブジェクト間の比較演算を定義できます。その 1 つは __le__() 関数で、以下の比較を定義するために使用されます。 __le__() 関数は Python のマジック メソッドであり、「以下」演算を実装するために使用される特別な関数です。小なり等しい演算子 (<=) を使用して 2 つのオブジェクトを比較すると、Python

PHP における配列とオブジェクトの違いは何ですか? PHP における配列とオブジェクトの違いは何ですか? Apr 29, 2024 pm 02:39 PM

PHP では、配列は順序付けられたシーケンスであり、要素はインデックスによってアクセスされます。オブジェクトは、new キーワードによって作成されたプロパティとメソッドを持つエンティティです。配列へのアクセスはインデックス経由で、オブジェクトへのアクセスはプロパティ/メソッド経由で行われます。配列値が渡され、オブジェクト参照が渡されます。

See all articles