【问题标题】:ErrorException Undefined variable After moving to laravel helper functionsErrorException 未定义变量 移至 laravel 辅助函数后
【发布时间】:2019-11-10 14:19:57
【问题描述】:

我有一个旧网站,它曾经是香草 php。我迁移到 laravel 将整个代码放在视图中的“旧文件夹”下,并且我有一个包含很多功能的文件夹。

此时一切正常。

为了更进一步,我将视图中的文件夹中的函数移到了助手中。现在我在代码库中到处重复出现一些类型的错误,我正在调试它们,但它们很多,我不知道为什么现在而不是之前抛出它们。

例如,如果出现以下情况,现在会引发错误:

  • 访问数组的未定义索引

    $a = $_GET['a'];

  • 对象的未定义属性被访问

    $a = $b->c;

  • 我尝试将未设置的变量加入队列

    $a .= "例子";

  • 在未设置的变量上调用 foreach

  • 函数传递了一个未设置的变量

这是我的路线/web.php

Route::get('{path?}', 'LegacyPagesController@show')->where('path', '.+');
Route::post('{path?}', 'LegacyPagesController@show')->where('path', '.+');

LegacyPagesController

public function show($path='index.php')
{
  ob_start();
  require(base_path('resources/views/legacy-pages/').$path);
  return ob_get_clean();
}

我已将帮助程序作为无类函数集合放在 App\Helpers\ExampleHelper.php 和 composer.json 中

"autoload": {
    "files": [
        "app/Helpers/ExampleHelper.php",

我不确定这些错误是否与新助手有关,或者我的路由错误,或者是否涉及其他任何内容,例如 php 版本或 php.ini 配置。任何建议表示赞赏。

【问题讨论】:

  • 你使用的是什么版本的 PHP 和 Laravel?我猜当你迁移到 laravel 时,它需要更高版本的 PHP,它现在会抛出错误而不是警告。
  • 我搬到 laravel 并在不同的时刻升级到 php 7,一切正常。现在我只移动了 helpers 函数,但是已经过去了很多时间,并且 Web 服务器上可能有一些我不知道的变化。无论如何 laravel 5.2 和 php 7.2
  • 听起来您的 php 错误报告设置已更改为显示通知。否则可能是您的环境已启用调试。
  • 他们不只是显示,他们正在阻止执行。通知可以做到这一点吗?确实启用了调试,因为它是我在这些更改之前的测试环境
  • 只有在启用 strict 时才应该阻止。

标签: php laravel laravel-5 php-7.2


【解决方案1】:

要删除您看到的错误消息,只需像这样更改您的 error_reporting 变量:

ini_set('error_reporting', E_ALL & ~E_STRICT);

建议打开它并修复错误,因为它确实是错误,php 足够聪明,可以为您处理它们。 这个answer 显示了 php 团队推荐的设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2018-01-26
    • 2020-09-24
    • 2018-12-12
    • 2019-09-03
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多