Konular

EBooklar

Farklı modüllerde bulunan sınıf isimlerinin aynı olması durumunda çakışma meydana gelmesinden dolayı namespace ile sınıflara isimlendirmede detaya gidilmiştir. Böylece çakışmanın önüne geçilmiştir.

PHP?de namespace kullanımı

PHP dili bazı zaruri ihtiyaçlardan dolayı namespace özelliğine ihtiyaç duymuştur. Böylece 5.3 sürümü ile 2009 yılında PHP diline namespace özelliği gelmiştir. Aslında tam olarak dile girmesinin sebebi büyük projelerde farklı modüllerde bulunan sınıf isimlerinin aynı olması durumunda çakışma meydana gelmesinden dolayı namespace ile sınıflara isimlendirmede detaya gidilmiştir. Böylece çakışmanın önüne geçilmiştir.

Örneğin

Dosya ismi burhanmt.php olsun içerisinde şöyle bir sınf bulunsun:  

class datetimes {
       function topla($a,$b) {
            //kodlar..
       }
}

 

Şimdi bir dosyamız daha olsun adı utils.php olsun.

Onun içinde de:  

class datetimes {
       function topla($a,$b) {
            //kodlar..
       }
}

  yukarıdaki sınıf bulunsun. Dikkat ettiysek 2 dosyamızda da aynı ad altında (datetimes) adında sınıfımız var.

İşte bu iki dosyayı bir projeye include ile dahil edersek:

include ('utils.php'); //içerisinde datetimes adında bir sınıf var.
include ('burhanmt.php'); //içerisinde datetimes adında bir sınıf var.

İşte budurumda PHP hata verecek ve 2 sınıfın ismi tanımlanan projede aynı olamaz diyecek. Programın çalışmasına izin vermeyecek. Bu durum 3.parti componentleri çok sık kullanan kişilerde baş ağrısı yapmaya başlamıştı. O yüzden firmalar sınıf oluştururken kendi firma yada ürün isimleriyle isimlendiriyorlardı. Şöyle:  

class zend_dateutils {

}

  Şimdi PHP 5.3 ile bu duruma gerek kalmadı. Namespace özelliği geldi. Nasıl kullanıyoruz:

Dosya ismimiz yine burhanmt.php olsun.  

namespace burhanmt {

          class datetimes {
                // kodlar...
          }
}

 

  utils.php dosyasında da aşağıdaki gibi tanımlayalım.

namespace utility {

          class datetimes {
                 // kodlar...
          }
}

 

  Şimdi yukarıdaki sınıfı projemizde kullanmak için: 

include('burhanmt.php');
include('utils.php');

$date1= new burhanmtdatetimes(); // hatasız çalışacak
$date2= new utilitydatetimes(); // hatasız çalışacak

  yaparsak kodlarımız hata almadan çatır çatır çalışır.

 

Bir kullanımı daha var. O daha pratik ve güzel. Use reserved word ile kullanarak. Şöyle:  

include('burhanmt.php');
include('utils.php');

use burhanmtdatetimes;
use utilitydatetimes as mydate;

$date1= new datetimes(); // burhanmt.php içindeki burhanmt namespace adındaki datetimes'i kullanacak.
$date2= new mydate(); //  utils.php içindeki utility namespace altındaki datetimes'i kullacak ama datetimes adında değil de mydate adında.

 

  isimlendirme yaparken C# dilinde daha detaylandırma yapabiliyorduk şöye: 

namespace burhanmt.onemlidosyalar.tarih {
}

  aynısını php ile de yapabiliriz. Tek farkı nokta(.) yerine backslash kullanmak. Şöyle: 

namespace burhanmtonemlidosyalartarih {
}

  Şimdi önemli bir hadise daha var. Bundan muhakkak bahsetmeliyim. O da PHP içerisinde hazır olan global sınıflar var ve bu sınıfları kendi oluşturduğumuz sınıflar içerisinde kullanırken hata alabiliriz. Şöyle: 

namespace App;

class Product {
        public function show () {
               $datetime = new DateTime (); // Fatal error verecek. AppDatetime bulunamadı diyecek. Bunu aşmanın bir yolu var.
        }
}

  Bunu aşmanın yolu:  

namespace App;

class Product {
     public function show () {
            $datetime = new DateTime (); //  "" ifadesi ile onun global bir sınıf olduğunu belirtiyoruz.
      }
}

 

PHP?de namespace kullanımı

  Kaynak

 

