Как решить эту ошибку уведомления PHP?

Я получаю сообщение об ошибке PHP. Этот код работал нормально в php 5.3, но затем я обновил свой PHP до PHP 7. Я пытаюсь сделать это, получить URL-адрес по ссылке и просто отобразить параметры, прикрепленные к URL-адресу. Вот код

index.php

<?php
require_once('bootstrap.php');
$bootstrap = new Bootstrap($_GET);
?>

bootstrap.php

<?php
class Bootstrap{
private $controller;
private $action;
private $request;
public function __construct($request){
$this->request = $request;
if($this->request['controller'] == ''){
$this->controller = "Home";
}
elseif($_GET($request['controller'])){
$this->controller = $this->request['controller'];
}
if($this->request['action'] == ''){
$this->action = "index";
} else{
$this->action = $this->request['action'];
}
echo "<br />$this->controller<br />$this->action";
}
?>

Вывод при переходе по URL: localhost / myDir / index.php / abc / def

Примечание: неопределенный индекс: контроллер в /srv/http/myDir/bootstrap.php в строке 8
Примечание: неопределенный индекс: действие в /srv/http/myDir/bootstrap.php в строке 14

Главная
индекс

2

Решение

Тест для empty() … это будет true для 0, ‘0’, false, », пустой массив ()
… и уведомление исчезло также!
… Сделайте то же самое для других ваших ifs и индексов массивов!

if(empty($this->request['action'])) {

Чтобы избежать подобных предупреждений, вы должны также указать значение по умолчанию в ваших методах, функциях и т. Д.:

function ($arg=FALSE, $arg2=TRUE, $arg3=5, ...) {
2

Другие решения

Если ваш код работает нормально & вопрос только для удаления ошибки уведомления, то вы можете использовать error_reporting(0) в сценарии php.

добавлять error_reporting(0) как первое утверждение в вашем PHP-скрипте

0

Проверьте, есть ли isset:
isset($this->request['action'])
isset($this->request['controller'])

Как это :

<?php
class Bootstrap{
private $controller;
private $action;
private $request;
public function __construct($request){
$this->request = $request;
foreach ($request as $key => $value) {
echo $key . " = " . $value;
}
if(isset($this->request['controller']) && $this->request['controller'] == ''){
$this->controller = "Home";
}
elseif(isset($this->request['controller']) && $_GET($request['controller'])){
$this->controller = $this->request['controller'];
}
if(isset($this->request['action']) && $this->request['action'] == ''){
$this->action = "index";
}
else{
$this->action = $this->request['action'];
}
echo "<br />$this->controller<br />$this->action";
}
?>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector