[学習] PHPのオブジェクト指向入門 1

PHPのオブジェクト指向入門 | オブジェクト指向PHP.NET

PHPオブジェクト指向基礎

主にVBとの違いをまとめる。

コンストラクタ

書式:
class クラス名
{
  public function __construct(引数)
  {
    :
  }
}

メンバー変数へのアクセス

$this->メンバー名
staticメンバーの場合は
$self::メンバー名

継承

継承も使える
class クラス名 extends 親クラス名

オーバーライド

特に指定なし。親クラスと同じメソッド名を付ければよい。

親クラスのメソッドを呼び出す

parent::メソッド名()

ちなみに ::(ダブルコロン)を「スコープ定義演算子」と呼ぶ。
(参考) PHPを愛する試み 〜self:: parent:: static:: および遅延静的束縛〜 - maeharinの日記

静的メンバ

staticを付加する。

シングルトン

PHPに限る話ではないが、Singletonパターンというものがある。
静的メンバはシングルトンに使える。
(参考) Singleton パターン - Wikipedia
→ Singleton パターンとは、そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのこと

定数とクラス定数

PHPでの定数定義は
define(定数名, 値)

クラス定数の定義は
const 定数名 = 値

クラス定数にアクセスするには、
クラス外からは
クラス名::定数名

クラス内からは
self::定数名

抽象クラス

abstract class 抽象クラス名
{
  abstract public function 抽象メソッド名();
}

インターフェイス

interface インターフェースクラス名

インターフェースを実装するには
class クラス名 implements インターフェースクラス名

多重継承・多重実装

多重継承はできない。
多重実装はできる。
多重実装するには、
class クラス名 implements インターフェースクラス名1, インターフェースクラス名2, …

タイプヒンティング

引数の前にクラス名を書くと、そのクラス以外は受け付けなくなる。
public function メソッド名(クラス名 引数)

引数のクラスはインターフェースクラスを指定することも可能。
そうすればポリモーフィズムが実現可能となる。

例外処理

例外の発生
throw new Exception(メッセージ)

例外のキャッチ
try {
  :
} catch (Exception $e) {
  例外処理
}

名前空間

PHP5.3から名前空間が使えるようになる。
書式1:
namespace 名前空間名;

class クラス名
{
  :
}

クラスを利用する場合は、
フルパスで指定する場合:
$オブジェクト = new \名前空間名\クラス名();

あらかじめ利用宣言する場合:
use 名前空間名;

$オブジェクト = new クラス名();

別名も指定可
use 名前空間名 as 別名

名前空間を指定しない場合はグローバル空間となる。
名前空間を指定しない場合、以下の2行は同じ意味。
throw new Exception('hogehoge');
throw new \Exception('hogehoge');

注意点
(例)
namespace My;

class Hoge
{
  try {
  } catch (Exception $e) {
  }
}
Exceptionクラスは My\Exceptionクラスを指すので注意。

spl_autoload_register

指定した関数を __autoload() の実装として登録する
未定義関数が呼び出されたタイミングでspl_autoload_registerで登録したメソッドが呼び出される。
呼び出し先にrequire_onceを実行すれば各ファイルでrequire_onceする必要が無い?

0 件のコメント:

その他の記事