Yorumunuzu Ekleyin





  • Kurallı İfadeler (regex Engine)
  • Kurallı İfadeler (regex Engine) ~ 35,313

    Bir regex'in gerçekte nasıl çalıştığını bilmek daha efektif çalışan regex ifadeleri oluşturmamızı ve regex'leri daha isabetli oluşturmamızı sağlar. Bu yazımızda oluşturduğunuz regex ifadelerinin neden beklediğiniz sonuçları vermediğini ve umduğunuz eşleşmeleri yerine getirmediğini öğreneceksiniz. Bu da bizim tabir yerindeyse daha az kafa patlatmamızı ve daha az zaman harcamamızı sağlayacaktır.



  • PHP ile PDF dosya oluşturmak
  • PHP ile PDF dosya oluşturmak ~ 28,216

    Php ile yeni bir pdf dosyası oluşturmak : Öncelikle php ile pdf işlemleri yapmak için bir pdf kütüphanesine ihtiyacınız olacak



  • PHP nedir?
  • PHP nedir? ~ 27,064

    HTML kodlarının arasına yerleştirilmiş php kodlarından ayrıştırıp işleyerek sonuçta saf HTML formatında bir çıktı üretmek ve Web sunucusuna iletmektir.


  • $_FILES
  • $_FILES ~ 25,844

    Örnek kod ve açıklamalar



  • Oop - Nesne Yönelimli Programlama
  • Oop - Nesne Yönelimli Programlama ~ 22,000

    Artık ister istemez her programcının bulaştığı bu teknik hakkında sayısız makale yazılmıştır bu güne kadar. Bu makale de onlardan biri


  • Xampp Kurulumu ~ 21,423

    Xampp apache, mysql, php ve phpmyadmin için kolay ve basit kurulum sağlayan bir uygulamadır.




  • Php ile Oturum Yönetimi (SESSION)
  • Php ile Oturum Yönetimi (SESSION) ~ 20,318

    Türkçesi oturum anlamına gelen session bilgilerin saklanması için kullanılan mantıksal bir nesnedir.Session oturum yönetimini kullanarak şifreli sayfalar oluşturarak ve bu sayfaları belirlediğiniz kullanıcıların görmesini sağlayabilirsiniz.


  • Verileri doğrulamak için PHP ile filtreleme işlemleri
  • Verileri doğrulamak için PHP ile filtreleme işlemleri ~ 20,307

    Ziyaretçilerden gelen verilerin istediğimiz formata uygunluğunu kontrol etmeliyiz ki, güvenlik açığı yaratmayalım. E-postaları, web adreslerini, bilgi girişlerini ve dahasını Her birine uygun farklı fonksiyonlar yazıldı bu vakte kadar. Ancak PHP 5.2.0 ve üstü sürümlerde bu fonksiyonlara gereksinim azaldı. Çünkü PHP filtreleme fonksiyonları standart oldu.


  • Php İle Excel Dosyası Oluşturmak
  • Php İle Excel Dosyası Oluşturmak ~ 20,129

    Genelde, herhangi bir biçimlendirme söz konusu olmadığında, veritabanındaki bir bilgiyi ya da başka bir tabloyu excel ortamına aktarmak için csv yöntemini kullanırım. Bu yöntem herkesin bildiği gibi, her sütunu tab ya da noktalı virgül gibi bir karakterle ve her satırı da enter karakteri ile bölmekten ibaret. Ama biçimlendirme söz konusu olduğunda, mesela sütunlara bir genişlik vermek, yazıları bold yapmak, bazı hücreleri sayı ya da para tipine çevirmek gibi biçimlendirmelerde bu yöntem işe yaramamakta.


  • $_SERVER
  • $_SERVER ~ 19,933

    $_SERVER host bilgileri, header bilgileri, yollar ve script yolları gibi bilgileri içeren bir dizidir. Bu dizideki değerler web server tarafından üretilir. Tüm server yazılımlarının, tüm değerleri atayacağına dair bir kesinlik yoktur. Yazılım bazılarını atamayabilir, veyahut burada anlatılacak değerlerin haricinde değerler ekleyebilir


  • En iyi 25 php template motoru
  • En iyi 25 php template motoru ~ 19,544

    Php tabanlı web siteleri dizayn ederken, php kodlarını html kodlar arasına gömeriz. Fakat gün gelir bu kodları düzenlemek istediğimizde çok büyük bir çaba gerektirir. Bu tarz durumlarla başa çıkabilmek için ve daha kararlı bir sistem kodlamak için tema sistemleri geliştirebilirsiniz. Tema sistemi ya da motorlarının asıl amacı, php kodları ile html kodlarını birbirinden ayırmaktır. Böylece hangi kod üzerinde değişiklik yapmanız gerekiyorsa, kendisine ait dosyalarını açarak bu işlemi gerçekleştirebilirsiniz


  • Php Mysql to XML
  • Php Mysql to XML ~ 19,265

    Bu yapıyı geliştirerek mysql veritabanınızdaki datalarınızı xml standartlarına dönüştürebilirsiniz.



  • Dizi Tanımlamaları
  • Dizi Tanımlamaları ~ 19,187

    PHP’de array tanımlayıcısını kullanarak içerisinde elemanları yerleştirmek yoluyla ya da index numarasını köşeli parantezler içerisinde belirterek atama yaparak dizi oluşturmak mümkündür









  • $_REQUEST
  • $_REQUEST ~ 16,400

    $_GET, $_POST, ve $_COOKIE değişkenlerini içeriğinden meydana gelen çağrışımlı bir dizidir. Bu değişken bir superglobal olduğu için tüm alanlarda (scope) geçerlidir ve bundan dolayıdır ki global $_REQUEST ; şeklinde bir tanımlamaya ihtiyaç duymaz. Eğer register_globals değişkeni php. İni de ayarlanmışsa bu değişken her yerde (Global Scope) kullanılabilir