-1

次のクラスの例がある場合:

<?php
class Person
{
    private $prefix;
    private $givenName;
    private $familyName;
    private $suffix;

    public function setPrefix($prefix)
    {
        $this->prefix = $prefix;
    }

    public function getPrefix()
    {
        return $this->prefix;
    }

    public function setGivenName($gn)
    {
        $this->givenName = $gn;
    }

    public function getGivenName()
    {
        return $this->givenName;
    }

    public function setFamilyName($fn)
    {
        $this->familyName = $fn;
    }

    public function getFamilyName() 
    {
        return $this->familyName;
    }

    public function setSuffix($suffix)
    {
        $this->suffix = $suffix;
    }

    public function getSuffix()
    {
        return $suffix;
    }

}

$person = new Person();
$person->setPrefix("Mr.");
$person->setGivenName("John");

echo($person->getPrefix());
echo($person->getGivenName());

?>

PHP (できれば 5.4) で、これらの戻り値を 1 つの関数に結合する方法があります。

更新: OK、私は今、PHP 内では、関数から単一の値を返すことが規範的であるが、複数の値の配列を「返すことができる」ことを学び始めています。これが私の質問に対する究極の答えであり、この理解に基づいていくつかのプラクティスに飛び込みます。

小さな例 -

function fruit () {
return [
 'a' => 'apple', 
 'b' => 'banana'
];
}
echo fruit()['b'];

また、トピックに関するstackoverflowで出くわした記事... PHP:関数から複数の値を返すことは可能ですか?

幸運を!

4

2 に答える 2

2

__get()あなたは魔法のメソッドが欲しいようですね。

class Thing {

private $property;

public function __get($name) {
    if( isset( $this->$name ) {
        return $this->$name;
    } else {
        throw new Exception('Cannot __get() class property: ' . $name);
    }
}

} // -- end class Thing --

$athing = new Thing();
$prop = $athing->property;

Marc B の例のように、すべての値を一度に返したい場合は、クラスの設計を次のように単純化します。

class Thing {

private $properties = array();

public function getAll() {
    return $properties;
}

public function __get($name) {
    if( isset( $this->properties[$name] ) {
        return $this->properties[$name];
    } else {
        throw new Exception('Cannot __get() class property: ' . $name);
    }
}

} // -- end class Thing --

$athing = new Thing();
$prop   = $athing->property;
$props  = $athing-> getAll();
于 2012-11-14T15:56:12.680 に答える
1

多分

public function getAll() {
    return(array('prefix' => $this->prefix, 'givenName' => $this->giveName, etc...));
}
于 2012-11-14T15:48:26.670 に答える