/webodası
PHP Dersleri

PHP Dersleri #6: Sabit Değerlerin Tanımlanması

Uzmoon · · 7 dk

PHP dilinde sabit degerler, programin calismasi boyunca degismeyen verileri guvenle saklamak icin kullanilir. Bu derste define() fonksiyonu ve const anahtar kelimesi ile sabit tanimlama kurallarini, veri tiplerini ve dikkat edilmesi gereken noktalari eksiksiz kod ornekleriyle ogreniyoruz.

Bu Dersin Amacı

Bu dersin amacı, PHP programlama dilinde kod akışı boyunca değeri değiştirilemeyen sabitlerin (constants) çalışma prensiplerini kavramak, define() fonksiyonu ile const anahtar kelimesi arasındaki kullanım farklarını öğrenmek ve sabitleri projelerinizde hatasız şekilde tanımlayabilmektir.

Sabit (Constant) Nedir?

PHP programlamada verileri saklamak için değişkenleri kullanırız; ancak değişkenlerin taşıdığı değerler çalışma anında yeniden atanabilir ve değiştirilebilir. Bazı durumlarda ise bir verinin program çalışmaya başladığı andan sonlanana kadar asla değişmemesini, kazara üzerine yeni bir değer yazılmamasını isteriz. İşte bu gibi senaryolarda sabitler (constants) devreye girer.

Sabitler, adından da anlaşılacağı üzere tanımlandıktan sonra içeriği hiçbir şekilde değiştirilemeyen ve bellekten silinemeyen özel veri tutuculardır. Bir veritabanı bağlantı adresi, uygulamanın versiyon numarası, sistemin çalıştığı dizin yolu veya matematiksel bir katsayı gibi tüm uygulama genelinde tutarlı kalması gereken bilgileri saklamak için sabitler tercih edilir.

Sabitlerin Temel Kuralları ve Değişkenlerden Farkları

PHP dilinde sabitler, önceki derslerimizde gördüğümüz standart değişkenlerden belirgin kurallarla ayrılır. Sabitleri kullanırken göz önünde bulundurmanız gereken temel özellikler şunlardır:

define() Fonksiyonu ile Sabit Tanımlama

PHP dilinde sabit oluşturmanın en klasik ve yaygın yollarından biri yerleşik define() fonksiyonunu kullanmaktır. Bu fonksiyon en temel haliyle iki parametre alır: ilk parametre sabitin adı, ikinci parametre ise sabitin alacağı değerdir.

Fonksiyon sözdizimi şu şekildedir:

define("SABIT_ADI", deger);

Modern PHP sürümlerinde (özellikle PHP 8 ve sonrası) sabit isimleri her zaman büyük ve küçük harfe duyarlıdır (case-sensitive). Eski PHP sürümlerinde bulunan üçüncü duyarsızlık parametresi güncel PHP sürümlerinde tamamen kaldırılmıştır. Bu nedenle tanımladığınız sabiti çağırırken harf büyüklüğüne birebir uymanız gerekir.

Aşağıdaki örnekte define() fonksiyonu ile farklı veri türlerinde sabitler tanımlanmış ve ekrana yazdırılmıştır:

<?php

// define() fonksiyonu ile farkli veri tiplerinde sabit tanimlama
define("UYGULAMA_ADI", "Web Odasi");
define("SURUM_NUMARASI", 3);
define("PI_SAYISI", 3.14159);
define("BAKIM_MODU", false);

echo UYGULAMA_ADI;
echo "\n";
echo SURUM_NUMARASI;
echo "\n";
echo PI_SAYISI;
echo "\n";
var_dump(BAKIM_MODU);

Yukarıdaki kodun çıktısı şu şekildedir:

Web Odasi
3
3.14159
bool(false)

const Anahtar Kelimesi ile Sabit Tanımlama

PHP 5.3 sürümüyle birlikte dil sözdizimine giren ve modern PHP mimarisinde sıklıkla tercih edilen ikinci yöntem const anahtar kelimesidir. const ifadesi, bir fonksiyon çağırmak yerine doğrudan dil yapısı seviyesinde sabit tanımlamanıza olanak tanır.

Bu yöntemin temel sözdizimi oldukça yalındır:

const SABIT_ADI = deger;

const ile define() arasındaki en belirgin teknik fark, derleme ve çalışma zamanı davranışıdır. const anahtar kelimesi derleme zamanında (compile-time) çözümlenir; bu sebeple kod bloklarının en üst düzeyinde veya sınıfların içerisinde kullanılır. define() ise çalışma zamanında (run-time) yürütülen bir fonksiyondur.

Modern PHP projelerinde dizileri (array) sabit olarak saklamak oldukça yaygındır. const kullanarak hem skaler değerleri hem de liste halindeki yapılandırma dizilerini pratik biçimde sabitleyebilirsiniz.

Aşağıdaki örnekte const yapısı ile metin, sayı ve dizi içeren sabitlerin tanımlanması gösterilmiştir:

<?php

