$GLOBALS['current_view'] ve global $current_view, hangi neden tercih ediyorlar?
Ben sadece globalleri gibi değişkenleri bildirme konusunda endişelenmenize gerek kalmadan kodu kopyalayıp yapıştırın çünkü Şahsen, ben $GLOBALS['glob'] sözdizimi tercih ederim. (Hatta orada belki sadece genel yapılandırma direktifleri ve ...) en az küresellerle tutmaya çalışmalısınız aklınızda tutun.
Bununla beraber, iki yöntem tam olarak eş anlamlı değildir; hafif bir fark var:
function func() {
var_dump($GLOBALS['glob']);
}
function func2() {
global $glob;
var_dump($glob);
}
Küresel 'glob' yoksa ilk bir uyarı yayacaktır. İkinci bir olmaz.
: Birinci durumda, $GLOBALS['glob'] bir argüman olarak göndermek için derler
3 FETCH_R global $0 'GLOBALS'
4 FETCH_DIM_R $1 $0, 'glob'
Sen GLOBALS ve dizinini glob bir okuma bağlamında getiriliyor konum; Hiçbir değişken oluşturulur.
İkincisi derler
compiled vars: !0 = $glob
...
2 FETCH_W global lock $0 'glob'
3 ASSIGN_REF !0, $0
Eğer küresel glob bir başvuru yaratıyor, bu yüzden yoksa örtülü oluşturulur.
Ayrıca:
function func_unset() {
unset($GLOBALS['glob']);
}
function func2_unset() {
global $glob;
unset($glob);
}
Fonksiyonu func(), küresel, func2_unset sadece oluşturulan başvuru aslında unset yok olacaktır.
func2 çok benzer olduğunu not edin:
function func3() {
$glob =& $GLOBALS['glob'];
}
Bu ancak potansiyel olarak daha az etkilidir. Bu derler
2 FETCH_W global $0 'GLOBALS'
3 FETCH_DIM_W $1 $0, 'glob'
4 ASSIGN_REF !0, $1