ホームページ  >  記事  >  php教程  >  PHP (12) オブジェクト指向の構築方法とデストラクタ方法

PHP (12) オブジェクト指向の構築方法とデストラクタ方法

WBOY
WBOYオリジナル
2016-06-21 08:48:421042ブラウズ

1. 施工方法

ほとんどのクラスには、コンストラクターと呼ばれる特別なメソッドがあります。オブジェクトが作成されると、自動的にコンストラクターが呼び出されます。つまり、 new キーワードを使用してオブジェクトをインスタンス化すると、コンストラクターが自動的に呼び出されます。

コンストラクターの宣言は、名前が __construct() である必要がある点を除いて、他の操作の宣言と同じです。これは PHP5 での変更です。以前のバージョンでは、コンストラクターの名前はクラス名と同じである必要がありました。これは PHP5 でも引き続き使用できますが、この利点は、コンストラクターをクラス名と同じにすることができることです。クラス名に関係なく、クラス名が変更された場合でも、対応するコンストラクター名を変更する必要はありません。下位互換性のため、クラスに __construct() という名前のメソッドがない場合、PHP は php4

で書かれたメソッドを検索します。

メソッド。クラス名と同じ名前のコンストラクター メソッド。

形式: function __construct ([パラメータ]) { ... ... }

クラス内で宣言できるコンストラクターは 1 つだけですが、コンストラクターはオブジェクトが作成されるたびに 1 回しか呼び出されないため、このメソッドはアクティブに呼び出すことができないため、通常はいくつかの便利な初期化タスクを実行するために使用されます。たとえば、オブジェクトの作成時に、対応するプロパティに初期値が割り当てられます。

例:

[php] plaincopy を表示

//人間を作成します

クラスの人

{

//以下は人々のメンバー属性です

var $name;

var $sex;

var $age;

//コンストラクターのパラメーターを $name、$sex、$age として定義します

関数 __construct($name, $sex, $age)

{

//コンストラクターを通じて渡された $name には、メンバー属性 $this->name

に初期値が割り当てられます。

$this->name=$name

//コンストラクターを通じて渡された $sex には、メンバー属性 $this->sex

の初期値が割り当てられます。

$this->セックス=$セックス

//構築メソッドを通じて渡された $age は、メンバー属性 $this->age

に初期値を割り当てます

$this->年齢=$年齢

}

//この人の話し方

関数say()

{

echo "私の名前は: ".$this->name." 性別: ".$this->sex" 私の年齢: ".$this->age."2a87851f231f0546ed00aa1a4409038e" ;

}

}

//構築メソッドを通じて 3 つのオブジェクト $p1、p2、$p3 を作成し、3 つの異なる実際のパラメーター (名前、性別、年齢) を渡します

$p1=新しい人("張 3", "男性", 22);

$p2=新しい人("李4","女", 33);

$p3=新しい人("王5","男", 44);

//以下は $p1 オブジェクトの発話メソッドにアクセスします

$p1->say();

//以下は $p2 オブジェクトの発話メソッドにアクセスします

$p2->say();

//以下は $p3 オブジェクトの発話メソッドにアクセスします

$p3->say();

?>

出力結果は次のとおりです:

私の名前: Zhang 3 性別: 男性 私の年齢: 22

私の名前は: Li 4 性別: 女性 私の年齢: 33

私の名前は: Wang 5 性別: 男性 私の年齢: 44

2. デストラクター:

コンストラクターの反対はデストラクターです。デストラクタは、PHP5 で新しく追加された内容です。PHP4 にはデストラクタはありません。デストラクターを使用すると、クラスを破棄する前に、ファイルを閉じる、結果セットを解放するなど、一部の操作を実行したり、一部の機能を完了したりできます。デストラクターは、オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに削除されます。つまり、オブジェクトがメモリ内で破棄される前にデストラクターが呼び出されます。コンストラクターの名前と同様に、クラスのデストラクターの名前は __destruct() でなければなりません。デストラクターはパラメータを取ることができません。

形式: function __destruct ( ) { ... ... }

例:

出力結果は次のとおりです:

<span style="color:#333333;"><?  
//创建一个人类  
class Person  
{  
//下面是人的成员属性  
var $name;   
var $sex;   
var $age;   
//定义一个构造方法参数为$name、$sex和$age  
   
function __construct($name, $sex, $age)  
{  
//通过构造方法传进来的$name给成员属性$this->name赋初使值  
$this->name=$name;  
//通过构造方法传进来的$sex给成员属性$this->sex赋初使值  
$this->sex=$sex;  
//通过构造方法传进来的$age给成员属性$this->age赋初使值  
$this->age=$age;  
}  
//这个人的说话方法  
function say()  
{  
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";  
}  
//这是一个析构函数,在对象销毁前调用  
function __destruct()  
{  
echo &ldquo;再见&rdquo;.$this->name.&rdquo;<br>&rdquo;;  
   
}  
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄  
$p1=new Person(&ldquo;张3&rdquo;,&rdquo;男&rdquo;, 22);  
$p2=new Person(&ldquo;李4&rdquo;,&rdquo;女&rdquo;, 33);  
$p3=new Person(&ldquo;王5&rdquo;,&rdquo;男&rdquo;, 44);  
//下面访问$p1对象中的说话方法  
$p1->say();  
//下面访问$p2对象中的说话方法  
$p2->say();  
//下面访问$p3对象中的说话方法  
$p3->say();  
?></span>  

私の名前: Zhang 3 性別: 男性 私の年齢: 22

私の名前は: Li 4 性別: 女性 私の年齢: 33

私の名前は: Wang 5 性別: 男性 私の年齢: 44

張 3 を破壊する

リー 4 を破壊する

破壊王 5

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