Php 使用未赋值变量是一种糟糕的做法吗

Php 使用未赋值变量是一种糟糕的做法吗,php,Php,在我的代码中,我使用一个php变量来显示错误,例如 我只在有错误时定义变量,所以现在XAMPP显示这个错误 注意:未定义变量:emailError 这只是一个通知,所以在部署代码时,我会禁用通知,或者我可以在之前定义所有内容以使其消失 $emailError = ""; $usernameError = ""; $firstnameError = ""; $lastnameError = ""; $languageError = ""; $passwordError = ""; $usern

在我的代码中,我使用一个php变量来显示错误,例如

我只在有错误时定义变量,所以现在XAMPP显示这个错误
注意:未定义变量:emailError

这只是一个通知,所以在部署代码时,我会禁用通知,或者我可以在之前定义所有内容以使其消失

$emailError = "";
$usernameError = "";
$firstnameError = "";
$lastnameError = "";
$languageError = "";
$passwordError = "";

$username = "";
$firstname = "";
$lastname = "";
$email = "";

但我觉得在我的代码中看到这样的东西很奇怪,所以我的问题是。只在需要时分配变量,但总是试图显示它们,这是一种不好的做法吗?

是的,这是一种不好的做法。如您所示,将其初始化为空字符串是最好的解决方案。或者,您也可以使用类似的:

<?php echo $emailError ?? ''; ?>
<?php if ( ! empty($emailError) ) { ?>
    <span class="error"><?php echo $emailError; ?></span>
<?php } ?>

虽然每次您不确定它是否已定义时都需要这样做,但最好像之前那样初始化它

正如@Jeff所指出的,如果没有错误,您可能根本不想拥有span,在这种情况下,您应该这样做:

<?php echo $emailError ?? ''; ?>
<?php if ( ! empty($emailError) ) { ?>
    <span class="error"><?php echo $emailError; ?></span>
<?php } ?>

是的,这是一种不好的做法。如您所示,将其初始化为空字符串是最好的解决方案。或者,您也可以使用类似的:

<?php echo $emailError ?? ''; ?>
<?php if ( ! empty($emailError) ) { ?>
    <span class="error"><?php echo $emailError; ?></span>
<?php } ?>

虽然每次您不确定它是否已定义时都需要这样做,但最好像之前那样初始化它

正如@Jeff所指出的,如果没有错误,您可能根本不想拥有span,在这种情况下,您应该这样做:

<?php echo $emailError ?? ''; ?>
<?php if ( ! empty($emailError) ) { ?>
    <span class="error"><?php echo $emailError; ?></span>
<?php } ?>

这被认为是不好的做法,因为它增加了出错的机会。一、 但是,始终使用未声明的变量,因为这会缩短代码,如果您习惯了,就不会有问题

当然,您的php设置需要设置为警告(而不是)未声明的变量。您可以使用error_reporting(…)在php本身中(在运行中)实现这一点


最后,这取决于你。如果您是初学者,我建议您初始化所有变量,并享受E_STRICT警告的好处,以便更轻松地调试代码。因为你不会是第一个找了三个小时的人为什么
$place=$p1ace/2
;不起作用。

这被认为是不好的做法,因为它增加了出错的机会。一、 但是,始终使用未声明的变量,因为这会缩短代码,如果您习惯了,就不会有问题

当然,您的php设置需要设置为警告(而不是)未声明的变量。您可以使用error_reporting(…)在php本身中(在运行中)实现这一点


最后,这取决于你。如果您是初学者,我建议您初始化所有变量,并享受E_STRICT警告的好处,以便更轻松地调试代码。因为你不会是第一个找了三个小时的人为什么
$place=$p1ace/2
;不起作用。

是的。始终执行
!empty()
isset()
尝试访问不确定存在的变量时进行检查。从您的代码判断,实际上最好将错误存储在数组中,这样就省去了单独声明每个错误的麻烦,例如,
$errors=[]
然后如果有电子邮件错误,请执行
$errors['email']='…'
that^,加上现在你正在用一个不必要的
垃圾邮件发送你的html。现在可能没有问题,但如果您更改跨度的css(最小高度或其他),您将遇到UI问题。作为支持细节:提供“代码质量”反馈的良好IDE(如PHPStorm)将显示关于可能未定义的变量的通知。在许多其他实践中,这对于创建bug更少、可读性/可维护性更高的代码来说是巨大的。始终执行
!empty()
isset()
尝试访问不确定存在的变量时进行检查。从您的代码判断,实际上最好将错误存储在数组中,这样就省去了单独声明每个错误的麻烦,例如,
$errors=[]
然后如果有电子邮件错误,请执行
$errors['email']='…'
that^,加上现在你正在用一个不必要的
垃圾邮件发送你的html。现在可能没有问题,但如果您更改跨度的css(最小高度或其他),您将遇到UI问题。作为支持细节:提供“代码质量”反馈的良好IDE(如PHPStorm)将显示关于可能未定义的变量的通知。在许多其他实践中,这对于创建错误更少、可读性/可维护性更高的代码来说是巨大的。@Akintundelawale True,该操作符的链接显示了在PHP5中工作的较长形式的三元
isset
检查。在迁移到PHP7时,我错过了空合并操作符的添加。考虑到它的使用频率,感谢您提出!非常感谢你!我还忘了在不需要时不包括span标记,但这是一个很好的例子solution@AkintundeOlawale的确,该操作符的链接显示了在PHP5中工作的较长形式的三元
isset
检查。在移动到PHP7时,我错过了空合并操作符的添加。考虑到它的使用频率,感谢您提出!非常感谢你!我还忘了在不需要的时候不包括span标记,但这是一个很好的解决方案。在这种情况下,我将保持原样,因为我是初学者。在这种情况下,我将保持原样,因为我是初学者。