クラス (class)

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

クラス定義

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();       // メソッド
※ プロパティにアクセスするときは、名前の前の「$」は不要

不正な名前のメンバへのアクセス

たとえばメンバ名が「@」となっているとき、

$myClass->@;

とはできません。これは「@」がメンバ名に使用できない文字のためです。この場合はメンバ名を{}で囲み、

$myClass->{ '@' };

とします。

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

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();  // 静的メソッド
※ 静的プロパティにアクセスするときは、名前の前に「$」が必要

参考