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

İsim alanları ve devingen dil özellikleri

Konuyu Okuyan Kişiler (0)

delete38

webmaster.tc
Katılım
7 Ara 2012
Mesajlar
27
Beğeniler
0
#1
PHP'nin isim alanları gerçeklenimi bir programlama dili olarak PHP'nin kendi devingen doğasından etkilenir. Örnek olarak aşağıdaki kodu isim alanlı koda dönüştürmek istersek:

Örnek 1 - Devingen olarak erişilen elemanlar

örnek1.php:
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 devingen 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 - Devingen olarak erişilen isim alanlı elemanlar
PHP:
<?php
namespace isimalanıadı;
class sınıfadı
{
    function __construct()
    {
        echo __METHOD__,"\n";
    }
}
function işlevadı()
{
    echo __FUNCTION__,"\n";
}
const sabitadı = "isimalanlı";

include 'örnek1.php';

$a = 'sınıfadı';
$obj = new $a;                    // sınıfadı::__construct basar
$b = 'işlevadı';
$b(); // prints funcname
echo constant('sabitadı'), "\n"; // küresel basar

/* çift tırnakları kullanacaksanız, "\\isimalanıadı\\sınıfadı"
   biçiminde olmalıdır */
$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
?>