PHP でのオブジェクト指向プログラミング_PHP チュートリアル
オブジェクト指向プログラミングの概念:
異なる作成者は異なる意見を持っているかもしれませんが、OOP 言語には次の側面が必要です:
抽象データ型と情報のカプセル化
継承
ポリモーフィズム
PHP では、クラスに渡されます。カプセル化を完了するには:
class Something {
// OOP クラスでは、通常、最初の文字は大文字です
var $x;
function setX($v) {
// getValueOfArea()
$this->x=$v;
}
function getX() {
return $this- のように、メソッドは小文字の単語で始まり、次に大文字を使用して単語を区切ります。 > x;
}
}
もちろん、自分の好みに応じて定義することもできますが、標準を維持することがより効果的です。データ メンバーは、「var」宣言を使用してクラス内で定義されます。データ メンバーに値が割り当てられるまでは、データ メンバーには型がありません。データ メンバーには、整数、配列、連想配列、またはオブジェクトを指定できます。メソッドはクラス内の関数として定義されます。メソッド内のクラス メンバー変数にアクセスする場合は、$this->name を使用する必要があります。それ以外の場合、メソッドにはローカル変数のみを使用できます。
new 演算子を使用してオブジェクトを作成します:
$obj=new Something;
その後、次のようにメンバー関数を使用できます:
$see=$obj-> ;getX();
この例では、setX メンバー関数はオブジェクトのメンバー変数 x (クラスではない) に 5 を代入し、getX はその値 5 を返します。 $obj->x=6 のようなクラス参照を通じてデータ メンバーにアクセスできます。これは OOP の良い習慣ではありません。メソッドを通じてメンバー変数にアクセスすることを強くお勧めします。メンバー変数を操作不可能なものとして扱い、オブジェクト ハンドルを通じてのみメソッドを使用すれば、優れた OOP プログラマーになれるでしょう。残念ながら、PHP はプライベート メンバー変数の宣言をサポートしていないため、PHP では不正なコードが許可されています。 PHP では継承を簡単に実装できます。extend キーワードを使用するだけです。 ? & Lt;? PHP
クラス Another は何かを拡張します {
var $ y;
$ this- & gt;
return $this->y;
}
}
「Another」クラスのオブジェクトには、親クラス (Something) のすべてのデータ メンバーとメソッドが含まれており、独自のデータ メンバーとメソッドも追加されています。
$obj2=new Something;
$obj2->setY(7); を使用できます。 2 つ以上のクラスから新しいクラスを派生することはできません。派生クラスでメソッドを再定義できます。「Another」クラスで getX メソッドを再定義すると、「Something」で getX メソッドを使用できなくなります。派生クラスで基本クラスと同じ名前のデータ メンバーを宣言すると、それを処理するときに基本クラスのデータ メンバーが「隠蔽」されます。
クラス内でコンストラクターを定義できます。コンストラクターはクラス名と同じ名前のメソッドで、クラスのオブジェクトを作成するときに呼び出されます。たとえば、次のようになります。 ($y) {
$this->x=$y;
}
関数 setX($v) {
$this->x=$v;
関数 getX() {
return $this->x;
}
}
次のようにしてオブジェクトを作成できます。
コンストラクターは自動的に 6 をデータ変数に割り当てます。バツ。コンストラクターとメソッドは通常の PHP 関数であるため、デフォルトのパラメーターを使用できます。
function Something($x="3",$y="5")
次に:
$obj=new Something(); // x=3 および y=5
$obj=new Something( 8); // x=8 および y=5
$obj=new Something(8,9); // x=8 および y=9
デフォルトのパラメータは C++ を使用するため、Y の値を無視することはできませんを指定し、X にデフォルトのパラメータを指定します。パラメータは左から右に割り当てられます。渡されたパラメータが必要なパラメータよりも小さい場合は、デフォルトのパラメータが使用されます。
派生クラスのオブジェクトが作成されるとき、そのコンストラクターのみが呼び出され、親クラスのコンストラクターは呼び出されません。基底クラスのコンストラクターを呼び出したい場合は、それをクラスのコンストラクター内に表示する必要があります。派生クラス。これが可能なのは、親クラスのすべてのメソッドが派生クラスで使用できるためです。
function Another() {
$this->y=5;
$this->Something();
//基本クラスのコンストラクターを表示します
A OOP の優れたメカニズムは、抽象クラスの使用です。抽象クラスはインスタンス化できず、派生クラスへのインターフェイスのみを提供できます。設計者は多くの場合、抽象クラスを使用してプログラマに基本クラスからの派生を強制し、新しいクラスに必要な機能が確実に含まれるようにします。 PHP には標準メソッドはありませんが、この機能が必要な場合は、基本クラスを定義し、そのコンストラクターの後に「die」呼び出しを追加して、基本クラスがインスタンス化できないようにすることができます。「die」ステートメントを追加します。各メソッド (インターフェイス) の後で、プログラマが派生クラスのメソッドをオーバーライドしないと、エラーが発生します。また、PHP は型指定されていないため、オブジェクトが基底クラスからの派生クラスであることを確認し、クラスの ID を定義する (ある種の識別 ID を返す) メソッドを基底クラスに追加する必要がある場合があります。オブジェクトパラメータを受け取るときにこの値を確認してください。もちろん、邪悪なプログラマーが派生クラスでこのメソッドをオーバーライドした場合、このメソッドは機能しませんが、一般に問題は邪悪なプログラマーではなく怠惰なプログラマーに見られます。
もちろん、基本クラスをプログラマに見えないようにして、インターフェイスを出力するだけで仕事を実行できれば素晴らしいでしょう。 PHP にはデストラクターがありません。
オーバーロード (オーバーライドとは異なり) は PHP ではサポートされていません。 OOP では、メソッドをオーバーロードして、名前は同じでパラメータの数やタイプが異なる 2 つ以上のメソッド (言語に応じて異なります) を実装できます。 PHP は型付けが緩い言語であるため、型によるオーバーロードは機能しませんが、異なる数のパラメーターによるオーバーロードも機能しません。
異なるメソッド (異なる数のパラメーターを渡す) でオブジェクトを作成できるように、OOP でコンストラクターをオーバーロードすると良い場合があります。 PHP で実装するコツは次のとおりです。
class Myclass {
function Myclass() {
$name="Myclass".func_num_args();
$this->$name( );
//$this->name() は一般的に間違っていることに注意してください。ただし、ここで $name は呼び出されるメソッドの名前です
}
function Myclass1($x) {
code;
}
function Myclass2($x,$y) {
code;
}
}
このクラスの使用は、クラス内の追加処理を通じてユーザーに透過的です:
$obj1=new Myclass(' 1'); //Myclass1 が呼び出されます
$obj2=new Myclass('1','2'); //Myclass2 が呼び出されます
これは非常に便利な場合があります。
ポリモーフィズム
ポリモーフィズムは、実行時に渡されたオブジェクトパラメータに基づいてどのオブジェクトメソッドを呼び出すかを決定できます。たとえば、Figure クラスがある場合は、draw メソッドを定義します。そして、circle クラスと Rectangle クラスを派生し、派生クラスでdraw メソッドをオーバーライドし、パラメーター x を予期し、$x->draw() を呼び出すことができる関数を持つこともできます。ポリモーフィズムがある場合、どの描画メソッドが呼び出されるかは、関数に渡すオブジェクトのタイプによって異なります。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します
