请原谅我,如果你不认为这是一个真正的问题,但我真的希望这也有助于其他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
的这种用法是否有效且是一个好方法?如果这种用法有任何缺点,请纠正我。
答案 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);
}
如果您没有进行此类操作,那么我认为仅仅为了吸气剂和制定者而创造它们是不值得的。