ホームページ >php教程 >php手册 >chengren-アダルト-php シリーズ

chengren-アダルト-php シリーズ

WBOY
WBOYオリジナル
2016-06-14 00:02:471264ブラウズ

2010 年の最新の PHP クラスの要約

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
3. PHP は親クラスのコンストラクターを自動的に呼び出しません (コンストラクターのオーバーロードはサポートされていません)。parent キーワードを使用して明示的に呼び出す必要があります。

class employee{
function __construct()....
}
class Manager extents Employee{
function __construct(){
parent::_construct();
echo '这个子类的父类构造函数调用了!';
}
}
もちろん、このインスタンスと関係のない他のクラスのコンストラクターを呼び出すこともできます。 __construct() の前にクラス名を追加するだけです。例:

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;
$a、$b、$c のインスタンスのみの設定はフィルターされ、__set および __get を通じて返されます。$d については機能しません。たとえば、$a->d=5 の場合でも 5 が返されます。

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;
上記の例 k に示すように、クラスの属性は自由に拡張できます。__set を使用するかどうかに関係なく、インスタンスを確立するときに $e->newProperty = xx; を使用して直接作成できます。属性ですが、これはお勧めできません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。