Bu ne zaman PHP ne olacak?

3 Cevap php

Bu, contrived example,

function test()
{
    global $a;
    $a=2;
}

test();

//here $a will report undefined variable

echo $a;

Ben her nasılsa şimdi bu sorunu karşılamak, ama kolay bir şekilde yeniden olamaz!

EDIT

I when ile include ya da benzeri gibi işlemleri ortalama

3 Cevap

Eğer bu iç testi yapmak durumunda olabilir ():

unset($GLOBALS['a']);

Ben belki daha iyi bir durum benzer bir kod örneği sağlamak için yazı güncelleyebilirsiniz, olsa şüphesiz.

Yakın zamanda o da bir dosyayı 'include' ne olur olduğunu söylemek düzenlenebilir.

Dosyalar ve Küreselleşen gerçekten birlikte alamadım. Aslında dışarı ve bir dosya halinde Küresel zorunda. Test1.php bu kod vardı Yani eğer

$a = 5;

ve test2.php bu kod vardı:

$a = 3;

ve test3.php bu kod vardı:

$a = 10;

ve son olarak (Evet, çok sayıda dosya) testMaster.php bu kod vardı

include 'test1.php';
include 'test2.php';
include 'test3.php';
echo $a;

Tanımlanmamış bir değişken hata var olacaktır. Onlara tüm set almak için sırayla her dosyada değişken bir tek küresel gitmek olurdu.

Şimdi, bu bize verdiğin kodu etkilemez olmaz eminim, ya function test() dahil edildi, ve sonra test(); denilen ve şu ondan sonra eğer (2 [{koydu )]}. Ama sen daha ayrı bir dosyada tanımlayabilirsiniz VE çağrı test() if echo $a, bir Küreselleşen hataya neden olur.

Bu sorunuza cevap eğer ben emin değilim, ama evet, bu dahil sisteminde bir kusurdur.

Eğer $a fonksiyonu yerel test() kalmadan yaptığınızda size bahsettiğimiz yerde undefined variable almak için tek yoldur {[(3) }] beyanı.

<?php
function test()
{
    //global $a;
    $a=2;
}

test();

//here $a will report undefined variable

echo $a;
?>

Diğer Eğer fonksiyonunu çağırıyor olabilir test() after echo:

<?php
function test()
{
    global $a;
    $a=2;
}


//here $a will report undefined variable

echo $a;

test();
?>

Değişkeni kendi varlık Basıldığında başlatılmamış ve Notice: Undefined variable: a neden olacaktır

Verdiğiniz pasajı sadece iyi çalışması gerekir. Eğer $a yankılanıyor noktada, onun artık tanımsız ve fonksiyonu bir değer verilmiştir test().