我有一类人
class Person
{
public $Name;
public $Age;
}
如果我想创建一个新的 Person 并填写他的属性,我通常会实现一个构造并使用它来填充实例。
class Person
{
public $Name;
public $Age;
function __Construct( $params )
{
$this->Name = ( isset( $params[ "Name" ] ) ) ? $params[ "Name" ] : null;
$this->Age = ( isset( $params[ "Age" ] ) ) ? $params[ "Age" ] : null;
}
}
$person = new Person( array(
"Name" => "Michael",
"Age" => "25"
) );
有没有更好的方法来做到这一点?
例如,C# 中的 getter 和 setter?
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
new Person {
Name = "Michael",
Age = 25
}
知道的想法是扩展我的知识。我知道魔术方法,但我真的很想看到一个我所代表的例子,因为我很困惑。
编辑://
下面是另一个例子,它阐明了为什么 getter 和 setter 被大量邀请到 PHP 中。
<?php
abstract class DataIdentity
{
public $Id;
}
abstract class Animal extends DataIdentity
{
public $Type;
public $Size;
}
class Dog extends Animal
{
private $BarkVolume;
public function __Construct( $params )
{
$this->Type = "Dog";
$this->Size = ( isset( $params[ "Size" ] ) ) ? $params[ "Size" ] : null;
$this->Energy = ( isset( $params[ "Energy" ] ) ) ? $params[ "Energy" ] : null;
}
public function GetBarkVolume()
{
return $this->Energy * $this->Size;
}
}
$animals = array(
new Dog( array(
"Size" => 34,
"Energy" => 12
) )
);
?>
没有它们,我必须在 dog 构造函数中引用跨 3 个实体的所有属性,然后在另一种类型的类中执行相同操作...我知道其他解决方法,但重点仍然存在,这对我来说是一个很大的学习. 谢谢等。