C# 填写一个类的新实例,这是唯一的方法(构造函数注入)

C# 填写一个类的新实例,这是唯一的方法(构造函数注入),c#,php,constructor,C#,Php,Constructor,我有一类人 class Person { public $Name; public $Age; } 如果我想创建一个新人并填充他的属性,我通常会实现一个构造并使用它来填充实例 class Person { public $Name; public $Age; function __Construct( $params ) { $this->Name = ( isset( $params[ "Name" ] ) ) ? $p

我有一类人

class Person
{
    public $Name;
    public $Age;
}
如果我想创建一个新人并填充他的属性,我通常会实现一个构造并使用它来填充实例

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

了解的想法是扩展我的知识。我知道魔术的方法,但我真的很想看到一个例子,确切地说,我已经表示,因为我很困惑

编辑://

下面是另一个例子,说明了为什么PHP中会大量邀请getter和setter

<?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个实体的所有属性,然后在另一种类型的类中执行相同的操作。。。我知道其他的解决办法,但重点仍然是,这对我来说是一个很大的收获。谢谢诸如此类。

由于您的属性是公共的,您可以直接将它们设置为您实例化的类:
$person=new person()$person->$Name='Mark Baker'但我相信PHP5.5引入了C风格的getter/setter是的,这是一个很好的方法,尽管我有点担心它感觉有点不对劲,也许有更好的方法,你知道吗?这是一种非常普遍的做法吗?我个人更喜欢受保护的属性,并使用getter/setter,因为这允许任何验证逻辑(例如,检查名称是否为字符串值等…我将允许将参数作为可选参数传递给构造函数,因此我知道您可以有一个公共方法来服务类的私有或受保护属性..但是getter和setter在php中如何工作?不,看起来C#getter/setter仍在进行中-
<?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
    ) )
);
?>