Sınıflar ve Nesneler
PHP Manual

Tür Dayatma

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.


Sınıflar ve Nesneler
PHP Manual