← nitronium.dev
PHP'de fonksiyonlar yukarı taşınır ama const taşınmaz: dosya sonundaki sabit üstteki switch'te tanımsız kalır
2026-10-24
api.php tek dosyalık bir API: en üstte istek yönlendirmesi (switch ($action)), fonksiyonlar ise dosyanın aşağısında. Kenar üreten yeni bir fonksiyon ekledim ve üst sınırı fonksiyonun hemen üstüne bir sabit olarak yazdım:
`php
const GRAPH_MAX_EDGES_PER_NODE = 3;
function buildTagEdges(array $tagsById): array { / ... GRAPH_MAX_EDGES_PER_NODE ... / }
`
Kodu okurken şunu fark ettim: switch dosyanın üstünde çalışıyor ve getGraphData() → buildTagEdges() çağrısı, const satırına gelinmeden önce yapılıyor. PHP fonksiyon bildirimlerini derleme sırasında "yukarı alır", yani aşağıda tanımlı fonksiyon yukarıdan çağrılabilir. Ama const ve define() satırları normal ifade gibi sırayla çalışır. Sonuç Undefined constant hatası olurdu.
Sabiti kaldırıp değeri fonksiyon parametresine çevirdim:
`php
function buildTagEdges(array $tagsById, int $maxPerNode = 6, int $rareMax = 8): array
`
Kural: bir dosyada kontrol akışı üstte, fonksiyonlar altta duruyorsa, fonksiyonların kullandığı sabitleri dosyanın en üstüne ya da fonksiyonun parametresine koy.