1: 構造と呼び出し (インスタンス化):
class className{}, call: $obj = new className(); クラスにコンストラクターがある場合は、パラメーターも渡す必要があります。 $obj = new className($v,$v2...);
2: コンストラクターとデストラクター:
1. コンストラクターは初期化に使用されます。パラメーターを受け取ることができる __construct() を使用します。
2. ただし、デストラクターはパラメーターを受け取ることができません (クラスを削除する前に一部の操作または関数を実行するために使用されます)。デストラクターの名前は __destruct() です。スクリプトの実行の最後に、PHP はメモリ内のオブジェクトを破棄するため、デストラクター関数は必要ありませんが、COOKIE など一部のオブジェクトはこの関数を使用して破棄する必要があります。
知識ポイント: PHP4 もコンストラクターを提供しますが、クラスと同じ名前のクラス メソッドを使用します。このアプローチは、クラスに __construct が含まれていない場合、そのクラスと同じ名前のメソッドを検索します。クラスが見つかった場合は、次のようにコンストラクターとみなされます。
クラステスト
{ var $b;
関数 test() { $this->b=5 }
;
関数 addab($c) { return $this->b+$c }
}
$a = new test(); echo $a->addab(4); // 9
を返します。
3. PHP は、親クラスのコンストラクターを自動的に呼び出しません (コンストラクターのオーバーロードはサポートされていません)。parent キーワードを使用して明示的に呼び出す必要があります。
クラス職員{
関数 __construct()....
}
クラスマネージャーエクステント従業員{
関数 __construct(){
parent::_construct();
echo このサブクラスの親クラスのコンストラクターが呼び出されます。 ;
}
}
もちろん、インスタンスと関係のない他のクラスのコンストラクターを呼び出すこともできます。 __construct() の前にクラス名を追加するだけです。例:
otherClassName::__construct();
3. クラス属性:
クラスの属性に値を代入または取得するには 2 つの方法があります。
1. public キーワードを public スコープで使用します。
2. __set() と __get() を使用して値を割り当て、取得します。前者をセッター メソッド (setter) または変更メソッド (ミューテーター) と呼び、後者をアクセサー メソッド (アクセサー) またはゲッターと呼びます。メソッド(ゲッター)。この方法を使用することをお勧めします: 利点:
A. データ検証は__set()内で一律に行うことができます。
B. 属性の一元管理を容易にする。
注:
まず、__set() と __get() は、次のように、public で定義された属性に対してのみ機能します。
クラステスト{
保護された $a=9,$b=2,$c;
公開 $d;
関数 __set($n,$v) { $this->$n = $v+2 }
関数 __get($name) { return $this->$name+2 }
}
$a = 新しいテスト();
$a->b =5; echo "
";
この例では、$a、$b、および $c の設定のみがフィルターされ、__set および __get を通じて返されますが、$d については機能しません。たとえば、$a->d=5 の場合でも 5 が返されます。
2 番目: __set($n,$v) は 2 つのパラメータを取ります。また、__get($n) にはパラメーターを 1 つだけ指定できます。例:
クラステスト{
プライベート $a=5,$b=6,$c;
関数 __set($n,$v)
{
If($n==a&&$n>0)
$this->$n = $v;
その他
$this->$n = $v+2;
}
関数 __get($name)
{
return $this->$name; // return $this->$name + $this->addab(); に変更された場合、a の値が呼び出された場合、実際に返される値は a+ の値になります。 a+b。デフォルトは 5+5+6=16 です。
}
関数addab()
$this->a + を返す$this->b;
}
$e=新しいテスト();
$e->a = 11; //記述に注意してください: $this->$n はクラス内で使用されます。つまり、変数が書き込まれますが、$e->a は外部インスタンスに使用されます。
$e->b = 12 //14 を取得します
;
$e->k = 22;
上記の例 k に示すように、クラスの属性は、__set を使用するかどうかに関係なく、インスタンスの作成時に $e->newProperty = xx; を使用して直接作成できます。プロパティですが、これはお勧めしません。