クラス (class)

※ このページの解説は、PHP5を使用することを前提としています。PHP4以前では、クラスの実装が大きく異なっているため注意が必要です。

クラス定義

class MyClass
{
    // プロパティ
    public $property = 'property';

    // 定数
    const CONSTANT = 'constant';  // ※ 定数の名前には「$」は付かない

    // メソッド
    function Method()
    {
        // メソッド内からの、プロパティへのアクセス
        echo $this->property;

        // メソッド内からの、定数へのアクセス
        echo self::CONSTANT;
    }
}
※ C++と異なり、クラス定義を閉じる括弧の後にセミコロンは不要

クラスのインスタンス生成とメンバへのアクセス

// クラスインスタンスの作成
$myClass = new MyClass();

echo $myClass->property;  // プロパティ

echo $myClass->CONSTANT;  // 定数
echo MyClass::CONSTANT;   // 定数

$myClass->Method();       // メソッド

※ プロパティにアクセスする際は、名前の前の「$」は不要

コンストラクタとデストラクタ

class MyClass()
{
    // コンストラクタ
    function __construct()
    {
    }

    // デストラクタ
    function __destruct()
    {
    }
}
PHP: コンストラクタとデストラクタ - Manual

コンストラクタ

void __construct( [ mixed $args [ , $... ] ] )

new演算子によりインスタンスが生成されるときに呼び出されます。

デストラクタ

void __destruct( void )

インスタンスへのすべての参照が削除された直後か、unset()関数などにより明示的にインスタンスが削除された直後に呼び出されます。

アクセス権 (visibility)

プロパティおよびメソッドについてアクセス権を設定できます。

アクセス属性 可視性制御の内容
private 不可視 (外部に非公開)
protected 派生クラスを除き不可視
public 可視 (外部に公開)
PHP: アクセス権 - Manual

アクセス権を明示しなかった場合は、既定でpublicとなります。なお、インスタンスプロパティはアクセス権の指定を省略できません。

静的メンバ (static member)

クラス定義

Class MyClass
{
    // 静的プロパティ
    static $staticProperty = 'static property';

    // 静的メソッド
    static function StaticMethod()
    {
        // 静的メソッド内からの、静的プロパティへのアクセス
        echo self::$staticProperty;
    }
}

クラスメンバへのアクセス

echo MyClass::$staticProperty; // 静的プロパティ

echo MyClass::StaticMethod();  // 静的メソッド

※ 静的プロパティにアクセスする際は、名前の前に「$」が必要