这种STDClass的使用是否是PHP中有效的OOP技术?

时间:2016-12-23 20:57:58

标签: php oop

请原谅我,如果你不认为这是一个真正的问题,但我真的希望这也有助于其他PHP程序员。所以我关心PHP中的STDClass。考虑下面类中的get()方法,其中我返回包含用户信息的STDClass实例。

`

class Bio {

    private $_name, $_age, $_add;

    public function setName($name) {

        $this->_name = $name;

    }

    public function setAge($age) {

        $this->_age = $age;

    }

    public function setAddress($address) {

        $this->_add = $address;

    }

    public function get() {

        $bio = new STDClass();

        $bio->name = $this->_name;

        $bio->age = $this->_age;

        $bio->address = $this->_add;

        return $bio;

    }

}

$bio = new Bio();

$bio->setName('Rehmat');

echo $bio->get()->name;`

现在我的问题是,STDClass的这种用法是否有效且是一个好方法?如果这种用法有任何缺点,请纠正我。

1 个答案:

答案 0 :(得分:2)

class Bio
{
    public function __construct($name, age, address)
    {
        $this->name = $name;
        $this->age = $age;
        $this->address = $address;
    }
}

以及其他方法。

$bio = new Bio('Some name', 24, 'Some Address');
$bio->getName();

您的代码有效,但您不需要使用StdClass来获取类的实例。并不是说它无效,但以这种方式使用它只是奇怪。通过获取上面显示的Bio实例,您还可以键入检查对象的实例类型,以及测试等等。    并考虑你的setter方法,如setAge()和setName()。如果您没有进行任何类型的数据操作,例如将传递的名称设置为大写或大写字母:

public function setName($name)
{
    $this->name = ucfirst($name);
}

如果您没有进行此类操作,那么我认为仅仅为了吸气剂和制定者而创造它们是不值得的。