downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

İsim Alanlarının Tanımlanması> <İsim Alanları
[edit] Last updated: Fri, 23 Dec 2011

view this page in

Giriş

İsim alanı nedir? En dar tanımıyla, öğeleri sarmalamanın bir yoludur. Çoğu bakımdan bu soyut bir kavram gibi görünebilir. Örneğin, bir işletim sisteminin dizinleri bir birleriyle ilgili dosyaları gruplamaya yarar ve içerdiği dosyalar için bir isim alanı görevi yapar. Daha belirgin bir örnek olarak, /home/ali ve /home/veli dizinlerinde mesela.txt adında birer dosya bulunduğunu varsayalım. /home/ali dizinindeki dosyaya dizin dışından erişmek istersek dosyanın önüne dizin ayracı ile dizin adını yerleştiririz. Programcılık dünyasındaki isim alanlarına da aynı kurallar uygulanır.

PHP dünyasında isim alanları, kütüphane ve uygulama yazarlarının aşağıdaki gibi sınıflar ve işlevler gibi yeniden kullanılabilir elemanları oluşturken karşılaştıkları iki soruna çözüm getirmek amacıyla tasarlanmıştır:

  1. Yazdığınız kod ile yerleşik PHP sınıfları/işlevleri/sabitleri veya üçüncü şahısların sınıfları/işlevleri/sabitleri arasındaki isim çakışmaları.
  2. İlk sorunu hafifletmek ve kaynak kodun okunabilirliğini arttırmak için epeyce_uzun_isimlere takma ad tanımlama (veya kısaltma) yeteneği.

PHP isim alanları birbirleriyle ilişkili sınıflar, sabitler ve işlevleri gruplamak için bir yol sunar. PHP'deki isim alanı söz dizimi için bir örnek:

Örnek 1 - İsim alanı söz dizimi örneği

<?php
namespace isim\alanım// "İsim Alanlarının Tanımlanması" bölümüne bakınız

class Sınıfım {}
function 
işlevim() {}
const 
SABİTİM 1;

$a = new Sınıfım;
$c = new \isim\alanım\Sınıfım// "Küresel Etki Alanı" bölümüne bakınız

$a strlen('selam'); // "İsim alanlarının kullanımı: Son çare olarak
                      // küresel işlev ve sabitler" bölümüne bakınız

$d = \isim\alanım\SABİTİM;        // isim alanı işleci ve __NAMESPACE__
$d __NAMESPACE__ '\SABİTİM';  // sabiti" bölümüne bakınız
echo constant($d); // "İsim alanları ve devingen dil özellikleri"
                   // bölümüne bakınız
?>

İsim alanları PHP 5.3.0 sürümünden beri mevcuttur.



İsim Alanlarının Tanımlanması> <İsim Alanları
[edit] Last updated: Fri, 23 Dec 2011
 
add a note add a note User Contributed Notes Giriş
Anonymous 14-Jul-2011 04:14
PHP Namespaces do not only provide a way in which to group related classes, functions and constants, but also a way in which to group related classes, interfaces, functions and constants.
Dmitry Snytkine 31-May-2011 06:54
Just a note: namespace (even nested or sub-namespace) cannot be just a number, it must start with a letter.
For example, lets say you want to use namespace for versioning of your packages or versioning of your API:

namespace Mynamespace\1;  // Illegal
Instead use this:
namespace Mynamespace\v1; // OK
SteveWa 27-Feb-2011 08:45
Thought this might help other newbies like me...

Name collisions means:
you create a function named db_connect, and somebody elses code that you use in your file (i.e. an include) has the same function with the same name.

To get around that problem, you rename your function SteveWa_db_connect  which makes your code longer and harder to read.

Now you can use namespaces to keep your function name separate from anyone else's function name, and you won't have to make extra_long_named functions to get around the name collision problem.

So a namespace is like a pointer to a file path where you can find the source of the function you are working with

 
show source | credits | stats | sitemap | contact | advertising | mirror sites