PHP’nin (muhtemelen) az bilinen 10 özelliği
Bir programlama dilinden beklentileriniz nedir? Size, işlemlerinizi yapabilmeniz için gereken esnekliği sağlayabilmesidir en başta. Yetenekli olmasıdır.

Bu yazımızda da PHP’nin (muhtemelen) az bilinen 10 özelliğine beraberce göz atacağız.
#1: Veri türleri arasında çevrim
PHP’de değişken oluşturduğunuzda, oluşturduğunuz bu değişkenin veri türünü belirtmenize gerek yoktur, $x dersiniz ve değişkeninizi yaratmış olursunuz.
Ancak uygulamanızın ilerleyen safhalarında $x değişkeninin taşıdığı değerin “integer” olduğundan emin olmanız gerekirse ne yaparsınız? Şu şekilde rahatlıkla $x değerini integer yapabilirsiniz:
$x = 35.75; echo (int) $x; //35
#2: Değişken değişkenleri
Bir değişkenin isminin değişken olması gerekirse ne yapabilirsiniz? Tabii ki değişkenin ismini değişken olarak tanımlarsınız!
$banka = “ziraatbank”; $$banka = “bir kamu bankası”; echo $ziraatbank; //bir kamu bankası
Tabi bu özelliği kullanırken güvenlik açığı bırakmamak konusunda iki kez düşünmemiz gerekir!
#3: Değişken isimlerini sayılardan yapmak
PHP’de (ve diğer pek çok dilde) değişken isimlerini sayılardan oluşturamazsınız, $123 gibi. $sayi123 yapabilirsiniz ama $123sayi da yapamazsınız.
$123 yazmak konusunda bir inadınız varsa, değişken değişkenlerini kullanarak bir şeyler yapabiliriz:
$isim = “123”; $$isim = “icerik...”; echo ${“123”}; // icerik...
#4: Fonksiyonları değişkenlere göre çağırmak
Bu belki biraz kafa karıştırıcı olabilir, ama önce şu örneği bir inceleyelim:
function deneme() { echo “bu bir denemedir...”; } $secim = “deneme”; $secim(); //bu bir denemedir...
Normalde secim() isimli bir fonksiyonumuz yok, olsa bile $secim() şeklinde çağrılmaz. Ama burada çağrılacak fonksiyonun ismi, $secim değişkeninde tutulmakta ve onun taşıdığı değere göre ilgili fonksiyon çağrılmakta.
Bu özelliği de kullanırken güvenlik konularını yine iki kez düşünmemiz gerekir.
#5: Sabitler
Değişkenler olduğu gibi sabitler de bulunmaktadır ve kullanımları da yine çok basittir:
define(“YAZAR”, “isa engiz”); echo YAZAR; //isa engiz
Sabitlerin avantajı, uygulamanın ilerleyen bölümlerinde de değiştirilemezler ve kullanırken $ işareti gerektirmezler. Büyük harfler yazılmalarına gerek yoktur ancak sabit olduklarını belrtmek için büyük harf kullanılır.
#6: İkinin katları ile çarpmak ve bölmek
Eğer değişkeninizi ikinin katları ile çarpmak veya bölmek istiyorsanız, bunun için (bana göre) ilginç bir yol bulunmakta:
$sayi = 5; echo $sayi << 3; // 5*2^3 echo $sayi << 6; // 5*2^6 echo $sayi >> 1; // 5/2^1 echo $sayi >> 7; // 5/2^7
#7: Değişken değerlerini referans ile atamak ve değiştirmek
Önce aşağıdaki örneği inceleyelim:
$x = 10; $y = &$x; $y = 20; echo $x; //20
Yaptığımız şey aslında $y değişkeninin içeriğine, referans ile $x değişkeninin adresini atadık ve biz $y değişkenine bir değer vermek istediğimizde bu değer $x değişkenine atanmış oldu.
#8: XOR, yani Exclusive OR
Bir if deyimi içerisinde “or” kullanırken düşünülen mantık: “bu iki değerden biri doğruysa… istenileni yap…” İkisi birden doğruysa yine istenilen işlemi yapar. XOR’un kullanımı işte burada devreye giriyor, “iki değerden yalnızca biri doğruysa… istenileni yap…” Kullanım şekli şuna benzer olacak:
if ($a == 10 XOR $b == 10) { ... ... }
$a veya $b den biri 10 olduğunda işlem gerçekleşecek, ama ikisi birden 10 olursa if deyiminin içerisine girmeyecek…
#9: Pratik if-else kullanımı
İf – Else kod blokları uzun olabilir, yazmak zor gelebilir, o zaman şöyle bir özellik kullanabilirsiniz:
$x = 10; echo $x == 10 ? “doğru”: “yanlış”; //yani... if ($x == 10) { echo “doğru”; } else { echo “yanlış”; }
okunabilirlik açısından normal yazım şekli daha iyi gözüküyor ancak ilki kesinlikle daha pratik.
#10: Fonksiyonlara referans ile değer göndermek
Genelde fonksiyonlar size bir değer geri döndürürler ve kendisine gönderdiğiniz değişkenlere “zarar vermezler”, yani onların değerleri değiştirmezler.
Ama biz bazen değişkenin değerinin değiştirilmesini isteyebiliriz, bu durumda yine değişkenin değerini referans ile göndermeliyiz:
function sayiAyarla(&$deger) { $deger = $deger / 10; } $sayi = 1000; sayiAyarla($sayi); echo $sayi // 100
Sonuç
Görüldüğü üzere PHP’nin pek sık gündeme gelmeyen özellikleri bulunmakta. Bu özellikleri kullanıp kullanmamak tamamen size kalmış, aynen dizi kullanıp kullanmamak gibi… Dizileri kullanmamızın sebebi bize pratiklik sağlamasıdır, bu özellikler de aynı şekilde yerinde kullanıldığında daha “etkili” kod yazmamızı sağlayacaktır.
- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!
PHP’nin (muhtemelen) az bilinen 10 özelliği yazısına 12 Yorum yapılmış.
görüşünü belirt
Arama
E-Posta Aboneliği
RSS Aboneliği
En Çok Yorumlanan Yazılar
- Blogger’da “devamını oku” bağlantısı (21)
- Ajax ile dinamik listeleme (21)
- MySQL’de Transaction ve PHP ile kullanımı (16)
- PHP ile sınırsız alt kategori mantığı (14)
- Kullanıcı dostu url hazırlamak (12)
- PHP’nin (muhtemelen) az bilinen 10 özelliği (12)
- Kullandığınız programlama dili ne kadar popüler? (12)
- MySQL’de “join” kullanımı (11)
- .htaccess konuları [Giriş] (11)
- Blogger’da arama kutusu ekleme (10)
Etiketler
Son Yorumlar
- Doğan Yılmaz: verdiğiniz bilgiler için çok ama çok teşekkür ederim. artık sıkı bir takipçiniz olmaya karar verdim
- omer: delete from kategoriler where id = 5 and ustu = 5 sanırım küçük bi hata yaptınız AND yerine OR olacak DELETE...
- Mustafa Kipergil: Uzun bir sürenşn ardından koodla.com’da yeni yazılarını görmek gerçekten mutlu oldum…...
- Soner Gönül: Güzel olmuş gerçekten !
- sinan: eyvallah..
03 / Haziran / 2008
Çok güzel bir yazı olmuş, teşekkürler.
benim favorim $sayi << 7
hiç duymamıştım…
Bu arada kodlar için mavi arkaplan güzel olmuş
Bu kodlar yaygın olarak kullanılmadığı için doğal olarak bilinmiyor. Bazıları işe yarayabilir ancak şahsen bunları bilmeme rağmen hiç kullanmadım.
Yazı için teşekkürler.. Daha önce yazılmayan bir şeyi yazmışsınız.
Güzel bir yazı olmuş, teşekkürler.
#6 hakkında açıklama yazılabilirdi, ben de yazına katkıda bulunayım
O operatörler “bit kaydırma” olarak geçiyor. C dilinde de var. Örneğin; verdiğin ilk örnekte 5 sayısının ikilik hali (101), 3 sola kaydırılıp boşluklara 0 koyuluyor. Yani 101000 oluyor; o da 5 sayısının 8 katı, yani 40′a denk geliyor. Sağa kaydırmak da benzer şekilde işliyor. Aslında bölme demek biraz eksik kalıyor, çünkü bölme küsüratlı olabilecek bir işlem. Burada ise 5/2 = 2 edecek. Yani tamsayı bölmesi işlemi. Programlarda hız için kullanılan yöntemler bunlar.
İyi çalışmalar.
Katkılarınız için teşekkürler.
İsmail Arı’nın yazdığını yazacaktım ki kendisi güzelce açıklamış.
Ellerine sağlık, kolay gelsin.
güzel makale olmuş

