オブジェクト指向と構造化プログラミング

PHPに限らずオブジェクト指向は、構造化プログラムが進化したプログラムのパラダイムです。

構造化プログラミングとオブジェクト指向のプログラミングの差については、下記のサンプルソースを見て下さい。

//構造化プログラミングのソース

//当月カレンダー格納変数
$current_month = array();
$next_month = array();

//カレンダー変数の初期化
calender_init( $current_month );
calender_init( $next_month );

//カレンダーの生成
calender_make( $current_month, time() );
calender_make( $next_month, time() + (30 * 24 * 60 * 60 ) );

//オブジェクト指向のソース

//カレンダークラスのインスタンス化(初期化)
$current_month = new Calender( time() );
$next_month = new Calender( time() + (30 * 24 * 60 * 60 ) );

//カレンダーの生成
$current_month->make();
$next_month->make();

構造化プログラミングは、関数とデータを独立させてプログラミングを行います。関数を実行時には必ず、データを参照渡しで関数に処理を行わせます。
オブジェクト指向はクラス定義によって、関数(メンバ関数)とデータ(メンバ変数)が一つにまとまっているので、関数呼び出し時の引数が少なく出来ます。

2つの大きな差は、データとロジック(関数)をセットで定義出来るかどうかと言うことになります。

オブジェクト指向が構造化プログラミングより優れている点は、クラスの継承機能にあります。クラスの継承機能を使用してプログラムを行うことで、既存ソースに影響を与えずに拡張することが可能となります。
また、ソースの汎用性が大幅に向上しています。
ただし、構造化プログラミングより、クラス定義、継承によるクラスのインスタンスは構造化プログラミングよりメモリを多く消費しやすいデメリットも有ります。