İsim alanları ve dinamik dil özellikleri

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

PHP'nin isim alanları gerçeklenimi bir programlama dili olarak PHP'nin kendi dinamik doğasından etkilenir. Örnek olarak aşağıdaki kodu isim alanlı koda dönüştürmek istersek:

Örnek 1 - Dinamik olarak erişilen elemanlar

örnek1.php:

<?php
class sınıfadı
{
function
__construct()
{
echo
__METHOD__,"\n";
}
}
function
işlevadı()
{
echo
__FUNCTION__,"\n";
}
const
sabitadı = "küresel";

$a = 'sınıfadı';
$obj = new $a; // sınıfadı::__construct basar
$b = 'işlevadı';
$b(); // işlevadı basar
echo constant('sabitadı'), "\n"; // küresel basar
?>
Tamamen nitelenmiş isim kullanmak gerekir (isim alanı önekli sınıf adı). Bir dinamik sınıf, işlev veya sabit ismi içinde bir nitelenmiş isim ile tamamen nitelenmiş isim arasında bir fark olmadığından baştaki ters bölünün gereksiz oluşuna dikkat edin.

Örnek 2 - Dinamik olarak erişilen isim alanlı elemanlar

<?php
namespace isimalanıadı;
class
sınıfadı
{
function
__construct()
{
echo
__METHOD__,"\n";
}
}
function
işlevadı()
{
echo
__FUNCTION__,"\n";
}
const
sabitadı = "isimalanlı";


$a = '\isimalanıadı\sınıfadı';
$obj = new $a; // isimalanıadı\sınıfadı::__construct basar
$a = 'isimalanıadı\sınıfadı';
$obj = new $a; // bu da isimalanıadı\sınıfadı::__construct basar
$b = 'isimalanıadı\işlevadı';
$b(); // isimalanıadı\işlevadı basar
$b = '\isimalanıadı\işlevadı';
$b(); //bu da isimalanıadı\işlevadı basan
echo constant('\isimalanıadı\sabitadı'), "\n"; // isimalanlı basar
echo constant('isimalanıadı\sabitadı'), "\n"; // bu da isimalanlı basar
?>

SSS arasındaki Dizgelerdeki isim alanı adlarının öncelenmesi konusuna da bakmayı unutmayın.

To Top