PHP Ad Alanları
PHP Ad Alanları
Ad alanları, iki farklı sorunu çözen niteleyicilerdir:
- Bir görevi gerçekleştirmek için birlikte çalışan sınıfları gruplayarak daha iyi organizasyona izin verirler.
- Aynı adın birden fazla sınıf için kullanılmasına izin verirler.
Örneğin, Tablo, Satır ve Hücre gibi bir HTML tablosunu tanımlayan bir sınıf grubunuz olabilirken, aynı zamanda Mobilyayı tanımlayan Masa, Sandalye ve Yatak gibi başka bir sınıf grubunuz da olabilir. Ad alanları, sınıfları iki farklı grup halinde düzenlemek için kullanılabilirken, aynı zamanda iki Tablo ve Tablo sınıfının karıştırılmasını da önler.
Ad Alanı Bildirme
namespace
Ad alanları, anahtar sözcük kullanılarak bir dosyanın başında bildirilir :
Sözdizimi
Html adında bir ad alanı bildirin:
namespace Html;
Not:namespace
PHP dosyasındaki ilk şey bir bildirim olmalıdır. Aşağıdaki kod geçersiz olacaktır:
<?php
echo "Hello World!";
namespace Html;
...
?>
Bu dosyada bildirilen sabitler, sınıflar ve işlevler Html ad alanına ait olacaktır:
Örnek
Html ad alanında bir Table sınıfı oluşturun:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Daha fazla organizasyon için iç içe ad alanlarına sahip olmak mümkündür:
Sözdizimi
Code adlı bir ad alanı içinde Html adlı bir ad alanı bildirin:
namespace Code\Html;
Ad Alanlarını Kullanma
Bir bildirimi izleyen herhangi bir kod namespace
ad alanı içinde çalışır, bu nedenle ad alanına ait sınıflar herhangi bir niteleyici olmadan başlatılabilir. Bir ad alanının dışından sınıflara erişmek için, sınıfın kendisine bağlı ad alanına sahip olması gerekir.
Örnek
Html ad alanındaki sınıfları kullanın:
$table = new Html\Table()
$row = new Html\Row();
Aynı ad alanından birçok sınıf aynı anda kullanıldığında, namespace
anahtar sözcüğü kullanmak daha kolaydır:
Örnek
Html\qualifier'a ihtiyaç duymadan Html ad alanındaki sınıfları kullanın:
namespace Html;
$table = new Table();
$row = new Row();
Ad Alanı Takma Adı
Yazmayı kolaylaştırmak için bir ad alanı veya sınıfa bir takma ad vermek yararlı olabilir. Bu, use
anahtar kelimeyle yapılır:
Örnek
Bir ad alanına bir takma ad verin:
use Html as H;
$table = new H\Table();
Örnek
Bir sınıfa bir takma ad verin:
use Html\Table as
T;
$table = new T();