Webmaster Forumu  

Go Back   Webmaster Forumu > Grafik Tasarım & Programlama > Php

Php Php Kodlama Dili Hakkında Bilgiler

Cevapla
 
LinkBack Seçenekler Stil
Alt 23-01-2012, 15:15   #1
 
Adana Şubesi
Mesajlar: 999
Tecrübe Puanı: 1
Rep Puanı: 10
Rep Derecesi : hero
Standart PHP'de İsim Alanları (Name Space)

Bildiğiniz üzere PHP, 5.3.x versiyonundan itibaren NameSpace ‘i desteklemeye başlamıştı. PHP 6.x ile OOP adına bir çok şeyin yerine oturması beklenmektedir ve PHP 6′ı ile OOP yapısının tamamiyle oturmuş olması beklenmektedir.
Öncelikle NameSpace’ler hakkında kısa bir bilgi verelim ve hemen örneklere geçelim. NameSpace yani İsim Alanları PHP’de benzer isimdeki class,constant ve function’ları aynı sayfa/proje içerisinde kullanmamızı sağlar ve daha okunabilir ve anlamlı object mimarileri kurmamızı sağlar. Windows File System olarak kafanızda canlandırabilirsiniz.
X:\ sürücü altına bir klasör oluşturup herşeyi bunun içine koyduğunuzu düşünün. İçindeki dosya sayısı 1.000′i geçtiğinde veya yaklaştığında, artık içinde bir şey bulmanız zorlaşacaktır. NameSpace’leri PC’ye uyarlarsak. A0023.jpg diye bir dosyanızın olduğunu varsayalım. Bu dosyayı X:\ sürücüsünün içindeki 10,000 dosya içerisinde aramak mı daha kolay? Yoksa X:\ sürüsünün altına X:\Photos\Summer\2009\A0023.jpg diye bir path’te bulmak mı? NameSpace’ler de bu şekilde kodlarımızı ayırmamızı sağlar. Yine WFS(Windows File System)’de olduğu gibi X:\Photos\Summer dizini altına foo.txt diye bir dosya oluşturabileceğiniz gibi X:\Photos\Summer\2009 dizini altınada aynı isimde bir dosya oluşturanız WFS size karışmayacaktır.
Aynısını NameSpace’e göre açıklarsak; fooPage.php içerisinde namespace spaceOne { const fooC = 9; } ve namespace spaceTwo{ const fooC = 7; } diye yazdığımızda ikitane aynı isimde constant olmasına PHP kızmayacaktır. Çünkü farklı namespace’ler de bulunmaktalar. WFS’e göre farklı dizinler diye düşünebilirsiniz.
PHP ile NameSpace kullanımı anlatan OOP standartlarında örnek bir kod;
Kod:
<?php /** * PHP | NameSpace * @author Hakan DAMAR * @copyright GPL */ declare(encoding="UTF-8"); namespace mainSpace{ const conn_open = 1; class Connection{} function Connect(){} } namespace secondSpace{ const conn_open = "Connected"; class Connection{} function Connect(){} } namespace childSpace{ use secondSpace as ss; function getConnectionStatus(){ $conn_open = ss\conn_open . "!!!"; return $conn_open; } } namespace { print(\mainSpace\conn_open."<br />"); print(\secondSpace\conn_open."<br />"); print(\childSpace\getConnectionStatus()); } ?>
Örnektende anlaşılacağı üzere namespace’ler namespace <nameSpace Adi> şeklinde tanımlanır. Peki, en altta isimsiz bir namespace var? O global namespace’dir. İçerisinde hem diğer namespace’leri çağırabilirsiniz hem de normal PHP kodlarınızı yazmaya devam edebilirsiniz. En üstteki declare() metodu object’in encoding’ini belirtmek için kullanılmaktadır. enconding haricindeki Diğer property’leri namespace kullanılan sayfalarda kullanılamaz!
Bir de childSpace’de use secondSpace ile seconSpace’i çağırdık ve as ss ile secondSpace ismini ss keyword’ne atadık. Değişken tanımlamak gibi düşünürsek $ss = “secondSpace”; dir. Bundan dolayıda artık secondSpace’i ss temsil edecektir. Bu nedenle $conn_open variable’ın da secondSpace\conn_open yerine ss\conn_open kullanılmıştır.
NOT: namespace tanımı üzerinde declare(); metodu hariç hiçbir kod olamaz, aksi taktirde PHP Compiler ERROR dönecektir.
hero isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Sponsored Links
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 03:54.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.