Web geliştirme dünyasına adım attığınızda ve PHP öğrenmeye başladığınızda, verileri depolamak için değişkenleri (variables) kullanmayı hızla öğrenirsiniz. Ancak her veri değişime açık değildir. Gerçek hayatta cebinizdeki para miktarı sürekli değişebilir (bu bir değişkendir), ancak T.C. Kimlik Numaranız veya doğum tarihiniz asla değişmez (bu bir sabittir).
İşte programlama dünyasında da, uygulamanızın çalışması boyunca asla değişmemesi gereken bazı temel değerlere ihtiyaç duyarsınız. Bu yazımızda, PHP’de sabitlerin (constants) ne olduğunu, nasıl kullanıldıklarını ve değişkenlerden hangi yönleriyle ayrıldıklarını detaylı örneklerle, ilk defa öğrenen birinin kolayca kavrayabileceği bir dilde inceleyeceğiz.
Sabit (Constant) Nedir?
En basit tanımıyla sabitler (constants), değerleri sabit kalan ve programın çalışması boyunca asla değişmeyen veriler için kullanılan PHP taşıyıcılarıdır.
Bir web sitesi kodlarken bazı verilerin önceden belli olduğunu ve sitenin hiçbir sayfasında değişmemesi gerektiğini bilirsiniz. Sabitler, önceden bilinen ve uygulamanızın içinde birçok yerde “değiştirilmeden” kullanılan bu veriler için oluşturulmuştur. Eğer kodunuzun bir yerinde yanlışlıkla bu değeri değiştirmeye çalışırsanız, PHP size bir hata fırlatarak bu verinin koruma altında olduğunu hatırlatır.
Sabitler (Constants) ve Değişkenler (Variables) Arasındaki Farklar Nelerdir?
PHP’de değişkenler ve sabitler veri saklamak için kullanılsa da, aralarında çok keskin ve mimari farklar bulunur:
- Kalıcılık ve Değiştirilemezlik: Değişkenler geçici depolama birimleridir; betiğin çalışması süresince değerleri sürekli güncellenebilir. Sabitler ise çok daha kalıcıdır; değerleri bir kez atandıktan sonra betiğinizde birden çok kez başvurulmak üzere sabit kalır.
- Hafızadan Silinme: İşiniz biten bir değişkeni hafızadan (RAM) temizlemek için PHP’de
unset()fonksiyonunu kullanabilirsiniz. Ancak değişkenlerin aksine, sabitlerunset()ile silinemezler. - Dolar İşareti (
$) Kullanımı: PHP’de bir değişken oluştururken başına mutlaka dolar işareti ($) koymak zorundasınızdır. Ancak sabit isimleri belirlenirken$öneki kesinlikle kullanılmaz, bu kural sabitler için geçerli değildir. - Dinamik İsimlendirme: PHP’de kod çalışırken değişkenlerin isimlerini dinamik olarak (örneğin başka bir değişkenden türeterek) oluşturabilirsiniz. Ancak sabitlerin isimleri dinamik olarak oluşturulamaz, kodun yazım aşamasında kesin ve net olarak belirtilmelidir.
PHP’de Sabit Nasıl Tanımlanır? (define Fonksiyonu)
PHP’de bir sabit oluşturmak için dile yerleşik olarak gelen define() fonksiyonu kullanılır.
define() fonksiyonu temel olarak iki argüman (parametre) kabul eder:
- Sabitin Adı: Sabite vereceğiniz isim.
- Sabitin Değeri: Bu sabitin içinde saklanacak olan veri (metin, tam sayı, ondalıklı sayı vb.).
İsimlendirme Kuralları: Sabit isimleri, başındaki $ işaretinin olmaması haricinde değişkenlerle tamamen aynı kurallara uyar. Yani bir sabit ismi mutlaka bir harf veya alt çizgi (_) ile başlamalıdır; rakamla veya özel bir karakterle başlayamaz.
Önemli Bir Yazılım Standardı: Geleneksel olarak (ve yazılımcılar arası evrensel bir kural olarak), sabit isimleri betik içindeki “normal” değişkenlerden kolayca ayırt edilebilmeleri için genellikle tamamen büyük harflerle yazılır.
Bunu pratik bir kod örneğiyle pekiştirelim:
<?php
// Sabitlerimizi define() fonksiyonu ile tanımlıyoruz
define('PROGRAM_ADI', 'The Matrix');
define('VERSIYON', 11.7);
// Sabitleri ekrana yazdırıyoruz
// Çıktı: Welcome to The Matrix (version 11.7)
echo 'Welcome to ' . PROGRAM_ADI . ' (version ' . VERSIYON . ')';
?>
Yukarıdaki örnekte, PROGRAM_ADI ve VERSIYON adında iki sabit oluşturduk. Bu sabitleri echo ile ekrana yazdırırken başlarında $ işareti kullanmadığımıza ve isimlerinin tamamen büyük harflerden oluştuğuna dikkat edin. Artık programın hiçbir yerinde VERSIYON sabitini 11.8 yapamazsınız; o değer program sonlanana kadar 11.7 olarak kilitlenmiştir.
Hangi Durumlarda Sabit Kullanmalıyız?
“Neden sadece değişken kullanıp geçmiyorum ki?” diye düşünebilirsiniz. Ancak büyük ve profesyonel projelerde sabit kullanmak, kodun güvenliğini ve yönetilebilirliğini inanılmaz derecede artırır. İyi sabit adayları şunlardır:
- Yapılandırma (Configuration) Ayarları: Web sitenizin veritabanına bağlanması için gereken veritabanı adı, kullanıcı adı ve şifre gibi bilgiler asla değişmez. Bunları sabit yapmak, yanlışlıkla kodun bir yerinde şifrenin üzerine başka bir metin yazılmasını engeller.
- Versiyon Numaraları: Uygulamanızın versiyon numarası (Örn:
1.0.5) kod çalışırken değişmez. - Hata Ayıklama (Debug) ve Log Seviyeleri: Sistemin hangi seviyede log (kayıt) tutacağını belirten ayarlar. Örneğin, PHP’nin kendi içindeki hata raporlama seviyeleri bile
E_ALL,E_NOTICEgibi tamamen büyük harflerle yazılmış yerleşik sabitlerle yönetilir. - Fiziksel ve Matematiksel Formüller: Pi sayısı (3.14159), KDV oranı, veya bir günün saniye cinsinden karşılığı (86400) gibi bilimsel gerçekler formüllerde kullanılmak üzere sabitlenebilir.
Örnek Veritabanı Yapılandırması:
<?php
// Bir web sitesinin asla değişmemesi gereken ana ayarları
define('DB_HOST', 'localhost');
define('DB_KULLANICI', 'root');
define('DB_SIFRE', 'cok_gizli_sifre123');
define('SITE_URL', 'https://www.ornekwebsitesi.com');
// Artık veritabanına bağlanırken güvenle bu sabitleri kullanabiliriz
// $baglanti = new mysqli(DB_HOST, DB_KULLANICI, DB_SIFRE);
?>
Modern PHP: Sınıf Sabitleri (Class Constants) ve Tipli Sabitler
PHP dünyası sürekli olarak gelişmektedir. Nesne Yönelimli Programlama (OOP) kavramına geçtiğinizde, sabitleri sadece dışarıda değil, aynı zamanda Sınıfların (Classes) içinde de tanımlayabileceğinizi göreceksiniz. Sınıf içinde sabit tanımlarken define() yerine const anahtar kelimesi kullanılır.
Üstelik dilin güncel sürümlerinde bu özellikler çok daha güçlü hale getirilmiştir. Örneğin, Kasım 2023’te piyasaya sürülen modern PHP 8.3 sürümü ile birlikte, nesne yönelimli programlama dünyasına “Tipli Sınıf Sabitleri” (Typed Class Constants) özelliği eklenmiştir. Bu modern özellik sayesinde, bir sabitin sadece değerini değil, aynı zamanda onun kesinlikle bir “Metin (String)” mi yoksa “Tam Sayı (Integer)” mı olması gerektiğini de zorunlu kılarak güvenliği bir kat daha artırabilirsiniz.
Sihirli Sabitler (Magic Constants) Nedir?
PHP eğitim müfredatlarında karşınıza çıkacak bir diğer ilginç kavram ise “Sihirli Sabitler” (Magic Constants) kavramıdır. Standart sabitlerin değerleri asla değişmezken, sihirli sabitlerin değerleri kodun neresinde kullanıldıklarına bağlı olarak PHP tarafından otomatik olarak değiştirilir. Başlarında ve sonlarında çift alt çizgi bulunur.
En popüler sihirli sabit örnekleri şunlardır:
__LINE__: Bu sabiti kodun neresine yazarsanız, size o an bulunduğu satır numarasını tam sayı olarak verir. Hata ayıklarken çok faydalıdır.__FILE__: Çalışmakta olan PHP dosyasının bilgisayarınızdaki (veya sunucudaki) tam yolunu (C:\xampp\htdocs\site\index.php gibi) verir.__DIR__: Çalışan dosyanın bulunduğu klasörün yolunu verir.
Sonuç
PHP’de sabitler (constants), uygulamanızın temel yapı taşlarını ve değiştirilmesini istemediğiniz ayarlarını koruma altına almak için mükemmel bir araçtır. define() fonksiyonunu kullanarak, tamamen büyük harflerle isimlendirdiğiniz ve $ işareti kullanmadığınız verilerinizi sisteminizde güvenle tutabilirsiniz. Değişkenleri uygulamanızın “kan akışı” olarak görüyorsanız, sabitleri de bu uygulamanın “kemik yapısı” olarak düşünebilirsiniz. Sabitlerin bu güçlü ve sarsılmaz yapısını öğrenmek, SEO uyumlu, hatasız ve profesyonel PHP web uygulamaları geliştirme yolunda atılmış en sağlam adımlardan biridir.






