この記事では、PHPクラスを使用してオブジェクト指向プログラミングの基本を探ります。
クラスとオブジェクトの紹介から始めます。この記事の後半の継承と多型などのいくつかの高度な概念について説明します。 OOPと呼ばれるアプローチは、長期にわたって簡単に保守可能でスケーラブルな方法で複雑なアプリケーションを開発するのに役立つアプローチです。 OOPの世界(PHPでオブジェクトを作成するため)では、、
、またはclassPerson
」の概念があります。 「Car
オブジェクトAnimal
」はクラスのインスタンスであり、同じクラスの複数のインスタンスを作成できます。たとえば、単一の
、、など)になる可能性があります。たとえば、人のクラスの場合、、、およびがある場合があります。その後、各オブジェクトはそれらのプロパティに対して独自の値を持ちます。 オブジェクトプロパティの値を操作し、オブジェクトの操作を実行できるように、クラス内のメソッドを定義することもできます。例として、オブジェクト情報をデータベースに保存するAメソッドを定義できます。クラスは、実際のエンティティを表すテンプレートであり、エンティティのプロパティと方法を定義します。このセクションでは、典型的なPHPクラスの基本的な解剖学について説明します。Person
dan
新しい概念を理解する最良の方法は、例を挙げています。それでは、従業員エンティティを表す次のスニペットのzainab
クラスを見てみましょう。hector
最初の行のname
ステートメントはage
クラスを定義します。次に、PHPのプロパティ、コンストラクター、およびその他のクラスメソッドを宣言します。PHPのクラスプロパティphoneNumber
クラスプロパティを、オブジェクトに関する情報を保持するために使用される変数と考えることができます。上記の例では、3つのプロパティを定義していますsave
-
、
、およびこれらのプロパティはprivate
です。つまり、PHPのクラス内からのみアクセスできることを意味します。これは、プロパティにとって最も安全なアクセスレベルです。この記事の後半で、PHPのクラスプロパティとメソッドのさまざまなアクセスレベルについて説明します。
コンストラクターは、オブジェクトをインスタンス化するときに自動的に呼ばれる特別なクラスメソッドです。次の2つのセクションでオブジェクトをインスタンス化する方法を確認しますが、今のところ、オブジェクトが作成されているときにコンストラクターを使用してオブジェクトプロパティを初期化するために使用されることを知る必要があります。ほとんどの場合、それらはオブジェクトのプロパティにアクセスして操作し、関連操作を実行するために使用されます。
上記の例では、オブジェクトに関連付けられている姓を返す__construct
メソッドを定義しました。
メソッドを定義し、引数が必要な場合は、オブジェクトをインスタンス化するときにそれらの引数を渡す必要があります。私たちの場合、getLastName
クラスコンストラクターには3つの引数が必要であるため、
メソッドは自動的に呼び出されます。Employee
前のセクションでは、Employee
クラスのオブジェクトをインスタンス化する方法について説明しました。 $objEmployee
オブジェクト自体がクラスのプロパティと方法をまとめることに注意するのは興味深いことです。言い換えれば、プログラムの残りの部分からこれらの詳細を隠しています。 OOPの世界では、これはデータのカプセル化と呼ばれます。
カプセル化は、OPの重要な側面であり、オブジェクトの特定のプロパティまたはメソッドへのアクセスを制限できます。そして、それはディスカッションのための別のトピックに私たちをもたらします:アクセスレベル。
クラス内のプロパティまたはメソッドを定義すると、これらの3つのアクセスレベルのいずれかを宣言できます—public
、private
、protected
繰り返しますが、プライベートアクセスレベルを理解するために前の例を修正しましょう。したがって、
メソッドを使用したように、セッターメソッドを使用して私有地の値を設定する必要があります。たとえば、おそらく、そのプロパティが変更された場合は、ある程度のアクションを実行する必要があります(データベースの更新、テンプレートの更新、またはテンプレートの再レンダリング)。その場合、セッターメソッドを定義し、プロパティが変更されたときに特別なロジックを処理できます。<?php<br>class Employee<br>{<br> private $first_name;<br> private $last_name;<br> private $age;<br> <br> public function __construct($first_name, $last_name, $age)<br> {<br> $this->first_name = $first_name;<br> $this->last_name = $last_name;<br> $this->age = $age;<br> }<br><br> public function getFirstName()<br> {<br> return $this->first_name;<br> }<br><br> public function getLastName()<br> {<br> return $this->last_name;<br> }<br><br> public function getAge()<br> {<br> return $this->age;<br> }<br>}<br>?><br>
保護されたアクセスname
継承は、オブジェクト指向プログラミングパラダイムの重要な側面であり、拡張して他のクラスのプロパティと方法を継承できるようにします。継承されているクラスは親クラスと呼ばれ、他のクラスを継承するクラスは子クラスと呼ばれます。子クラスのオブジェクトをインスタンス化すると、親クラスのプロパティとメソッドも継承します。
継承の概念を理解するために次のスクリーンショットを見てみましょう。現実世界の例を越えて、それがどのように機能するかを理解するために。
ここで注意すべき重要なことは、Person
クラスがEmployee
キーワードを使用して
クラスは、公共または保護されていると宣言されている
クラスのすべてのプロパティとメソッドにアクセスできます。 (プライベートとして宣言されているメンバーにアクセスできません。)<?php<br>class Employee<br>{<br> private $first_name;<br> private $last_name;<br> private $age;<br> <br> public function __construct($first_name, $last_name, $age)<br> {<br> $this->first_name = $first_name;<br> $this->last_name = $last_name;<br> $this->age = $age;<br> }<br><br> public function getFirstName()<br> {<br> return $this->first_name;<br> }<br><br> public function getLastName()<br> {<br> return $this->last_name;<br> }<br><br> public function getAge()<br> {<br> return $this->age;<br> }<br>}<br>?><br>
上記の例では、Employee
オブジェクトはextends
クラスとPerson
クラスで定義されているEmployee
Person
メソッドにアクセスできます。最後に、
クラスの$employee
メソッドにアクセスできません。一方、getName
setName
オブジェクトを使用して、Person
クラスの
callToProtectedNameAndAge
多型getNameAndAge
Employee
$employee
多型は、データタイプに基づいてオブジェクトを処理する能力を指すオブジェクト指向プログラミングの世界におけるもう1つの重要な概念です。 方法。これはメソッドオーバーライドと呼ばれます。現実世界の例をすぐに進めて、オーバーライドの方法の概念を理解しましょう。
<?php<br>class Employee<br>{<br> private $first_name;<br> private $last_name;<br> private $age;<br> <br> public function __construct($first_name, $last_name, $age)<br> {<br> $this->first_name = $first_name;<br> $this->last_name = $last_name;<br> $this->age = $age;<br> }<br><br> public function getFirstName()<br> {<br> return $this->first_name;<br> }<br><br> public function getLastName()<br> {<br> return $this->last_name;<br> }<br><br> public function getAge()<br> {<br> return $this->age;<br> }<br>}<br>?><br>
ご覧のとおり、formatMessage
クラスでオーバーライドすることにより、BoldMessage
メソッドの動作を変更しました。重要なことは、親クラスのインスタンスであろうと子クラスのインスタンスであろうと、オブジェクトタイプに基づいてメッセージが異なる形式でフォーマットされることです。これはPHPでは直接サポートされていませんが、同様の機能を達成するためのいくつかの回避策があります。
結論
PHPクラスを使用したオブジェクト指向プログラミングの基本を知っています。オブジェクト指向のプログラミングは膨大なテーマであり、その複雑さの表面を引っ掻いただけです。このチュートリアルは、OOPの基本を始めて、さらに高度なOOPトピックを学ぶように動機付けられることを願っています。今日、PHPのコンテキストで、OOPのいくつかの基本的な概念について説明しました。また、いくつかの実際の例を紹介する機会もありました。以上がクラスとオブジェクトを備えたオブジェクト指向PHPの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。