PHP 5, Tür Dayatma özelliğine sahiptir. İşlevler artık değiştirgelerinde belli bir nesne veya (PHP 5.1 ve sonrasında) bir dizi belirtilmesi için zorlayıcı olabilmektedir.
Örnek 1 - Tür dayatma örnekleri
<?php
// Şöyle bir sınıfımız olsun
class Sınıfım
{
/**
* Bir nesne sınama işlevi
*
* İlk değiştirge ÖbürSınıf türünde bir nesne olmalı
*/
public function nesne_dnm(ÖbürSınıf $diğersınıf) {
echo $diğersınıf->değişken;
}
/**
* Bir dizi sınama işlevi
*
* İlk değiştirge bir dizi olmalı
*/
public function dizi_dnm(array $dizi_girdisi) {
print_r($dizi_girdisi);
}
}
// Bu da öbür sınıfımız olsun
class ÖbürSınıf {
public $değişken = 'Merhaba Dünya';
}
?>
Dayatılan türe uymamanın sonucu yakalanabilir bir ölümcül hatadır.
<?php
// Her iki sınıftan birer örnek oluşturalım
$sınıfım = new Sınıfım;
$diğersınıf = new ÖbürSınıf;
// Ölümcül Hata: 1. değiştirge ÖbürSınıf türünde bir nesne olmalıdır
$sınıfım->nesne_dnm('hello');
// Ölümcül Hata: 1. değiştirge ÖbürSınıf türünde bir nesne örneği olmalıdır
$foo = new stdSınıf;
$sınıfım->nesne_dnm($foo);
// Ölümcül Hata: 1. değiştirge null olmamalıdır
$sınıfım->nesne_dnm(null);
// Bu çalışır: Merhaba Dünya yazdırır
$sınıfım->nesne_dnm($otherclass);
// Ölümcül Hata: 1. değiştirge bir dizi olmalıdır
$sınıfım->dizi_dnm('bir metin');
// Bu çalışır: Diziyi yazdırır
$sınıfım->dizi_dnm(array('a', 'b', 'c'));
?>
Tür dayatma işlevlerle de çalışır:
<?php
// Şöyle bir sınıfımız olsun
class Sınıfım {
public $değişken = 'Merhaba Dünya';
}
/**
* Bir işlev sınama işlevi
*
* İlk değiştirge Sınıfım türünde bir nesne olmalı
*/
function İşlevim (Sınıfım $birsınıf) {
echo $birsınıf->değişken;
}
// Bu çalışır
$sınıfım = new Sınıfım;
İşlevim($sınıfım);
?>
Tür dayatırken NULL değere izin verilir:
<?php
/* NULL değerin kabul edilmesi */
function deneme(stdSınıf $obj = NULL) {
}
deneme(NULL);
deneme(new stdSınıf);
?>
Tür dayatma (PHP 5.1 itibariyle) sadece object veya array türünde olabilir. int ve string ile yapılan geleneksel tür dayatma desteklenmemektedir.