// const anahtar kelimesi ile yapilandirma sabitleri olusturma
const SUNUCU_ADI = "localhost";
const PORT_NUMARASI = 8080;
const DESTEKLENEN_DILLER = [
    "tr",
    "en",
    "de"
];

echo SUNUCU_ADI;
echo "\n";
echo PORT_NUMARASI;
echo "\n";
print_r(DESTEKLENEN_DILLER);

Yukarıdaki kodun çıktısı şu şekildedir:

localhost
8080
Array
(
    [0] => tr
    [1] => en
    [2] => de
)

Sabit Varlığını Denetleme ve Dinamik Çağırma

Büyük ölçekli projelerde veya modüler sistemlerde bir sabitin daha önce tanımlanıp tanımlanmadığını kontrol etmek isteyebilirsiniz. PHP, bu gereksinim için defined() fonksiyonunu sunar. Bu fonksiyon, parametre olarak verilen sabit adının mevcut olup olmadığını inceler ve geriye mantıksal bir değer (true veya false) döndürür.

Bunun yanı sıra, sabitin adını doğrudan kod içerisine yazmak yerine bir değişkenin değerinden dinamik olarak almak istediğiniz durumlar olabilir. Sabit adları $ işareti barındırmadığı için değişken adı birleştirme yöntemiyle doğrudan çağrılamaz. Bu gibi durumlarda PHP'nin constant() fonksiyonu kullanılır.

Aşağıdaki örnekte bu iki yardımcı fonksiyonun işleyişi detaylandırılmıştır:

<?php

// Onceden bir sabit tanimliyoruz
define("VERITABANI_ADI", "webodasi_db");

// defined() ile sabitin var olup olmadigini denetliyoruz
$mevcutMu = defined("VERITABANI_ADI");
var_dump($mevcutMu);

// constant() ile dinamik isim uzerinden sabite ulasiyoruz
$arananAyar = "VERITABANI_ADI";
$deger = constant($arananAyar);

echo $deger;

Yukarıdaki kodun çıktısı şu şekildedir:

bool(true)
webodasi_db

Sabit İsimlendirme Standartları

PHP dilinde sabit isimleri oluşturulurken değişken kurallarına benzer genel sözdizimi kuralları geçerlidir. Geçerli bir sabit ismi bir harf veya alt çizgi (_) karakteri ile başlamalıdır. İlk karakterden sonra istenildiği kadar harf, rakam ve alt çizgi kullanılabilir; ancak sabit isimleri asla bir rakamla başlayamaz.

Topluluk standartları ve temiz kod (Clean Code) prensiplerine göre, sabitlerin kod içinde bir bakışta ayırt edilebilmesi için şu kurallar benimsenmiştir:

Sık Yapılan Hatalar

Yeni başlayanların sabit tanımlarken ve kullanırken en sık karşılaştığı hatalar şunlardır:

Alıştırma

Bir web sitesinin yapılandırma ayarlarını yönettiğinizi varsayın. Aşağıdaki yönergelere uygun olarak gerekli sabitleri tanımlayınız ve ekrana yazdırınız:

  1. const yapısını kullanarak değeri "Web Odasi Blog" olan bir SITE_BASLIK sabiti tanımlayın.
  2. const yapısını kullanarak değeri 2026 olan bir YAYIN_YILI sabiti tanımlayın.
  3. define() fonksiyonunu kullanarak değeri "admin@webodasi.com" olan bir YONETICI_EPOSTA sabiti tanımlayın.
  4. define() fonksiyonunu kullanarak içinde "PHP", "MySQL" ve "HTML" elemanları bulunan KATEGORILER isimli bir dizi sabiti tanımlayın.
  5. Tanımladığınız tüm sabitlerin değerlerini alt alta ekrana yazdırarak çıktıyı gözlemleyin.

Çözüm

Yukarıdaki gereksinimleri karşılayan eksiksiz ve çalıştırılabilir PHP kodu şu şekildedir:

<?php

// const ile tekil degerlerin tanimlanmasi
const SITE_BASLIK = "Web Odasi Blog";
const YAYIN_YILI = 2026;

// define() ile metin ve dizi sabitlerinin tanimlanmasi
define("YONETICI_EPOSTA", "admin@webodasi.com");
define("KATEGORILER", [
    "PHP",
    "MySQL",
    "HTML"
]);

// Sabit degerlerinin ekrana yazdirilmasi
echo SITE_BASLIK;
echo "\n";
echo YAYIN_YILI;
echo "\n";
echo YONETICI_EPOSTA;
echo "\n";
print_r(KATEGORILER);

Yukarıdaki çözüm kodunun çıktısı şu şekildedir:

Web Odasi Blog
2026
admin@webodasi.com
Array
(
    [0] => PHP
    [1] => MySQL
    [2] => HTML
)

Özet

Bu derste PHP programlama dilinde sabitlerin ne olduğunu ve nasıl tanımlandığını öğrendik:

Yazının tamamını ve yorumları sitede aç