【发布时间】:2014-01-16 17:21:45
【问题描述】:
是否可以在 C#(可能还有其他)中执行类似于 using 关键字的操作来限制变量范围?我正在试验数据库连接模式,目前正在尝试让它工作:
$db = array(
"server" =>"localhost",
"user" =>"root",
"pass" =>"my_password",
"database" =>"my_database"
);
$pdo = null;
{ // ??? These seem to be completely ignored, no errors, no effect at all
extract($db);
$pdo = new PDO("mysql:host=$server;dbname=$database", $user, $pass);
}
//Do database stuff
我正在使用extract,这通常是个坏主意,所以我试图保护它返回的那些花括号所在的位置。在 C# 中,我可能会做一些 like using (extract($db)) { ... } 的事情,而 extract 返回的任何东西都将被限制在该范围内,但我不知道这在 PHP 中是否可行。我什至不确定 PHP 是否会处理变量。
非常感谢您对此问题的任何见解!
【问题讨论】:
-
将所有内容保存到函数中?
-
我想这会起作用,因为 PHP 的范围似乎仅限于函数。谢谢!
-
或使用数组表示法。至少你会看到变量来自哪里。更喜欢更简洁的代码。
-
@KarolyHorvath 通常我会,但是 PDO 使用字符串连接数据库的奇怪语法会导致:
"mysql:host=".$db["server"].";dbname=".$db["database"]bleh -
你也可以使用常量,不需要函数