可变范围和功能

时间:2010-10-26 09:54:34

标签: php

多年来我做过这样的事情:

的config.php

<?php

   $db = array("user" => "username", "pass" => "password");

的functions.php

<?php
   require_once('config.php');
   function connectToDatabase() {
       $dbc = new PDO($dsn, $db['user'], $db['pass']);
       // Do some stuff ...
   }

我刚刚阅读了PHP手册和SHOULDNT的工作,但多年来它已经有了。是否有任何服务器配置允许它工作?

我刚刚编写了一个新脚本并收到错误。 $ db数组甚至没有初始化。

2 个答案:

答案 0 :(得分:3)

确实,connectToDatabase函数开头的范围内有变量。您也应该收到有关未声明变量的警告。也许它是有效的,因为数据库安装的配置导致它使用默认用户名和密码?

答案 1 :(得分:0)

实际上这应该永远不会工作,即使在较旧的PHP版本中也不能用register_globals

要将全局变量导入函数,需要global $varname;语句,或将变量传递给函数(通常更可取,如globals are bad)。唯一的例外是超级球。

你是否1000%确定它不是这样的:

   function connectToDatabase() {
       require_once('config.php');
       $dbc = new PDO($dsn, $db['user'], $db['pass']);
       // Do some stuff ...
   }