PHPのオブジェクト向けプログラミング方式を簡単に理解する

3001 ワード

ほとんどのオブジェクト向けプログラミング言語とは異なり、PHPはプロセス向けとオブジェクト向けのプログラミング方式を同時にサポートしており、PHP開発者はプロセス向けとオブジェクト向けのどちらかを自由に選択したり混合したりすることができるが、PHP 5以前のバージョンではPHPは主にプロセス向けのプログラミング言語であるため、そのためPHP開発者はプロセス向けに開発を行うことが多いが、実際には、1人のPHP開発者がオブジェクト向けを全く使用しなくても、優れたPHPプログラムを開発できると考えられており、Webページの解析自体がプロセス化されており、HTMLにプロセス向けのコードを埋め込むのは非常に自然な手段であることが想像できる.したがって,オブジェクト指向はプロセス指向よりも優れたプログラミング方式とは言えず,ただ別のプログラミング選択であり,もちろんここではPHPの場合を述べる.
PHPにおけるプロセス向けとオブジェクト向けのそれぞれの長所と短所については、ネット上で少し調べると明らかになると信じています.プロセス向け開発サイクルは短く、発表が速く、効率が高く、オブジェクト向け開発サイクルは長く、効率は低いがメンテナンスが容易で、改善、拡張、APIの開発が容易です.明らかに、どの方式がもっと優秀なのかは言いにくいが、どのプログラミング方式がもっと優秀なのかを議論するよりも、できるだけ2つのプログラミング方式のそれぞれの優位性を発揮したほうがいい.
PHPのオブジェクト向けプログラミングに戻ると、オブジェクト向けを使用する過程でその優位性を感じやすくなります.最も明らかなのは、コード機能がより明確になり、データ処理、ユーザー登録、コンテンツ提示などが1つずつクラスに書かれ、ページにこれらのクラス、インスタンス化されたオブジェクトを含め、簡潔な文でオブジェクトを適用すればいいということです.これは,プロセス向けにデータ処理,ユーザ登録,コンテンツなどを一緒に書くよりも,前者のプログラミング構想がより明確で理解しやすく,チーム開発ではオブジェクト向けプログラミングに偏っていると信じている.
次に簡単な例を挙げて,プロセス向けとオブジェクト向けの2つの方式のそれぞれの長所と短所を説明する.
フォームを処理したりurlパラメータを受け入れる場合、SQL注入などの問題を防止するために、PHP開発者は文字列をフィルタする必要があることが多い.
プロシージャ向けの方法では、文字列をフィルタする必要がある文で様々なフィルタ文字列のライブラリ関数やカスタム関数を呼び出します.そうすると、ページにはさまざまなフィルタ関数や複雑な正規表現がたくさん表示されます.ページに十分な注釈が書かれていても混乱します.次に、オブジェクト向けの処理方法を見てみましょう.
まず,単純な文字列処理クラスを定義し,様々な複雑な文字列処理を方法として記述する(PHPのオブジェクト指向に関する知識はGoogleでよいが,本稿では別に述べない.

length = $the_length;
  }
  //    SQL                
  function realEscapeString($the_string){
    return mysql_real_escape_string($the_string);
  }
   
  //              
  function eregNumber($the_string){
    if( ereg("^[0-9]+$",$the_string) )
      return true;
    else
      return false;
  }
   
  //          
  function strlenString($the_string){
    return strlen($the_string);
  }
   
  //        
  function ifOverStrlenLength($the_string){
    if( strlen($the_string) > $this->length )
      return true;
    else
      return false;
  }
 
}
 
?>


次に、文字列をフィルタするページでクラスをインスタンス化します.

$string = new StringFiltration(); 

次に、文字列をフィルタまたは判断するときにクラスで定義されたメソッドを呼び出すと、ページに呼び出しメソッドの文が表示されます.

$email = $string->realEscapeString($_POST['email']);
$postId = $string->eregNumber($id);

上記の例では、オブジェクト向けに文字列を処理する前に、クラスを定義し、必要なページでクラスをインスタンス化してこのクラスのメソッドを呼び出す必要があります.ここでは、オブジェクト向けの効率はプロセス向けよりも低く、面倒ですが、このような利点も明らかです.実際に文字列を処理したり判断したりする文はクラスの内部に書かれており、呼び出し方法のページには様々な複雑なカスタム関数や正規表現のような複雑な文は現れず、ページの構造やサイト全体の構造がより明確になり、1つのクラスを書いた後、後でPHP開発を行う際にこのクラスを再利用することができます.長い目で見れば効率がかえって高い.そのため、PHP向けのプログラミングをずっと行っている開発者は、考え方を変えて、オブジェクト向けに試してみてはいかがでしょうか.