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
) )
);
?>