ホームページ > バックエンド開発 > PHPチュートリアル > phpオブジェクト指向チュートリアル4

phpオブジェクト指向チュートリアル4

黄舟
リリース: 2023-03-04 12:24:02
オリジナル
1049 人が閲覧しました

7. 特別な参照「$this」の使用
これで、オブジェクト内のメンバーにアクセスする方法がわかりました。これは、オブジェクトの外部からオブジェクトにアクセスする、「Object->Members」メソッドを通じて行われます。メンバーの形式で、オブジェクト内のメソッドがオブジェクト内のこのオブジェクトのプロパティにアクセスできるようにしたい場合、またはオブジェクト内のメソッドを使用してこのオブジェクトの他のメソッドを呼び出す場合はどうすればよいでしょうか?オブジェクト内のすべてのメンバーは、オブジェクトの内部メンバー間の呼び出しを含め、オブジェクトを使用して呼び出す必要があるため、PHP はこのオブジェクト $this への参照を提供し、各オブジェクトにはオブジェクトの参照 $this がオブジェクトを表し、完了します。 this の本来の意味は、「this」の意味です。上記の例では、3 つのインスタンス オブジェクト $P1、$P2、および $P3 がそれぞれインスタンス化されています。独自の $this は、それぞれオブジェクト $p1、$p2、および $p3 を表します。
上の図から、$this はオブジェクト内のオブジェクトを表す参照であることがわかります。オブジェクト内でこのオブジェクトのメンバーを呼び出すために使用されるメソッドは、オブジェクトのメンバーを呼び出すために使用されるメソッドと同じです。オブジェクトの外側。

$this->属性$this->name; $this->age; $this->sex;
$this->方法$this->say(); $this->run();
ログイン後にコピー

上記の例を変更して、全員に自分の名前、性別、年齢を教えてもらいます:

<?php
class Person
{
//下面是人的成员属性
var $name; //人的名字
var $sex; //人的性别
var $age; //人的年龄
//下面是人的成员方法
function say() //这个人可以说话的方法
{
echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:
".$this->age."<br>";
}f
unction run() //这个人可以走路的方法
{
echo "这个人在走路";
}
}
$p1=new Person(); //创建实例对象$p1
$p2=new Person(); //创建实例对象$p2
$p3=new Person(); //创建实例对象$p3
//下面三行是给$p1对象属性赋值
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//下面访问$p1对象中的说话方法
$p1->say();
//下面三行是给$p2对象属性赋值
$p2->name="李四";
$p2->sex="女";
$p2->age=30;
//下面访问$p2对象中的说话方法
$p2->say();
//下面三行是给$p3对象属性赋值
$p3->name="王五";
$p3->sex="男";
$p3->age=40;
//下面访问$p3对象中的说话方法
$p3->say();
?>
ログイン後にコピー

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

我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
ログイン後にコピー
ログイン後にコピー

このメソッドを分析します:


function say() //这个人可以说话的方法
{
echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:
".$this->age."<br>";
}
ログイン後にコピー

$p1 では、 $ 3 つのオブジェクト p2 と$p3 には、これら 3 つのオブジェクトをそれぞれ表す Say() メソッドがあり、これは、オブジェクト内のオブジェクトのプロパティにアクセスする方法です。 Say() メソッドで run() メソッドを使用するには、say() メソッドで $this->run() を使用して呼び出しを完了します。

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

コンストラクターの宣言は、その名前が __construct() でなければならないことを除いて、他の操作の宣言と同じです。これは PHP5 での変更です。以前のバージョンでは、コンストラクターの名前はクラス名と同じである必要がありました。これは PHP5 でも使用できますが、これを使用する人はほとんどいません。クラス名に依存しないコンストラクターです。クラス名が変更された場合でも、対応するコンストラクター名を変更する必要はありません。下位互換性のために、クラスに __construct() という名前のメソッドがない場合、PHP はクラス名と同じ名前で php4 で記述されたコンストラクター メソッドを検索します。

形式:

function __construct ( [参数] ) { ... ... }
ログイン後にコピー

クラス内で宣言できるコンストラクターは 1 つだけですが、コンストラクターはオブジェクトが作成されるたびに 1 回だけ呼び出されます。

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

<?
//创建一个人类
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>";
}
}
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
$p1=new Person(“张三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面访问$p1对象中的说话方法
$p1->say();
//下面访问$p2对象中的说话方法
$p2->say();
//下面访问$p3对象中的说话方法
$p3->say();
?>
ログイン後にコピー

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

我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
ログイン後にコピー
ログイン後にコピー


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

function __destruct ( ) { ... ... }
ログイン後にコピー
<?
//创建一个人类
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 “再见”.$this->name.”<br>”;
}
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
$p1=new Person(“张三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面访问$p1对象中的说话方法
$p1->say();
//下面访问$p2对象中的说话方法
$p2->say();
//下面访问$p3对象中的说话方法
$p3->say();
?>
ログイン後にコピー

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

我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
再见张三
再见李四
再见王五
ログイン後にコピー

上記は、PHP オブジェクト指向チュートリアル 4 の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート