Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
#1

Ошибка наименования функции - PHP ООП

14.06.2018, 12:22. Просмотров 197. Ответов 13
Метки mvc, oop, php (Все метки)

PHP
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
class bootstrap {
    public function __construct() {
        $url = $_GET['url'];
        $url = rtrim($url, '/');
        $url = explode('/', $url);
        $file = __DIR__.'/controllers/'.$url[0].'.php';
        
        if(file_exists($file)) {
            require $file;
        } else {
            require __DIR__.'/controllers/errors.php';
            $controller = new errors();
            return false;
        }
        if(isset($url[2])) {
            $controller->$url[1]($url[2]);
        } else {
        if(isset($url[1])) {
            $controller->$url[1]();
        }
        }
    }
}
($url[]) - Array ( [0] => help [1] => other [2] => 123 )
Fatal error: Uncaught Error: Function name must be a string in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php:18 Stack trace: #0 /home/host1682382/myweb-service.ru/htdocs/dev/index.php(6): bootstrap->__construct() #1 {main} thrown in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php on line 18

18 строка - $controller->$url[1]($url[2]);
В чем может быть проблема,
например /help/other/123 ошибка
например /help/other/ ошибка
например /help/ нет ошибки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2018, 12:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка наименования функции (PHP ООП):

Ошибка в сигнатуре функции
Выводит: Catchable fatal error: Argument 2 passed to Monitor::log() must be an...

Парсинг ошибка функции eval
Добрый день. Объясните мне пожалуйста для чего нижние методы производят...

Ошибка выполнения функции file на Хосте
Доброе время суток уважаемые форумчане! Помогите в следующем вопросе! написал...

Ошибка наименования. Проверьте права доступа
Есть планшет Samsung Galaxy Tab 3 8,0 (SM - T310),встроенная память 16 Гб еще...

Наименования элементов
Не знаю в какой теме форума данный вопрос более уместен. Поэтому начну с этой....

Замена наименования DataGridView
Есть много таблиц DataGridView но код для них одинаковый. Что бы не делать...

13
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,203
14.06.2018, 12:47 #2
PHP
1
$controller->{$url[1]}();
0
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
15.06.2018, 08:59  [ТС] #3
До этой строчки скрипт не доходит даже
0
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,203
15.06.2018, 09:48 #4
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
До этой строчки скрипт не доходит даже
Как может до нее не доходить, если в ней ошибка?
0
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
15.06.2018, 11:54  [ТС] #5
($url[]) - Array ( [0] => help [1] => other [2] => 123 )
Fatal error: Uncaught Error: Function name must be a string in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php:18 Stack trace: #0 /home/host1682382/myweb-service.ru/htdocs/dev/index.php(6): bootstrap->__construct() #1 {main} thrown in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php on line 18

18 строка - $controller->$url[1]($url[2]);
В чем может быть проблема,
например /help/other/123 ошибка
например /help/other/ ошибка
например /help/ нет ошибки

Добавлено через 1 минуту
18 строчка это не
PHP
1
$controller->$url[1]();
, а
PHP
1
$controller->$url[1]($url[2]);
Сделал по аналогии, ошибка та же самая
0
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,203
15.06.2018, 17:07 #6
Исправленный код и текст ошибки в студию
0
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
15.06.2018, 17:09  [ТС] #7
ошибка та же самая
Array ( [0] => help [1] => other )
Fatal error: Uncaught Error: Function name must be a string in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php:21 Stack trace: #0 /home/host1682382/myweb-service.ru/htdocs/dev/index.php(6): bootstrap->__construct() #1 {main} thrown in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php on line 21

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
class bootstrap {
    public function __construct() {
        $url = $_GET['url'];
        $url = rtrim($url, '/');
        $url = explode('/', $url);
        $file = __DIR__.'/controllers/'.$url[0].'.php';
        
        if(file_exists($file)) {
            require $file;
        } else {
            require __DIR__.'/controllers/errors.php';
            $controller = new errors();
            return false;
        }
        print_r($url);
        if(isset($url[2])) {
            $controller->$url[1]($url[2]);
        } else {
        if(isset($url[1])) {
            $controller->$url[1]();
        }
        }
    }
}
0
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,203
15.06.2018, 17:17 #8
Я вижу в точности такой же код как и был
0
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
21.06.2018, 11:40  [ТС] #9
Array ( [0] => help [1] => other )
Fatal error: Uncaught Error: Call to a member function other() on null in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php:21 Stack trace: #0 /home/host1682382/myweb-service.ru/htdocs/dev/index.php(6): bootstrap->__construct() #1 {main} thrown in /home/host1682382/myweb-service.ru/htdocs/dev/system/bootstrap.php on line 21


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
class bootstrap {
    public function __construct() {
        $url = $_GET['url'];
        $url = rtrim($url, '/');
        $url = explode('/', $url);
        $file = __DIR__.'/controllers/'.$url[0].'.php';
        
        if(file_exists($file)) {
            require $file;
        } else {
            require __DIR__.'/controllers/errors.php';
            $controller = new errors();
            return false;
        }
        print_r($url);
        if(isset($url[2])) {
            $controller->{$url[1]}($url[2]);
        } else {
        if(isset($url[1])) {
            $controller->{$url[1]}();
        }
        }
    }
}
0
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,203
21.06.2018, 12:10 #10
Не определена переменная $controller
0
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
21.06.2018, 12:43  [ТС] #11
Почему? если так Array ( [0] => help ), то нет ошибок и я перехожу в контроллер. ошибка возникает если есть после слеша что то, причем не важно создан у меня метод или нет
0
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,203
21.06.2018, 12:55 #12
Владислав-2012, на 18 и 21 строках используется переменная $controller. Где она объявлена?
Если после 16 строки добавитьvar_dump($controller); то будет видно что нет такой переменной.
0
Владислав-2012
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 272
21.06.2018, 13:41  [ТС] #13
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
class bootstrap {
    public function __construct() {
        $url = $_GET['url'];
        $url = rtrim($url, '/');
        $url = explode('/', $url);
        $file = __DIR__.'/controllers/'.$url[0].'.php';
        if(file_exists($file)) {
            require $file;
            $controller = new $url[0];
        } else {
            require __DIR__.'/controllers/errors.php';
            $controller = new errors();
            return false;
        }
       // print_r($url);
       // var_dump($controller);  
 
        if(isset($url[2])) {
            $controller->{$url[1]}($url[2]);
        } else {
            if(isset($url[1])) {
                $controller->{$url[1]}();
            }
        }
    }
}
Если я правильно понимаю, то так правильно, а как сделать если есть метод то делаем, а если нет метода, то общий метод
0
Evgen1337
66 / 66 / 40
Регистрация: 10.12.2017
Сообщений: 254
25.06.2018, 23:12 #14
Надо попробовать тьму фреймворков, чтобы осознать как надо... https://www.slimframework.com/
это смерть:
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
require __DIR__.'/controllers/errors.php';
$controller = new errors();
0
25.06.2018, 23:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2018, 23:12
Привет! Вот еще темы с решениями:

Вывести Наименования поставщиков
Вывести Наименования поставщиков из Нижнего Новгорода, которые поставляют...

Отображение наименования вместо ID
Привет всем. Нужна помощь. У меня есть 2 таблицы: 1. Monitor_Manufactures,...

Генерация наименования файла
Здравствуйте уважаемые. Возникла подобного рода проблема: Не могу придумать...

Заменить цифри на наименования(1=one)
Задан текст, содержащий буквы и цифры. Заменить в нём каждую цифру её словесным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru