Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321

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

14.06.2018, 12:22. Показов 1732. Ответов 13
Метки c, mvc, oop (Все метки)

Студворк — интернет-сервис помощи студентам
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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2018, 12:22
Ответы с готовыми решениями:

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

Наименования элементов
Не знаю в какой теме форума данный вопрос более уместен. Поэтому начну с этой. Хотел написать бота для браузерной игры на AutoIT'е. Можно...

Как приравнять наименования?
Как изменить во всех карточках товара наименование? Чтобы наименование было равно полному наименованию? чтобы как на скринах только во всех...

13
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.06.2018, 12:47
PHP
1
$controller->{$url[1]}();
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
15.06.2018, 08:59  [ТС]
До этой строчки скрипт не доходит даже
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.06.2018, 09:48
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
До этой строчки скрипт не доходит даже
Как может до нее не доходить, если в ней ошибка?
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
15.06.2018, 11:54  [ТС]
($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
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.06.2018, 17:07
Исправленный код и текст ошибки в студию
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
15.06.2018, 17:09  [ТС]
ошибка та же самая
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
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.06.2018, 17:17
Я вижу в точности такой же код как и был
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
21.06.2018, 11:40  [ТС]
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
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
21.06.2018, 12:10
Не определена переменная $controller
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
21.06.2018, 12:43  [ТС]
Почему? если так Array ( [0] => help ), то нет ошибок и я перехожу в контроллер. ошибка возникает если есть после слеша что то, причем не важно создан у меня метод или нет
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
21.06.2018, 12:55
Владислав-2012, на 18 и 21 строках используется переменная $controller. Где она объявлена?
Если после 16 строки добавитьvar_dump($controller); то будет видно что нет такой переменной.
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
21.06.2018, 13:41  [ТС]
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
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
25.06.2018, 23:12
Надо попробовать тьму фреймворков, чтобы осознать как надо... https://www.slimframework.com/
это смерть:
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
require __DIR__.'/controllers/errors.php';
$controller = new errors();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2018, 23:12
Помогаю со студенческими работами здесь

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

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

Определение наименования полей
Добрый день! Прошу подсказку - всю голову сломал уже. Пишу код на VBA, подключаюсь к БД LN. Далее нахожу требуемый документ. Далее...

Проверка уникальности наименования
Здравствуйте, я новичок в программировании 1С. Напишите, пожалуйста, как выполнить пункт 1.1.3. Разработать учебную настройку...

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru