【发布时间】: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