Sihirli Sabitler

Sihirli sabitler, değerleri kullanıldıkları yere göre değişen sabitlerdir. 

İsim Açıklama
__LINE__ Dosyada bu sabitin bulunduğu satırın numarası verir.
__FILE__ Dosyanın tam dosya yolu ve dosya isminin verir. include ile başka bir yerden dahil etseniz bile sabitin bulunduğu dosyanın yolunu gösterir.
__DIR__ Dosyanın bulunduğu dizini verir. include ile başka bir yerden dahil etseniz bile sabitin bulunduğu dosyanın yolunu gösterir.
__FUNCTION__ Fonksiyon ismini verir.
__CLASS__ Sınıf ismini verir.
__TRAIT__ Trait ismini verir.
__METHOD__ Metot ismini verir.
__NAMESPACE__ İsim Alanını gösterir.


Namespace Nedir?

Namespace(İsim Alanı) Nedir?

Kısaca; aynı isimde farklı sınıflar oluşturmak için kullandığımız küme adlarına namespace denir.

İsim alanlarından; sınıflar, fonksiyonlar ve sabitler etkilenir. Çoğunlukla sınıflara tanımlanır.

Örneğin: Hem satıcı hem alıcı bulunduran bir e-ticaret sistemi yazıyoruz. Böyle bir sistemde kullanıcıların, mantıken birbirinden farklı özelliklere sahip olması gerekir. 

lib/musteri/Kullanici.php

<?php
class Kullanici
{
  const TANIM = "Ben müşteri kullanıcısıyım";
}

lib/magaza/Kullanici.php

<?php
class Kullanici
{
  const TANIM = "Ben mağaza kullanıcısıyım";
}

index.php

<?php
require "lib/musteri/Kullanici.php";
require "lib/magaza/Kullanici.php";

İki ayrı sınıfı, aynı dosyada çalıştırmaya çalıştığımız anda PHP bize; "kafam karıştı, bir tane Kullanici sınıfı tanımla" diyecektir. İşte tam burada namespace devreye giriyor.



PHP: Nesne Yönelimli Programlama - Ders 4


Bir önceki yazımda sınıf sabitleri ve static anahtar sözcüğünden bahsetmiştim. Bu yazımda ise sihirli yöntemlerden bahsedeceğim.

Sihirli Yöntemler Nedir? 

Sınflarda, belirli olaylardan sonra tetiklenen özel metot isimlerine Sihirli Yöntemler denir.

Sihirli Yöntemler

İsim Açıklama
__construct() Kurucu metottur. Sınıftan bir nesne yaratıldığında ilk olarak çalışır. Genelde sınıf çalıştığında gerçekleşecek işlemlerin yapıldığı metottur.
__ destruct() Yıkıcı metottur. Sınıfla ilgli bütün işlemler tamamlandıktan sonra çalışır. Genelde, sınıf özelliklerinin temizlenmesinde kullanılır.
__clone() Sınıf nesnesi, clone anahtar sözcüğü ile kopyalanmak istendiğinde tetikilenir.
__toString() Sınıf nesnesi, ekrana yazdırılmak istendiğinde tetiklenir.
__sleep() Sınıf nesnesini serileştirmek( serialize() fonksiyonu kullanıldığında) istendiğinde tetikilenir.
__wakeup() __sleep() metodunun tam tersi unserialize() fonksiyonu kullanıldığında tetikilenir.
__invoke() Sınıf nesnesi, bir metot olarak çağrılırsa tetiklenir.
__set() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özelliğe veri girilirken tetiklenir
__get() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özellik okunurken tetiklenir
__isset() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özelliğe isset() veya empty() fonksiyonları uygulandığında tetiklenir.
__unset() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özelliğe unset() fonksiyonu uygulandığında tetiklenir.
__call() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir metot çağrıldığında tetiklenir.
__callStatic() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir statik metot çağrıldığında tetiklenir.


Z-WAMP - Web Sunucu Paketi

Uzun süredir kendi çalışmalarımı evimdeki linux sunucumda yazıyorum; fakat freelance çalışmaya başladıktan sonra kodlamayı windows bilgisayarımda, XAMPP üzerinde yapar oldum.

Geçen hafta, içinde MongoDB'yi bardındıran bir iş teklifi aldım; fakat hiç bir türlü PHP diline MongoDB'yi entegre edemedim. Verdiği hata ise "bilinmeyen hata". Sorunu çözemeyince, içinde MongoDB de barındıran bir suncu paketi aradım ve Z-WAMP Server'ı buldum.