この記事では、コードの重複の問題を解決するための 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>"; // 结果是:美好生活:郭碗瓢盆
おそらく最初は、継承は理解するのが簡単ではない概念です。まず、他のクラスを継承するクラスを定義することで、クラスがそのクラスの自由な機能と親クラスの機能を確実に持つことがわかります。次に、サブクラスの「検索」関数があります。$product2 -> getProducer() を呼び出すと、CdProduct クラスで getProducer() メソッドが見つかりません。次に、ShopProduct クラスでこのメソッドを探して呼び出します。そうでない場合は、エラーが報告されます。プロパティへのアクセスについても同様です。
ShopProduct のコンストラクターを見ると、基本クラス (親クラス) のサブクラスによって処理されるデータをまだ管理していることがわかります。BookProduct は $numPages パラメーターと属性を処理する必要があり、Cdproduct は $playLength を処理する必要があります。パラメータと属性。これを実現するには、サブクラス内で個別にコンストラクターを定義する必要があります。
以上がPHPクラスの継承を使用してコードの重複を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。