PHP Değer Nesne otomatik oluşturmak

2 Cevap php

Ben sınıfta her bir değişken tanımlanır php, tanımlanmış bir sınıf değer nesnesi olduğunu varsayalım. Gibi bir şey:

class UserVO {
  public $id;
  public $name;
}

Ben şimdi bir dizi ($ veri) bekliyor, hangi başka bir sınıfta bir işlevi var.

function save_user($data) {
//run code to save the user
}

Nasıl $ data parametresi bir UserVO olarak yazılmalıdır php söyleyebilirim? O zaman böyle bir şey yapmak için kod tamamlama olabilir:

$something = $data->id; //typed as UserVO.id
$else = $data->name; //typed as UserVO.name

Ben aşağıdaki gibi bir şey tahmin ediyorum, ama bu besbelli çalışmıyor

$my_var = $data as new userVO();

2 Cevap

type hint veya instanceof operatörünü kullanın.

Tür Dayatma

public function save_user(UserVO $data);

Verilen tip bir instanceof UserVO değilse bir hata atmak olacaktır.

instanceof

public function save_user($data)
{
    if ($data instanceof UserVO)
    {
        // do something
    } else {
       throw new InvalidArgumentException('$data is not a UserVO instance');
    }
}

Yakalamak ve çalışmak mümkün olacaktır (teşekkürler bu daha ayrıntılı istisna beni işaret için Salathe için) bir InvalidArgumentException atmak olacaktır.

Bu arada, duck typing için bir göz atın

PHP5 bu çalışacaktır. Bu bir tür ipucu denir.

function save_user(UserVO  $data) {
//run code to save the user
}

http://php.net/manual/en/language.oop5.typehinting.php