phpの対象思想をどう思うか

6331 ワード

オブジェクト向けのプログラム設計構想は現代のプログラム設計がプロセス向けからオブジェクト向けに変化する必然的な傾向であるため、オブジェクト向けの設計構想は必然的にその異なる時代意義があり、必然的に異なるプロセス向けの異なる歴史的使命を持っているが、php 5以降、オブジェクト向けの設計構想を追加することに成功することは必然的な過程である.オブジェクト向けの設計の主な考え方は、プログラムとデータをオブジェクトという基本単位にカプセル化して再利用性、柔軟性、拡張性を高めることです.彼はプロセスと関数式プログラミング向けの設計構想と同じようにプログラミング言語のモデルであり、プログラミングプログラムを規範化する設計方法である.それぞれ異なる規範的な職責を担っているだけだ.
オブジェクトは基本単位であり、オブジェクトのカプセル化にはクラスが必要であり、オブジェクトを個別に区別することができます.オブジェクトとクラスの共通の存在は、オブジェクトがクラスを持っていないのは家族が誰もいないように意味がなく、クラスがオブジェクトを持っていないのも子供が家を持っていないように生きられない.
phpのオブジェクト向けはjavaやc++のようにオブジェクト向けの特質を完璧に示すわけではありません.オブジェクト向けはphpのサポート可能な設計構想にすぎません.phpはプロセス向けを提唱する言語で、長い間オブジェクト向けの構想はphpプログラマーに受け入れられていません.多くの人がオブジェクト向けの構想を表式的に明らかに排斥しています.これはphpでオブジェクト向けに完璧に表現できない主な原因である.
次にphpのオブジェクト向けの具体的な実装について具体的に述べる.
     1.類の申明
同様にclassはクラスのキーワードで、クラスの中で変数を定義する必要があることを明らかにして、1つの構造関数を定義して、phpの構造関数の定義は他の言語と異なって、統一して1つの持参する不思議な関数を使います_construct()は、その関数を初期化するために使用されます.もちろんそれに対応する構造関数を定義することもできます.destruct()は、オブジェクトを破棄し、関数を解放するために使用されます.クラスの宣言に他のメソッドが必要な場合は、ここで定義する必要があります.
     2.クラスのインスタンス化
宣言されたクラスnewを新しいオブジェクトを作成し、メモリにこのクラスに空間を割り当て、このクラスに新しい名前を付けて、このオブジェクトが本当に使用されるようにします.
     3.オブジェクトの操作
関数の呼び出しのように、オブジェクトに必要なオブジェクトを使用すればいいのです.インスタンス化されたオブジェクトとオブジェクトのプロパティまたはメソッドに対してオブジェクト演算子(->)接続を使用することで、関数と同じように対応する呼び出しができます.
 
phpのオブジェクト実装と他のオブジェクト向け言語には大きな違いはありません.phpには構造関数などの不思議な方法が組み込まれています.construct()と構造関数_destruct();彼らは特別な意味や機能を持つ方法で、定義する必要はありません.それぞれの特定の機能を備えています.よく「」ではじめに.
よくある不思議な方法:
         1._Autoload()自動ロード方法は、クラスのファイルがどこにあるかを明らかにする必要はなく、ファイル名を知るだけで自動的にロードできます.この方法は複雑な構造のプロジェクトにおいて明らかな役割を果たしている.
            
1 function _autoload($classname){
2 include strtolower($classname).'.php';
3 }

         2._set()と_get()前者はオブジェクト属性値の設定に用いられ、後者はオブジェクト属性値の取得に用いられる.
 1 public function _set($name,$value){
 2 echo "setting $name to $value \r
"; 3 $this->$name=$value; 4 } 5 public function _get($name){ 6 if(!isset($this->$name)) 7 { 8 echo " ";
9 $this->$name=" ";10 } 11 return $this->$name; 12 }

                     3._call()と_callStatic()前者は呼び出し不可アクセスのメソッドエラーを防止するためである.アクセスできないメソッドが呼び出されると、このメソッドは自動的に呼び出されます.プロトタイプ:mixed_call(string$name,array$argumets)では、$nameは呼び出されるメソッド名であり、$argumetsは渡すすべてのパラメータを含む配列である.
public function _call($name,$arguments)
{
 switch(count($arguments)
 {
   case 2:
     echo "$arguments[0]*$arguments[1].PHP_EOL;
      break;
    case 3:
      echo array_sum($arguments).PHP_EOL;
      break;
     default:
           echo '    '.PHP_EOL;
        break;        
  }
}

          
オブジェクト内の継承、組合せ、およびマルチステートは、プログラムの重複を解決する重要な方法であり、共通コードの再利用性があります.phpクラスの再利用についてお話しします
       1.継承と組合せ
これは2つの混同しやすい概念で、彼らは大きな類似点を持っていて、両者はすべてコードの再利用性を高めるので、ただ両者の設計の構想は異なっていないで、類と類の間の関係は異なって、継承は父と子の関係で、組み合わせは1種の需要で、全体と局部の関係です.まるで父と家族の関係のようだ.2つのオブジェクト間で継承関係と組合せ関係を確立できる場合があります.このとき、私たちは組み合わせを使う傾向があります.継承には以下の問題があります.
            1.継承はパッケージング性を破壊し,オブジェクトのパッケージングは本来,オブジェクト間を独立させるために,それぞれパッケージングされる.子クラスは親のすべての属性とメソッドを継承しますが、子クラスが親のすべての属性とメソッドを継承しない場合があります.例えば、親は鳥類で、飛ぶ属性があるが、子類ツバメとダチョウは親類の飛行を受け継いでいるが、ダチョウは飛ぶ能力を持っていないが、ツバメと同じように、2つの子類を区別することができず、類のパッケージ性に合わない.しかし、組み合わせはこの問題をよく解決し、ダチョウには親の飛ぶ属性はない.
             2.継承は緊密に結合されており、継承はサブクラスと親クラスを結合しますが、組合せは一意のインタフェースと外部でのみ通信されます.
             3.継承拡張は複雑で、継承レイヤ数の増加とサブクラスの増加に伴います.多くの方法で書き換えられ、組合せを使用すると、タイプ制約に基づいて動的な組合せを実現し、コードを減らすことができます.
 
        2.マルチステート
その名の通り多態は多様な状態、多様な結果である.phpでは、1つの親に2つの異なるサブクラスがある場合によく見られます.親クラスの異なるオブジェクトから異なるサブクラスメソッドを呼び出すことができます.これが同じタイプで、異なる結果です.
 
phpはオブジェクト向けにインタフェースを持ち,2つの表現形式を反射しているが,本人はこの2つをよく知らないため,ここで断章して意味を取らない.後で検討します.
 
要するにphpはオブジェクト向けの言語ではありませんが、phpの応用が広がるにつれて、オブジェクト向けがphpの中でますます重要になっていると信じています.