2011-04-02 17 views
5

Tamam, bu aptalca bir soru, ama aptal olma sebebini tam olarak düşünemiyorum.PHP - fonksiyonun sabit değerini sınıf sabitine atayın

const MY_CONSTANT = 'hello constant'; 

neden bir fonksiyonu Kısacası gibi

const MY_FILEPATH = dirname(dirname(__FILE__)) . '/heres-my-file.php'; 
+4

SO'ya hoş geldiniz. Bu konu daha önce derinlemesine tartışılmıştır: http://stackoverflow.com/questions/3960323/why-dont-php-attributes-allow-functions cevap uzunsa :) Her neyse, kesinlikle mümkün değil, ayrılmak isteyebilirsiniz bununla. –

cevap

14

ile bu değeri initialize olamaz: sabitleri değiştirilir ayrıştırma sırasında sürekli olarak bir sınıf düzeyini tanımlamak php olarak

ancak yorumlar yapılırken işlevler yürütülür. Ayrıştırıcı, içeriğin değerini ne ayarlaması gerektiğini bilemez.

+1

Merhaba, teşekkürler. Tamam o zaman mantıklı. Bu tür bir şey yapmak için en iyi uygulama neyin çok olması gerektiği - sabit bir değerin gerekli olduğu ancak bir işlev çağrısından veya bir şeyden tanımlandığı gibi. – David

1

Sabitler değişmezdir. Bu nedenle, işlevler bir sabitin değerini değiştirebilirse sabit olmaz.

+0

Evet, ancak bir sabitin değerini değiştirmeye çalışmıyorum, bunun yerine bir işlevin değeriyle başlatmaya çalışıyorum. – David

+0

Ne demek istediğini anlıyorum. Bununla birlikte, eğer fonksiyon bir sabiti başlatabilirse, teorik olarak değerini değiştirebilir. Çünkü sabit, sınıfta başlatılmalıdır (eğer sınıfta da bildirilmişse). – Nabeel

+0

"Eğer işlev bir sabit başlatabilirse, teorik olarak değerini değiştirebilir". Bu bana pek bir şey ifade etmiyor. Bir sabit başlatılırsa, onun bir sabiti. Eğer başlatılmamışsa, mevcut değildir. Asla bir değişiklik yoktur. – KingCrunch

İlgili konular