#9,#4,#1 bunlar işe yaraya bilirde diğerlerini nerde kulana bilirim diye düşündüm fakat hiç uygun bi yer bulamadım
birde;
/*Alıntı*/
Bu özelliği de kullanırken güvenlik konularını yine … düşünmemiz gerekir.
/*Alıntı*/
#2 ve #4 de böyle bi cümle kulanmışsın mesela ne gibi acıklar meydana gelebilir ?
İlginiz için teşekkürler.
Güvenlik açığı konusu aslında değişken mantığından geliyor, değişebilir! 2. özellikte değişken ismini dinamik olarak tanımlıyoruz, burada dikkat etmemiz gereken kullanıcının bu değişken ismini değiştirmemesi.
Şöyle bir senaryomuz olsun, kullanıcının doldurduğu bir form alanından gelen verilere göre bazı değişkenler tanımlayıp onun üzerinden işlem yapıyoruz, art niyetli bir kullanıcı bizim beklediğimiz değerden daha farklı bir değer girip hiç hesapta olmayan bir değişken üzerinden işlem yapılmasını sağlayabilir.
4. özellikte aynı şekilde hiç hesapta olmayan bir fonksiyonun çağrılıp çalıştırılmasına neden olabilir. ( uyeSil() veya adminGiris() v.b.)
Tabi art niyetli kişinin böyle bir açıktan faydalanabilmesi için yazılımın kodlarını görmesi gerekir, ama deneme yanılma yöntemiyle kritik fonksiyonların isimlerini de keşfedebilir.
Güvenlik konusunda ilk yapılması gereken kullanıcıdan gelen veya kullanıcının değiştirebileceği bütün değerleri, işleme sokmadan önce kontrolden geçirmektir. Bu ön kontrolde yapılması gereken ise gelen değerle beklenen değeri karşılatırmaktır, beklenenden farklı bir değer gelmişse, muhtemel bir saldırı söz konusu olabilir…
hımm…
teşekkürler hocam
bende , bana çok ilginç gelen bir php kodunu yazayım;
normalde date komutunu herkes bilir. geçmiş bir tarihi bulabilmek için pek çok kimse maketime benzeri fonksiyonlar yazar, genelde karışıktır bu fonksiyonlar. Eğer sadece tarihe ihtiyacınız varsa saat sizin için önemli değilse şu basit fonksiyonu kullanabilirsiniz ;
echo date(“Y-m-d”, strtotime(“10 days ago”));
çok saçma ama 10 gün öncenin tarihini Y-m-d olarak veriyor.
Bazen hayat kurtarıcı olabiliyor, mesela ben 15 gün sisteme girmeyen üyelerin kayıtlarını silerken bu fonksiyonu kullanmıştım.
Evet, 11. özellik olabilir
strtotime() fonksiyonunun manualine baktım, ve ilginç özellikleri var, mesela:
echo strtotime(“now”), “\n”;
echo strtotime(“10 September 2000″), “\n”;
echo strtotime(“+1 day”), “\n”;
echo strtotime(“+1 week”), “\n”;
echo strtotime(“+1 week 2 days 4 hours 2 seconds”), “\n”;
echo strtotime(“next Thursday”), “\n”;
echo strtotime(“last Monday”), “\n”;
Güzel bir fonksiyon olacak bundan sonra..
tskler..