array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'language.namespaces.importing.php', 1 => 'İsim alanlarının kullanımı: İthal/Rumuz', ), 'up' => array ( 0 => 'language.namespaces.php', 1 => 'İsim Alanları', ), 'prev' => array ( 0 => 'language.namespaces.nsconstants.php', 1 => 'namespace sözcüğü ve __NAMESPACE__ sabiti', ), 'next' => array ( 0 => 'language.namespaces.global.php', 1 => 'Küresel Alan', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'language/namespaces.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
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 sabitler, işlevler, sınıflar, arayüzler, nitelikler, sayılamalar ve isim alanlarına takma ad verilmesini ve ithalini destekler.
Takma ad kullanımı use
işleci üzerinden sağlanır.
Aşağıda 5 çeşidin de ithal örneğine yer verilmiştir:
Örnek 1 - use
işleci ile ithal/takma ad kullanımı
<?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;
// bir işlevin ithali
use function Bir\Tam\işlevAdı;
// bir işleve takma ad
use function Bir\Tam\işlevAdı as func;
// bir sabitin ithali
use const Bir\Tam\SABİT;
$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
func(); // Bir\Tam\işlevAdı işlevini çağırır
echo SABİT; // Bir\Tam\SABİT değerini basar
?>
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
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 dinamik sınıf, işlev ve sabit isimlerini etkilemez.
Örnek 3 - İthal işlemi ve dinamik isimler
<?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
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
?>
use
anahtar sözcüğü bir dosyanın en dış etki alanında
veya isim alanı bildirimleri içinde kullanılmalıdır. Bunun sebebi ithal
işleminin çalışma zamanında değil derleme sırasında yapılmasıdır,
dolayısıyla bir bloğun etki alanında olamaz. Aşağıdaki örnekte uygun
olmayan use
kullanımı gösterilmiştir:
Örnek 5 - Usülsüz ithal kuralı
<?php
namespace Languages;
function toGreenlandic()
{
use Languages\Danish;
// ...
}
?>
Bilginize:
İthal kuralları dosyaya özeldir, yani içerilen dosyalar içeren dosyanın ithal kurallarını miras alMAyacaktır.
use
bildirimleri
Aynı isim alanından
ithal edilen sınıflar, işlevler ve sabitler tek bir
use
deyiminde gruplanabilir.
<?php
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;
use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;
// aşağıdaki gruplandırılmış use bildirimine eşdeğerdir
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};