Я получаю сообщение об ошибке 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
Главная
индекс
Тест для empty()
… это будет true
для 0, ‘0’, false, », пустой массив ()
… и уведомление исчезло также!
… Сделайте то же самое для других ваших ifs и индексов массивов!
if(empty($this->request['action'])) {
Чтобы избежать подобных предупреждений, вы должны также указать значение по умолчанию в ваших методах, функциях и т. Д.:
function ($arg=FALSE, $arg2=TRUE, $arg3=5, ...) {
Если ваш код работает нормально & вопрос только для удаления ошибки уведомления, то вы можете использовать error_reporting(0)
в сценарии php.
добавлять error_reporting(0)
как первое утверждение в вашем PHP-скрипте
Проверьте, есть ли 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";
}
?>