kas*_*ord 21 php string initialization
在C#中,我采用了以下初始化空字符串的方法:
string account = string.empty;
Run Code Online (Sandbox Code Playgroud)
而不是
string account = "";
Run Code Online (Sandbox Code Playgroud)
根据我的导师和我讨论过的其他C#开发人员,第一种方法是更好的做法.
也就是说,有没有更好的方法来初始化PHP中的空字符串?目前,我看到以下广泛使用:
$account = '';
Run Code Online (Sandbox Code Playgroud)
谢谢.
Wes*_*rch 30
你正在做的是正确的.关于它的说法不多.
例:
$account = '';
if ($condition) $account .= 'Some text';
echo $account;
Run Code Online (Sandbox Code Playgroud)
你可能会变得愚蠢并做这样的事情:
$str = (string) NULL;
Run Code Online (Sandbox Code Playgroud)
..但这完全没有意义,而且它完全相同 - 一个空字符串.
你说得对.
在大多数情况下,这是无关紧要的.与许多语言不同,在PHP中(通常)是否初始化变量并不重要.PHP将自动转换未初始化(甚至未声明)的变量,以便立即使用.例如,以下都是正确的:
$a;
$a + 7; // Evaluates to 7
$a . "This is a test."; // Evaluates to "This is a test."
if (! $a) {} // Evaluates as true
Run Code Online (Sandbox Code Playgroud)
需要注意的是,select函数检查变量类型(严格等式检查,===).例如,以下操作失败:
$a;
if (is_string($a)) {
print 'success';
}
else {
print 'fail';
}
Run Code Online (Sandbox Code Playgroud)
然而,这种便利性成本很高.与严格键入(或者至少是"更严格"类型)的语言不同,核心语言本身没有任何东西可以帮助您捕获常见的程序员错误.例如,以下将很乐意执行,但可能不如预期:
$isLoggedIn = getLoginStatus($user);
if ($isLogedIn) {
// Will never run
showOrder($user);
}
else {
showLoginForm();
}
Run Code Online (Sandbox Code Playgroud)
如果您选择初始化所有变量,请按照您的方式执行.但随后启用PHP通知(E_NOTICE)以获取有关未初始化变量的运行时警告.如果你不这样做,你基本上就是在浪费时间和按键来初始化你自己的变量.