• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

İsim alanlarının kullanımı: İthal/Rumuz

Konuyu Okuyan Kişiler (0)

delete38

webmaster.tc
Katılım
7 Ara 2012
Mesajlar
27
Beğeniler
0
#1
Dış kaynaklı tamamen nitelenmiş bir isme bir takma adla veya ithal ederek başvurma yeteneği isim alanlarının önemli bir özelliğidir. Bu özellik, Unix dosya sistemlerinin bir dizin veya dosyaya bir sembolik bağ oluşturma yeteneğine benzer.

PHP isim alanları iki çeşit takma ad kullanımını veya ithalini destekler: bir sınıf adına takma ad ve bir isim alanı adına takma ad. Bir işlevin veya sabitin ithalinin desteklenmediğine dikkat ediniz.

PHP'da takma ad kullanımı use işleci üzerinden sağlanır. Aşağıda 3 çeşit ithal örneğine yer verilmiştir:

Örnek 1 - use işleci ile ithal/rumuz kullanımı
PHP:
<?php
namespace fan;
use Bir\Tam\Sınıfadı as BirBaşkası;

// use Bir\Tam\iAadı as iAadı ile aynıdır
use Bir\Tam\iAadı;

// küresel bir sınıfın ithali
use \DiziNesnesi;

$nesne = new namespace\BirBaşkası; // fan\BirBaşkası sınıfını örnekler
$nesne = new BirBaşkası; // Bir\Tam\Sınıfadı  sınıfını örnekler
iAadı\altia\işlev(); // Bir\Tam\iAadı\altia\işlev işlevini çağırır
$a = new DiziNesnesi(array(1)); // DiziNesnesi sınıfını örnekler
// "use \DiziNesnesi" olmasaydı fan\DiziNesnesi sınıfını örneklerdik
?>
İsim alanlı adlar için baştaki terbölü gereksiz olup izin verilmediği gibi bunlar geçerli isim alanına göre işlenmezler. İthal edilen isimler ise tamamen nitelenmiş olmalıdır. (Tamamen nitelenmiş isimler Fan\Fin şeklinde isim alanı ayracı içermelerine karşın küresel isimler FanFin şeklinde isim alanı ayracı içermezler.)

PHP bunlara ek olarak çok sayıda use deyiminin aynı satırda kullanılmasına imkan veren bir kısayola da sahiptir.

Örnek 2 - use işleci ile rumuz/ithal, çoklu use kullanımı

PHP:
<?php
use Bir\Tam\Sınıfadı as BirBaşkası, Bir\Tam\iAadı;

$nesne = new BirBaşkası; // Bir\Tam\Sınıfadı sınıfını örnekler
iAadı\altia\işlev();     // Bir\Tam\iAadı\altia\işlev işlevini çağırır
?>
İthal işlemi derleme sırasında yerine getirilir ve dolayısıyla devingen sınıf, işlev ve sabit isimlerini etkilemez.

Örnek 3 - İthal işlemi ve devingen isimler
PHP:
<?php
use Bir\Tam\Sınıfadı as BirBaşkası, Bir\Tam\iAadı;

$nesne = new BirBaşkası; // Bir\Tam\Sınıfadı sınıfını örnekler
$a = 'BirBaşkası';
$nesne = new $a;         // BirBaşkası sınıfını örnekler
?>
Bunlara ek olarak, ithal işlemi sadece nitelenmemiş ve nitelenmiş isimleri etkiler. Tamamen nitelenmiş isimler mutlak olup ithal işleminden etkilenmez.

Örnek 4 - İthal işlemi ve tamamen nitelenmiş isimler
PHP:
<?php
use Bir\Tam\Sınıfadı as BirBaşkası, Bir\Tam\iAadı;

$nesne = new BirBaşkası;       // Bir\Tam\Sınıfadı sınıfını örnekler
$nesne = new \BirBaşkası;        // BirBaşkası sınıfını örnekler
$nesne = new BirBaşkası\birşey;  // Bir\Tam\Sınıfadı\birşey sınıfını örnekler
$nesne = new \BirBaşkası\birşey; // BirBaşkası\birşey sınıfını örnekler
?>