各クラスの定義は、classキーワードで始まり、クラス名が続きます。
   クラス名には、PHPの予約語以外のあらゆる名前を
   使用することができます。
   波括弧の中に、クラスのメンバーとメソッドの定義が記述されます。
   メソッドがオブジェクトコンテキストからコールされる場合
   (通常は、メソッドが属するオブジェクトですが、
   メソッドが第二のオブジェクトのオブジェクトの
   コンテキストから スタティックに
   コールされる場合には、別のオブジェクトとなる場合もあります)、
   疑似変数 $this が利用可能です。
   以下にこの例を示します。
     例1 オブジェクト指向言語における $this 変数 上の例の出力は以下となります。
<?php
class A
{
    function foo()
    {
        if (isset($this)) {
            echo '$this is defined (';
            echo get_class($this);
            echo ")\n";
        } else {
            echo "\$this is not defined.\n";
        }
    }
}
class B
{
    function bar()
    {
        A::foo();
    }
}
$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
例2 簡単なクラス定義
<?php
class SimpleClass
{
    // メンバ宣言
    public $var = 'a default value';
    // メソッド宣言
    public function displayVar() {
        echo $this->var;
    }
}
?>
デフォルト値は定数でなければなりません。(たとえば) 変数、クラスのメンバあるいは関数コールなどは使用できません。
例3 クラスのメンバのデフォルト値
<?php
class SimpleClass
{
    // 無効な形式のメンバ宣言
    public $var1 = 'hello '.'world';
    public $var2 = <<<EOD
hello world
EOD;
    public $var3 = 1+2;
    public $var4 = self::myStaticMethod();
    public $var5 = $myVar;
    // 有効な宣言
    public $var6 = myConstant;
    public $var7 = self::classConstant;
    public $var8 = array(true, false);
    
    
}
?>
注意: クラスやオブジェクトを扱うための、便利な関数があります。 クラス/オブジェクト関数 を参照ください。
ヒアドキュメントとは異なり、nowdoc は静的データコンテキストでも使用することができます。
例4 静的なデータの例
<?php
class foo {
    // PHP 5.3.0 以降で対応
    public $bar = <<<'EOT'
bar
EOT;
}
?>
注意: Nowdoc は PHP 5.3.0 以降で使用可能です。
あるクラスのインスタンスを生成する際、新たにオブジェクトが作成され、 変数に代入される必要があります。 新しいオブジェクトが作成される際には、そのオブジェクトが エラー時に 例外を投げる よう定義された コンストラクタを有していない限り、 常にオブジェクトが代入されます。 クラスは、そのインスタンスを作成する前に定義すべきです (これが必須となる場合もあります)。
例5 インスタンスを作成する
<?php
$instance = new SimpleClass();
?>
クラスのコンテキストにおいては、 new self や new parent のようにして新しいオブジェクトを作成することができます。
作成済みのクラスのインスタンスを新たな変数に代入する場合、新しい変数は、 代入されたオブジェクトと同じインスタンスにアクセスします。 この動作は、インスタンスを関数に渡す場合も同様です。 作成済みのオブジェクトのコピーは、その クローンを作成 することにより作成可能です。
例6 オブジェクトの代入
<?php
$assigned   =  $instance;
$reference  =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance と $reference は null になります
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
上の例の出力は以下となります。
NULL NULL object(SimpleClass)#1 (1) { ["var"]=> string(30) "$assigned will have this value" }
クラスは、宣言部にextendsキーワードを含めることで、他のクラスのメソッドとメソッドと メンバーを継承することができます。他重継承を行うことはできず、クラスが継承できるベース クラスは一つだけです。
継承されたメソッドとメンバーは、親クラスで final としてメソッドが定義されていない限り、親クラスで定義されたのと同じ名前で 再度宣言を行うことでオーバーライドすることができます。 parent::で 参照することにより、このオーバーライドされたメソッドまたはスタティックメンバーに アクセスすることができます。
例7 簡単なクラスの継承
<?php
class ExtendClass extends SimpleClass
{
    // 親クラスのメソッドを再定義
    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}
$extended = new ExtendClass();
$extended->displayVar();
?>
上の例の出力は以下となります。
Extending class a default value