2016-04-08 4 views
2

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

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-адресу: локальная/Mydir/index.php/а/Защита

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

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

+0

Возможный дубликат [Ссылка - Что означает эта ошибка в PHP?] (http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) –

ответ

2

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

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

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

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

Спасибо ... :) – Beevk

0

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

Добавить error_reporting(0) в качестве первого заявления в вашем PHP скрипт

+0

Его v ery плохое «обходное решение», если он когда-либо должен перейти на другой язык программирования, такой как C или Java. Он просто скрывает ошибку/предупреждение, но не решает его. –

+0

НЕТ! Это плохая практика программирования. Вы можете сделать это при входе в сеть (но тогда все эти предупреждения и уведомления в любом случае должны быть устаревшими) – djot

+0

На самом деле это не работает. Он должен отображать abc вместо Home и def вместо этого в индексе. Таким образом, я думаю, что ошибка также влияет на результат. – Beevk

0

тест, если Исеть: 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"; 
    } 
?> 
Смежные вопросы