PHP和未定义变量的策略

26 浏览
0 Comments

PHP和未定义变量的策略

我是一个从C++转到PHP的程序员。我发现,由于未定义的变量,我失去了大部分的调试时间(还有我的自尊心!)。据我所知,处理这些问题的唯一方法是在执行时观察输出。是否有其他策略能够更早地注意到这些错误(就像在C++中一样,一次编译就能给你所需的所有线索)?

0
0 Comments

问题:PHP中未定义变量的策略

原因:在PHP中,只有在尝试访问变量时才能知道它是否存在。这导致了访问未定义变量的问题。

解决方法:需要重新组织代码,确保所有的代码路径都能导致变量被定义。如果没有合适的默认值,这仍然比使用isset要好,因为如果在最终的if语句中变量名拼写错误,会产生警告。

代码示例:

$line = "default value";
if ($data = file('my_file.txt')) {
    if (count($data) >= 0)
        $line = reset($data);
}
var_dump($line);

如果没有默认值,可以使用null代替,然后在最后的if语句中检查是否为null。

代码示例:

$line = null;
if ($data = file('my_file.txt')) {
    if (count($data) >= 0)
        $line = reset($data);
}
if ($line !== null) { /* ... */ }

当然,可以使用isset来检查变量是否存在。然而,如果代码依赖于此,可能结构不良。与C或Java不同,PHP无法在编译时确定对变量的访问是否有效。

需要注意的是,isset不能告诉你变量是否已设置,它只能告诉你变量是否已设置且不为null。否则,你需要使用get_defined_vars。

解决方法:需要使用静态分析来确定变量在哪里被使用但未初始化。可惜PHP的分析工具不多。

在编写PHP代码时,应该养成始终正确初始化变量的习惯。这样可以避免许多bug。尽量避免将变量设置为垃圾值,因为这样会使编译器无法帮助你。通过重新组织代码,确保变量始终被定义,可以避免许多问题的发生。

0
0 Comments

PHP和未定义变量策略

在开发PHP应用程序时,经常会遇到未定义变量的问题。这种问题通常会导致PHP抛出E_NOTICE错误,给用户带来不好的体验。本文将讨论这个问题的出现原因以及解决方法。

出现原因:

1. 开发人员在编写代码时忽略了变量的定义。

2. 代码中存在逻辑错误,导致变量未被正确初始化或赋值。

3. 代码中存在漏洞,可能导致用户输入的数据未被正确处理,从而导致变量未定义。

解决方法:

1. 将E_NOTICE错误日志记录到文本文件中。可以使用自动化脚本处理这些日志,以指示引发错误的文件和行号。

2. 采用不同的工作流程,避免在代码中出现这些错误。可以通过添加变量定义和初始化的检查来避免未定义变量的问题。

3. 在网站中不应该直接显示错误信息给用户,而是应该将用户重定向到一个静态的错误页面。这样可以避免用户看到敏感信息或者破坏用户体验。

4. 可以在不向用户显示错误信息的情况下记录错误信息。

在PHP开发中,未定义变量是一个常见的问题。为了提高代码质量和用户体验,我们应该采取措施避免出现这种问题,并且在出现问题时能够及时发现和解决。通过记录错误日志和采用适当的工作流程,我们可以有效地处理这些问题,提高应用程序的稳定性和可靠性。

0
0 Comments

PHP和未定义变量策略(PHP and undefined variables strategy)是一个常见的问题,下面是一些解决方法:

1. 使用代码分析工具。许多IDE(例如NetBeans)都会提供帮助。

2. 只需运行代码。PHP没有像C ++那样昂贵的编译步骤。

3. 使用单元测试。常见的副作用包括:代码更好。

4. 设置error_reporting(-1),或在ini文件中设置等效项。

5. 获得xdebug。它不能预防,但堆栈跟踪有助于解决错误。

6. 使用isset()=== null(身份运算符)和守卫子句。

松散和动态类型是该语言的一个特点。PHP并不严格限制类型,但这并不意味着你不能。如果它真的让你烦恼并且你有选择的话,你可以尝试Python,它在类型方面要严格一些。

对于error_reporting(-1)的加一,我以前不知道这个(减号)一!

0