PHPの高度な学習オブジェクト指向_PHPチュートリアル
学習内容: 抽象クラス、インターフェース、final、クラス定数
1. 抽象的な
実際の開発プロセスでは、一部のクラスはインスタンス化する必要がありません。たとえば、以前に学習した一部の親クラスは主にサブクラスに継承されるため、コードの再利用性が向上します
。
文法構造:
抽象クラス クラス名 {
属性 $name;
Method(){} //メソッドは抽象修飾子関数にすることもできます。メソッド名(){}
}
例:
抽象クラスの動物{
パブリック $name;
public $age;
// 抽象メソッドは、主にサブクラスを実装するためのメソッド本体を持つことができません;
抽象パブリック関数 cry();
//抽象クラスには抽象メソッドとインスタンス クラスのメソッドを含めることができます
パブリック関数 getname(){
echo $this->name;
}
}
クラス猫{
パブリック関数 cry(){
「ok」をエコーします;
}
}
理解: 動物クラスは実際には抽象的な概念であり、一部の動物に共通する属性や行動を規定していますが、実際にはそれ自体にはそれらの属性や行動はありません。別の例: 輸送、植物など
注:
1. クラスが abstract で変更された場合、そのクラスは抽象クラスになります。メソッドが abstract で変更された場合、そのメソッドはメソッド body => abstract function cry(); を持つことはできません。 {} も許可されていません
2. 抽象クラスはインスタンス化してはなりません。抽象クラスには抽象メソッドは必要ありませんが、クラスに抽象メソッドが含まれる場合は、クラスを抽象クラスとして宣言する必要があります。
3. クラスが別の抽象クラスを継承する場合、サブクラスはその抽象クラス内のすべての抽象メソッドを実装する必要があります (それ自体も抽象クラスとして宣言されている場合を除く)。
2. インターフェース
インターフェイスは、特定のクラスが使用する必要があるときに、いくつかの未実装のメソッドをカプセル化するものであり、特定の状況に応じてこれらのメソッドを書き出すことができます。
文法構造
インターフェイス インターフェイス名 {
//プロパティ、メソッド
//インターフェース内のメソッドにはメソッド本体を含めることはできません;
}
インターフェースの実装方法
class クラス名はインターフェイス名を実装します {
}
理解: インターフェイスは、より抽象的な抽象クラスです。抽象クラス内のメソッドはメソッド本体を持つことができますが、インターフェイス内のメソッドはメソッド本体を持つことができません。インターフェイスはプログラミングの多態性と、高い結合性と低い結合性の設計アイデアを実現します。
例:
// インターフェースは仕様と属性を定義し、通常は小文字の i で始まります。
インターフェイス iUSB{
パブリック関数 start();
パブリック関数 stop();
}
// カメラクラスを記述してインターフェースを実装させます
//クラスがインターフェースを実装する場合、クラスはインターフェースのすべてのメソッドを実装する必要があります
クラス Camera は iUsb{
を実装します
public function start(){
echo 'カメラ開始作業';
}
パブリック関数 stop(){
echo 'カメラ停止作業';
}
}
//携帯電話クラスを作成します www.2cto.com
クラス Phone は iUsb を実装します{
public function start(){
echo '電話での仕事';
}
パブリック関数 stop(){
echo '電話は仕事を停止します';
}
}
$c=新しいカメラ();
$c->start();
$p=新しい電話();
$p->start();
インターフェースを使用する場合:
1. 仕様を設定し、他のプログラマーに実装してもらいます
2. 同じレベルの複数のクラスで特定の機能を実装する必要があるが、実装方法が異なる場合
概要:
1. インターフェイスはインスタンス化できず、インターフェイス内のすべてのメソッドは本体を持つことができません。
2. クラスはカンマ (,) で区切って複数のインターフェースを実装できます。クラスのデモは if1,if2,if3 を実装します{}
3. インターフェースには属性を含めることができますが、定数は修飾子を持つことができません (デフォルトは public 修飾子です)。
例: インターフェイス iUsb{
const A=90;
}
echo iUSB::A;
4. インターフェイス内のすべてのメソッドはパブリックである必要があり、デフォルトはパブリックです。
5. インターフェイスは他のクラスを継承できませんが、他のインターフェイスを複数継承することはできます
。
例: インターフェイス インターフェイス名は if1,if2 を拡張します{}
6. クラスは親クラスを継承しながら他のインターフェースも継承できます
例: class test extends testbaseimplements test1,test2{}
インターフェイスの実装とクラスの継承
PHP の継承は単一継承です。つまり、クラスは 1 つの親クラスのみを継承できます。これは、サブクラスの機能の拡張に一定の影響を与えます。インターフェイスの実装は、継承されたクラスの補足として見ることができます。継承は階層関係であまり柔軟性がありませんが、インターフェイスの実装は水平関係であり、継承関係を壊すことなく特定の機能を拡張できます。
3. ファイナル
1. 特定のクラスを他のクラスに継承させたくない場合 (セキュリティ上の理由など)、final
の使用を検討できます。
文法:
最終クラス A{}
2. メソッドがサブクラスによってオーバーライドされないようにするには、final を使用してメソッドを変更することを検討できます。これは、メソッドの継承権がパブリックな変更に依存するためです。
例: クラス A{
最終的な公開関数 getrate($salary){
$salary*0.08 を返します;
}
}
クラス B は A を拡張します{
//ここでの親クラスの getrate メソッドは Final を使用しているため、ここで getrate をオーバーライドすることはできません
//パブリック関数 getrate($salary){
// $給与*0.01を返します
;
//}
}
3. Final は属性の変更には使用できません
4. クラス定数(const)
場合によっては、そのような要件が存在する可能性があります。メンバー変数を変更したくないが、変数の値を固定したい場合は、const 定数を使用できます (const 名はすべて大文字で、$ を除く必要があります)シンボルと定数は変更できません)
文法:
const constant name=constant value; //定数は変更できないため、初期値を割り当てる必要があります
電話:
クラス名::定数名 [self::定数名はこのクラス内で使用できます] または インターフェイス名::定数名 //インターフェイスでは定数のみ使用できます。変数は使用できません
例:
クラスA{
const TAX_RATE=0.08;
関数 給与税($salary){
return $salary*self::TAX_RATE;
}
}
$a=新しいA();
echo $a->paytax(100);
注:
1. 定数はサブクラスに継承できます
2. 定数はオブジェクトではなく、特定のクラスに属します
Bell のテクノロジー ブログからの抜粋

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
