Задать вопрос
jumberi
@jumberi

Как исправить ошибку required parameter follows optional parameter?

итак,учусь на одном сайте создавать сайт с нуля,верстка и бекенд так вот курс старый и создавали на кодеигнитере так вот подошел к концу все работало отлично но теперь при откритии сайта выдает данную ошибку на главной странице
A PHP Error was encountered
Severity: 8192

Message: Required parameter $limit follows optional parameter $slug

Filename: models/Films_model.php

Line Number: 9

Backtrace:

File: C:\xampp\htdocs\movieworld\application\core\MY_Controller.php
Line: 13
Function: model

File: C:\xampp\htdocs\movieworld\application\controllers\Main.php
Line: 8
Function: __construct

File: C:\xampp\htdocs\movieworld\index.php
Line: 315
Function: require_once

A PHP Error was encountered
Severity: 8192

Message: Required parameter $limit follows optional parameter $slug

Filename: models/Serials_model.php

Line Number: 9

Backtrace:

File: C:\xampp\htdocs\movieworld\application\controllers\Main.php
Line: 18
Function: model

File: C:\xampp\htdocs\movieworld\index.php
Line: 315
Function: require_once

а решить никак не могу,на курсе тоже все молчат

вот сами строки в моделях из данных ошибок
модель фильмов
public function getFilms($slug = FALSE, $limit, $type = 1) {
        if($slug === FALSE) {
            $query = $this->db
                ->where('category_id', $type)
                ->order_by('year', 'desc')
                ->limit($limit)
                ->get('movie');

            return $query->result_array();    
        }

        $query = $this->db->get_where('movie', array('slug'=>$slug));
        return $query->row_array();
    }

модель сериалов
public function getSerials($slug = FALSE, $limit, $type = 2) {
        if($slug === FALSE) {
            $query = $this->db
                ->where('category_id', $type)
                ->order_by('add_date', 'desc')
                ->limit($limit)
                ->get('serial');

            return $query->result_array();
        }

        $query = $this->db->get_where('serial', array('slug'=>$slug));
        return $query->row_array();
    }

модель мультиков
public function getAnimations($slug = FALSE, $limit, $type = 3) {
        if($slug === FALSE) {
            $query = $this->db
                ->where('category_id', $type)
                ->order_by('add_date', 'desc')
                ->limit($limit)
                ->get('animation');

            return $query->result_array();
        }

        $query = $this->db->get_where('animation', array('slug'=>$slug));
        return $query->row_array();
    }
  • Вопрос задан
  • 4934 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
Message: Required parameter $limit follows optional parameter $slug

А перевести?

Ошибка простая. Параметры в функциях могут принимать дефолтные значения, выглядит это вот так
function getAnimations($slug = FALSE
Но установленные значения по дефолту должны идти всегда после обязательных значений. В вашем случае необходимо сделать одну из 3-х вещей:
Переместить параметр с дефолтным значением после обязательного параметра:
public function getAnimations($limit, $slug = FALSE, $type = 3) {

Убрать дефолтное значение (скорее всего вы его и так передаете)
public function getAnimations($slug, $limit, $type = 3) {

Установить дефолтное значение для limit
public function getAnimations($slug = FALSE, $limit = 20, $type = 3) {
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вам же английским по белому пишет:
Required parameter $limit follows optional parameter $slug

Обязательный параметр $limit идёт после необязательного параметра $slug

В сигнатурах функций PHP 8 сначала должны идти обязательные параметры, затем необязательные.
https://php.watch/versions/8.0/deprecate-required-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы