[PHP-users 35114] Re: 抽象メソッドの引数を可変長にしたい

pigg.y.in.side @ gmail.com pigg.y.in.side @ gmail.com
2010年 4月 18日 (日) 06:57:06 JST


はじめましてミッキーと申します。

竹山さんのソースを参考にして以下のように書いたところ、
おそらく想定されている動作をしているのではないかと思うのですが、いかがでしょうか。

万が一、派生クラスの process() 定義で引数の個数を指定されたい、
というご要望であったのであれば外れとなります。その際はあしからず。

<?php
abstract class AbstractClass
{
    public function execute()
    {
        $args = func_get_args();
        for ($i = 0; $i < 3; $i++)
        {
            $this->process($args);
        }
    }

    abstract protected function process($args);
}

class ConcreteClassA extends AbstractClass
{
    function process($args)
    {
        list($bar) = $args;

        // debug
        printf("%s, %s \n", get_class($this), $bar);
    }
}

class ConcreteClassB extends AbstractClass
{
    function process($args)
    {
        list($bar, $baz) = $args;

        // debug
        printf("%s, %s, %s \n", get_class($this), $bar, $baz);
    }
}

$objA = new ConcreteClassA;
$objB = new ConcreteClassB;

$objA->execute('hoge');
$objB->execute('hoge','moge');
?>


PHP-users メーリングリストの案内