PHP C + + şablon sınıfları taklit etmek nasıl?
EDITED1
Örneğin, bu nasıl PHP olurdu?
template <typename T>
class MyQueue
{
std::vector<T> data;
public:
void Add(T const &d);
void Remove();
void Print();
};
PHP için C + + kod dönüştürme:
class MyQueue{
private $data;
public function Add($d);
public function Remove();
public function Print();
};
Thirler açıklandığı gibi Ekle işlevi istediğiniz şey geçmek, ve $ verileri istediğiniz değeri ne olursa olsun tutmak, böylece PHP, dinamiktir. Gerçekten bazı tür güvenliğini eklemek istedim, sen kurucusuna izin vermek istediğiniz türü geçmek zorunda olacaktır.
public function __construct($t){
$this->type = $t;
}
Sonra instanceof operatörü kullanan diğer işlevlerinde bazı kontrolleri ekleyebilirsiniz.
public function Add($d){
if ( !($d instanceof $this->type ){
throw new TypeException("The value passed to the function was not a {$this->type}");
}
//rest of the code here
}
Ancak, derleme zamanında tip hataları yakalamak için tasarlanmış bir statik yazdığınız languge işlevselliği yakın gelmeyecek.
PHP bir değer olarak her tür ve bir anahtar olarak herhangi bir skaler kabul inanılmaz faydalı diziler.
Sizin örnekte en iyi çevirisi
class MyQueue {
private $data = array();
public function Add($item) {
$this->data[] = $item; //adds item to end of array
}
public function Remove() {
//removes first item in array and returns it, or null if array is empty
return array_shift($this->data);
}
public function Print() {
foreach($this->data as $item) {
echo "Item: ".$item."<br/>\n";
}
}
}