PHP対象プログラム設計(OOP)向け方法書き換え(override)操作例


本論文の例では、PHPが対象プログラムに向けて設計(OOP)する方法についてオーバーライド動作を説明している。皆さんに参考にしてあげます。具体的には以下の通りです。
PHPは弱いタイプの言語なので、方法のパラメータ自体は異なるタイプのデータを受信することができます。またPHPの方法では一定数のパラメータを受信することができますので、異なる数のパラメータを伝えることによって、同じ方法名を呼び出す方法は成立しません。
PHPでは同名の方法は定義できないということですが、親子の関係の2つの種類の中で、私達は子供の中で親と同じ名前の方法を定義できます。このようにして父の種類の中から継承してきた方法を上書きします。

<?php
class Person
{
//         
var $name; //    
var $sex; //    
var $age; //    
//               $name、  $sex   $age    
function __construct($name, $sex, $age) {
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//          ,        
function say() {
echo "my name is:" . $this->name . " sex:" . $this->sex . " my age is:" . $this->age;
}
}
//      “   “  ”extends”      ” ” :
class Student extends Person
{
var $school; //         
function __construct($name,$sex,$age,$school)
{
parent::__construct($name,$sex,$age);
$this->school = $school;
}
//      say()  
function say()
{
echo "my name is:" . $this->name ." my school is:" . $this->school;
}
//         
function study()
{
echo "my name is:" . $this->name . " my school is:" . $this->school;
}
}
?>

また、サブクラスで親クラスをカバーする方法についても注意してください。サブクラスでの方法のアクセス権限は、親タイプをカバーする方法のアクセス権限より低くてはいけません。
例えば、親方法のアクセス権限がprotectedである場合、サブクラスでカバーする権限がprotected及びpublicである場合、親タイプの方法がpublicである場合、サブクラスでカバーする方法はpublicでしかない。つまり、サブクラスでの方法はいつも親タイプのカバレッジされた方法のアクセス権限より高いか、またはそうである。
上記の例では、「Student」のサブクラスにおいて、親クラスの「say()」を継承する方法をカバーすることで、「方法」の拡張を実現しました。しかし、このようにして、上記の問題を解決しましたが、実際の開発では、一つの方法は一つのコードまたはいくつかのコード、たとえば「Person」種類の中の「say()」方法には100のコードがあります。この方法にカバーして、元の機能を保留したいなら、少し機能を加えてください。元のコード100本をもう一回書き直します。拡張コードをいくつか追加してもいいです。ある場合、父の種類の中の方法は元のコードが見えないです。この時はどうやって元のコードを書き直しますか?私達も解決の方法があります。つまり、子類という方法では、親類でカバーされている方法、つまりカバーされている方法の本来の機能を持ってきて、自分の機能を加えて、2つの方法で、子供類の方法で親を呼び出してカバーされる方法を実現できます。
  • は、親クラスの「 ::」を使用して親クラスでカバーされている方法を呼び出す方法である。
  • は、親クラスでカバーされている方法を呼び出すために、「parent::」のパーティションを使用する方法である。
  • 
    //      “   “  ”extends”      ” ” :
    class Student extends Person
    {
    var $school; //         
    function __construct($name,$sex,$age,$school)
    {
    parent::__construct($name,$sex,$age);
    $this->school = $school;
    }
    //      say()  
    function say()
    {
    //     "  ::"            ;
    // Person::say();
    //    "parent::"               ;
    parent::say();
    echo "my name is:" . $this->name ." my school is:" . $this->school;
    }
    //         
    function study()
    {
    echo "my name is:" . $this->name . " my school is:" . $this->school;
    }
    }
    
    
    今は2つの方法で両親に訪問できます。私たちはどのような方法を選ぶべきですか?ユーザーは自分の書いたコードが親の変数と関数にアクセスしていることを発見するかもしれません。サブクラスが非常に洗練されていたり、親類が非常に専門的な場合、特にそうです。コードの中の親の文字の名前を使わないでください。特別な名前を使うべきです。parent宣言で子供の名前を指します。このようにすると、複数の場所で親の名前を使うのを避けることができます。ツリーが実装中に修正される場合は、クラス内のextendsによって宣言された部分が簡単に修正される限り、。
    PHPについてもっと興味のある読者は、本駅のテーマを見てもいいです。「php対象プログラム設計入門教程」、「PHP配列(Aray)操作テクニック大全」、「PHP基本文法入門教程」、「PHP演算と演算子の使い方のまとめ」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門教程」および「phpよくあるデータベースの操作技巧のまとめ
    本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。