前段时间在用php写一个留言本时就出现了一个问题,当时是解决了,可没有明白原因。今天在看一本php的书时,终于明白了其原因。其实就是变量的作用域的问题。下面我来说一说php变量的一些东东。
<?php
$a = 30;function setNumber()
{
$a = 60;
echo $a."<br />";
}
setNumber();
echo $a;
?>
就比如说上面的一段程序,第一个$a是全局变量,函数setNumber()里的$a就是一个局部变量。全局变量在整个php程序中都有效,局部变量只在函数体内有效。可我们在函数体内却用不了全局变量。
<?php
$a = 30;
function setNumber()
{
$b = 20;
$b += $a;
echo $b."<br />";
}
setNumber();
echo $a;
?>
比如说上面的程序会报错,$a未定义。如果要使用的话,可在上面的程序中加 global $a; 即可。我但是就犯了这样一个错误。
我在一个数据库的类中,比如说是sql.class.php中:
<?php
class SqlHelper
{
……
}
//最后
$db = new SqlHelper();
?>
然后我又在一个functions.php中:
<?php
include 'sql.class.php';
function Search()
{
//直接引用
……
$db->getFields($sql, $fields);
}
?>
肯定的,就出错了。我当时的解决办法就是把sql.class.php中的$db = new SqlHelper();去掉,将这句话写在functions.php,我定义的函数里,我当时没有明白这是什么原因。现在明白了,特意写出来和大家分享啦。