アプリ版:「スタンプのみでお礼する」機能のリリースについて

親クラスが保持している値(ここではID)を維持して
それぞれの子クラスが利用できるようにしたいのですが、
次のようなやり方だと維持できないようです。
どのようにすればクラスを利用する場合に永続的な値を
持たせることができるのでしょうか?

class oya {
 var $ID = 0;
 function setID($ID) { $this->ID = $ID; }
 function getNextID() { return $this->ID + 1; }
}
class sub1 extends oya {
 function sub1 () {$this->setID($this->getNextID());}
}
class sub2 extends oya {
 function sub2 () {$this->setID($this->getNextID());}
}

$sub1 = new sub1();//←IDが1になる
$sub2 = new sub2();//←希望としてはIDが2になってほしいが、IDは1

A 回答 (1件)

以下のように static なメンバ変数で値を共有するってのはどうでしょう。


サブクラスからは、parent::$ID という形で参照します。

<?php
class oya {
protected static $ID = 0;

function setID($id) { self::$ID = $id; }
function getNextID() { return self::$ID + 1; }

function printID() { echo "\n ID = ". self::$ID ; }
}

class sub1 extends oya
{
function sub1 () {$this->setID($this->getNextID());}
}

class sub2 extends oya
{
function sub2 () {$this->setID($this->getNextID());}
}

$sub1 = new sub1();//←IDが1になる
$sub1->printID();

$sub2 = new sub2();//
$sub2->printID();

?>
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
そのやり方でできました。ありがとうございます。

お礼日時:2007/12/13 04:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!