PHPクラスの継承を使用してコードの重複を解決する方法
この記事では、コードの重複の問題を解決するための PHP のクラスの使用方法を主に紹介します。その例では、継承の原理と使用テクニックを分析しています。必要な方は参考にしてください。この記事の例では、PHP でのクラス継承の使用法について説明し、コードの重複の問題を解決します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
継承とは、単にクラスに 1 つ以上のサブクラスを作成することを意味します。サブクラスを作成するには、クラス宣言でextends
キーワードを使用する必要があります。中央、親クラスの名前が最後に来ます。次の例では、BookProduct と Cdproduct という 2 つの新しいクラスを作成します。どちらも ShopProduct クラスを継承します。
<?php header('Content-type:text/html;charset=utf-8'); // 从这篇开始,类名首字母一律大写,规范写法 class ShopProduct{ // 声明类 public $numPages; // 声明属性 public $playLenth; public $title; public $producerMainName; public $producerFirstName; public $price; function construct($title,$firstName,$mainName,$price,$numPages=0,$playLenth=0){ $this -> title = $title; // 给属性 title 赋传进来的值 $this -> producerFirstName= $firstName; $this -> producerMainName = $mainName; $this -> price= $price; $this -> numPages= $numPages; $this -> playLenth= $playLenth; } function getProducer(){ // 声明方法 return "{$this -> producerFirstName }"."{$this -> producerMainName}"; } function getSummaryLine(){ $base = "{$this->title}( {$this->producerMainName},"; $base .= "{$this->producerFirstName} )"; return $base; } } class CdProduct extends ShopProduct { function getPlayLength(){ return $this -> playLength; } function getSummaryLine(){ $base = "{$this->title}( {$this->producerMainName},"; $base .= "{$this->producerFirstName} )"; $base .= ":playing time - {$this->playLength} )"; return $base; } } class BookProduct extends ShopProduct { function getNumberOfPages(){ return $this -> numPages; } function getSummaryLine(){ $base = "{$this->title}( {$this->producerMainName},"; $base .= "{$this->producerFirstName} )"; $base .= ":page cont - {$this->numPages} )"; return $base; } } ?>
サブクラスはコンストラクター
を定義していないため、BookProductクラスとCdproductクラスがインスタンス化されると、親クラスShopProductのコンストラクターが自動的に呼び出されます。
サブクラスは、デフォルトで親クラスのすべてのパブリックおよびプロテクトされたメソッドとプロパティを継承します (ただし、プライベート メソッドとプロパティは継承しません。これら 3 つのキーワードの機能については後で説明します)。つまり、getProducer() が ShopProduct クラスで定義されている場合でも、Cdproduct クラスからインスタンス化されたオブジェクトで getProducer() メソッドを呼び出すことができます。
$product2 = new CdProduct("PHP面向对象","郭","碗瓢盆",7,null,"7小时"); print "美好生活:{$product2 -> getProducer()}<br>"; // 结果是:美好生活:郭碗瓢盆
両方のサブクラスは親クラスの共通部分を継承しますが、BookProduct クラスと Cdproduct クラスの両方が getsummaryLine() メソッドをオーバーライドして、独自の一意の実装を提供し、サブクラスがクラスは、親クラスの機能を拡張および変更できます。
しかし、親クラスでのこのメソッドの実装は少し冗長に思えます。その理由は、その両方のサブクラスがこのメソッドをオーバーライドしますが、他のサブクラスがその基本機能を使用する可能性があるためです。このメソッドの存在により、クライアント コードの保証が提供されます。すべての ShopProduct オブジェクトには getsummaryLine() メソッドがあり、BookProduct と CDproduct の両方は、それぞれの getsummaryLine() メソッドを使用して $title プロパティにアクセスします。
おそらく最初は、継承は理解するのが簡単ではない概念です。まず、他のクラスを継承するクラスを定義することで、クラスがそのクラスの自由な機能と親クラスの機能を確実に持つことがわかります。次に、サブクラスの「検索」関数があります。$product2 -> getProducer() を呼び出すと、CdProduct クラスで getProducer() メソッドが見つかりません。次に、ShopProduct クラスでこのメソッドを探して呼び出します。そうでない場合は、エラーが報告されます。プロパティへのアクセスについても同様です。
ShopProduct のコンストラクターを見ると、基本クラス (親クラス) のサブクラスによって処理されるデータをまだ管理していることがわかります。BookProduct は $numPages パラメーターと属性を処理する必要があり、Cdproduct は $playLength を処理する必要があります。パラメータと属性。これを実現するには、サブクラス内で個別にコンストラクターを定義する必要があります。
以上がPHPクラスの継承を使用してコードの重複を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

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