Mặc dù Paul mô tả những gì đang diễn ra, tôi sẽ cố giải thích lại.
Khi bạn tạo biến thuộc về một phạm vi cụ thể. Phạm vi là khu vực có thể sử dụng biến.
Ví dụ nếu tôi đã làm điều này
$some_var = 1;
function some_fun()
{
echo $some_var;
}
biến không được phép trong phạm vi chức năng bởi vì nó đã không được tạo ra bên trong hàm. Đối với nó để làm việc bên trong một hàm, bạn phải sử dụng từ khóa toàn cầu vì vậy các ví dụ dưới đây sẽ làm việc
$some_var = 1;
function some_fun()
{
global $some_var; //Call the variable into the function scope!
echo $some_var;
}
Đây là ngược lại, do đó bạn không thể làm như sau
function init()
{
$some_var = true;
}
init();
if($some_var) // this is not defined.
{
}
Có một vài cách xung quanh điều này, nhưng một trong những đơn giản nhất của tất cả là sử dụng mảng $GLOBALS
được cho phép bất cứ nơi nào trong kịch bản khi chúng là biến đặc biệt.
Vì vậy
$GLOBALS['config'] = array(
'Some Car' => 22
);
function do_something()
{
echo $GLOBALS['config']['some Car']; //works
}
Ngoài ra hãy chắc chắn rằng máy chủ của bạn có ký globals tắt trong INI của bạn để bảo mật. http://www.php.net/manual/en/security.globals.php
tuyệt vời.Điều đó đã khắc phục được sự cố: D – ganjan
Hoặc bạn có thể 'require()' tệp từ bên trong chính hàm đó. Điều đó cũng đặt nó vào đúng phạm vi. Tôi không thể nói rằng tôi thực sự khuyên bạn nên làm điều đó, nhưng vấn đề là: khi bạn đưa vào một tệp, nó chạy trong phạm vi câu lệnh include có trong đó. –