1: 構造と呼び出し (インスタンス化):
class className{}、呼び出し: $obj = new className(); クラスにコンストラクターがある場合は、パラメーターも渡す必要があります。 $obj = new className($v,$v2...);
など2: コンストラクターとデストラクター:
1. コンストラクターは初期化に使用されます。パラメーターを受け取ることができる __construct() を使用します。
2. ただし、デストラクターはパラメーターを受け取ることができません (クラスを削除する前に一部の操作または関数を実行するために使用されます)。デストラクターの名前は __destruct() です。スクリプトの実行の最後に、PHP はメモリ内のオブジェクトを破棄するため、デストラクター関数は必要ありませんが、COOKIE など一部のオブジェクトはこの関数を使用して破棄する必要があります。
知識ポイント: PHP4 にもコンストラクターが用意されていますが、クラスと同じ名前のクラス メソッドが使用されます。このアプローチは、クラスに __construct が含まれていない場合、同じ名前を検索します。クラスのメソッドが見つかった場合、次のようにコンストラクターとみなされます。
class test { var $b; function test() { $this->b=5; } function addab($c) { return $this->b+$c; } } $a = new test(); echo $a->addab(4); // 返回 9 |
class employee{ function __construct().... } class Manager extents Employee{ function __construct(){ parent::_construct(); echo '这个子类的父类构造函数调用了!'; } } |
otherClassName::__construct(); |
3. クラス属性:
クラスの属性に値を代入または取得するには 2 つの方法があります。1. パブリック スコープの public キーワードを使用します。
2. __set() と __get() を使用して値を割り当て、取得します。前者を設定メソッド (setter) または変更メソッド (ミューテーター) と呼び、後者をアクセサー メソッド (アクセサー) と呼びます。 ) またはゲッター メソッド (getter)。この方法を使用することをお勧めします: 利点:
A. データ検証は __set() で一律に実行できます。
B. 属性の一元管理に便利です。
注:
最初: __set() と __get() は、次のように、public で定義された属性に対してのみ機能します。
class test{ protected $a=9,$b=2,$c; public $d; function __set($n,$v) { $this->$n = $v+2; } function __get($name) { return $this->$name+2; } } $a = new test(); $a->b =5; echo " "; echo $a->b; |
2 番目: __set($n,$v) は 2 つのパラメータを取ります。また、__get($n) にはパラメーターを 1 つだけ指定できます。例:
class test{ private $a=5,$b=6,$c; function __set($n,$v) { if($n=='a'&&$n>0) $this->$n = $v; else $this->$n = $v+2; } function __get($name) { return $this->$name; //如果改为return $this->$name + $this->addab(); 如调用a的值,实际返回的是a+a+b的值。默认为5+5+6=16。 } function addab() { return $this->a + $this->b; } } $e=new test(); $e->a = 11; //注意写法:类的内部用$this->$n即变量的写法,但外部实例要用$e->a的方式。 $e->b = 12; //get 14 $e->k = 22; |