Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (4) 1 2 [3] 4  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как устранить ошибку: «call_user_func_array() expe, Как устранить ошибку: «call_user_func_array() expects parame
bespeco  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 8 месяцев, 28 дней
Карма:




Всё понимаю , а сказать не могу ! Так я разбираюсь в php.
Вот файл router.php
<?php

/**
* Класс Router
* Компонент для работы с маршрутами
*/

class Router
{

/**
* Свойство для хранения массива роутов
*
@var array
*/

private $routes;

/**
* Конструктор
*/

public function __construct()
{
// Путь к файлу с роутами
$routesPath = ROOT . '/config/routes.php';

// Получаем роуты из файла
$this->routes = include($routesPath);
}

/**
* Возвращает строку запроса
*/

private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}


/**
* Метод для обработки запроса
*/

public function run()
{
// Получаем строку запроса
$uri = $this->getURI();

// Проверяем наличие такого запроса в массиве маршрутов (routes.php)
foreach ($this->routes as $uriPattern => $path) {

// Сравниваем $uriPattern и $uri
if (preg_match("~$uriPattern~", $uri)) {

// Получаем внутренний путь из внешнего согласно правилу.
$internalRoute = preg_replace("~$uriPattern~", $path, $uri);
echo $uri; //Если ввести не правильный адрес в строке
//пример:www.eshopper.ru/12345 результат 12345
//это есть не существующий адрес!правильно?
//Здесь можно перенаправить результат на страницу 404?
//хостинг виртуальный и не поддерживает страницы ошибок.

// Определить контроллер, action, параметры


$segments = explode('/', $internalRoute);

$controllerName = array_shift($segments) . 'Controller';
$controllerName = ucfirst($controllerName);

$actionName = 'action' . ucfirst(array_shift($segments));

$parameters = $segments;

// Подключить файл класса-контроллера
$controllerFile = ROOT . '/controllers/' .
$controllerName . '.php';

if (file_exists($controllerFile)){
include_once($controllerFile);
}

// Создать объект, вызвать метод (т.е. action)
$controllerObject = new $controllerName;

/* Вызываем необходимый метод ($actionName) у определенного
* класса ($controllerObject) с заданными ($parameters) параметрами
*/


$result = call_user_func_array(array($controllerObject, $actionName), $parameters);

// Если метод контроллера успешно вызван, завершаем работу роутера
if ($result != null) {
break;
}
}
}
}

}


PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bespeco  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 8 месяцев, 28 дней
Карма:




Просто ужас, делал одно сломал другое . Кто подскажет что это за полоса вверху страницы , как обнаружить ошибку. user posted image

Это сообщение отредактировал bespeco - 11.09.2016 - 19:24
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16109
Пользователь №: 6543
На форуме: 8 лет, 7 месяцев, 26 дней
Карма: 303

Трезвый :
6 лет, 5 месяцев, 5 дней


Цитата (bespeco @ 11.09.2016 - 15:21)
Кто подскажет что это за полоса вверху страницы , как обнаружить ошибку

Скорее всего это что то попало выше доктайпа, посмотри HTML в браузере.

Покажи, что в роутах прописано у тебя. Там вся бяда.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bespeco  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 8 месяцев, 28 дней
Карма:




Цитата (twin @ 12.09.2016 - 11:28)
Цитата (bespeco @ 11.09.2016 - 15:21)
Кто подскажет что это за полоса вверху страницы , как обнаружить ошибку

Скорее всего это что то попало выше доктайпа, посмотри HTML в браузере.

Покажи, что в роутах прописано у тебя. Там вся бяда.

    // Управление заказами:    
'admin/order/update/([0-9]+)' => 'adminOrder/update/$1',
'admin/order/delete/([0-9]+)' => 'adminOrder/delete/$1',
'admin/order/view/([0-9]+)' => 'adminOrder/view/$1',
'admin/order' => 'adminOrder/index',
// Управление пользователями:
'admin/registered' => 'adminRegistered/index',

А код вот:user posted image
Почему-то head не раскрывается при нажатии на треугольничек!user posted image
На этой странице раскрывается и треугольничек даже есть .

Это сообщение отредактировал bespeco - 12.09.2016 - 13:02
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bespeco  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 8 месяцев, 28 дней
Карма:




Свершилось чудо , открыл в Notepad++ файлы страниц и сохранил без BOOM. Отключил в роутере
                // Если метод контроллера успешно вызван, завершаем работу роутера
if ($result != null) {
break;

И выдало ошибку :
Cannot modify header information - headers already sent by
По этой ошибке и нашел решение здесь:
http://ru.stackoverflow.com/questions/2845...already-sent-by
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Гость_Илья  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Для решения этой проблемы:

Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'SiteController' does not have a method 'actionIndexcsite'


Нужно заменить
~$uriPattern~
на
~^$uriPattern$~


И будет счастье ;)
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
xavierz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 1
Пользователь №: 43508
На форуме: 7 месяцев, 9 дней
Карма:




Столкнулся сегодня с данной проблемой и решил поделиться ее решением (вдруг кому-то пригодится).

Здесь дело скорее всего в экшене SiteController'а (actionContact). Если он ничего не возвращает, то в переменную $result, которую определяем как
$result = call_user_func_array(array($controllerObject, $actionName), $parameters);
ничего и не возвращается. Следовательно условие, следующее сразу за ним
if ($result != null) {
break;
}

не выполняется, т.е. не выполняется break. Поэтому продолжается работа цикла, который на последнем шаге проверяет выполнение условия
if (preg_match("~$uriPattern~", $uri))
а т.к. $uriPattern на последнем шаге будет равен '' (пустая строка), то условие будет верным, ну и дальше появляется наша проблема.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









после вывода файла с HTML верни return true; чтобы роутер остановил обход роутов
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SlavaFr  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1553
Пользователь №: 22453
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 105




Цитата (RomanRomanov @ 19.01.2016 - 19:31)
четвертый день с этой ошибкой плаваю, менял, переписывал

Ну вообще то должно хватить часа для того, чтобы сделать дебуг метода run в Routere и посмотреть что он выдаёт, что пердаётся в роутер, почему метод другой и всё прочее. Если тебе Monolog или Loggermanager слишком сложен, то хотябы при помощи echo или file_put_contents.
К стати, не хорошо использовать слэш в preg_match("/^$uriPattern$/", $uri), так как $uriPattern тоже содержит слэши. Всё бы это можно было выяснить, если бы ты просто пронаблюдал каким образом появляются и изменяются те или другие переменные при преобразование из $_SERVER['REQUEST_URI']... Всё находится всего в 90 строчках https://github.com/Roman-Romanov97/phpshop/...ents/Router.php


--------------------
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Intrerio  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 41503
На форуме: 1 год, 11 месяцев, 6 дней
Карма:




Здравствуйте. Имею точь в точь такую же проблему как и автор. А почему точь в точь? Да потому что используем мы скелет разработаный одним и тем же програмистом. Суть в том что сама ошибка не мешает но она засоряет весь лог. По поводу белой строчки вверху сайта это действительно UTF без BOM в файле с настройками соединения к БД. Кстати на локалхосте ее не было. Попрбовал заменить на ~^$uriPattern$~ так теперь начались проблемы с Ajax запросами. Пишет что класс не существует. Автор пришел к решению проблемы? Кстати связался с разработчик скелета но пока жду ответа, может он поможет чем то
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Intrerio  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 41503
На форуме: 1 год, 11 месяцев, 6 дней
Карма:




Кстати разскажу о своих наблюдениях. Если создать метод

public function actionTest(){
echo "test";
return true;
}

То все ок.А вот если создать такого плана метод:

public function actionTest(){
Test::test();
return true;
}

public static function test(){
echo "test";
return true;
}

То ошибка снова появляеться. Вот кто сажет в чем дело?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Intrerio  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 41503
На форуме: 1 год, 11 месяцев, 6 дней
Карма:




И тишина и мертвые с косами стоят biggrin.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16109
Пользователь №: 6543
На форуме: 8 лет, 7 месяцев, 26 дней
Карма: 303

Трезвый :
6 лет, 5 месяцев, 5 дней


Цитата (Intrerio @ 17.05.2017 - 10:34)
И тишина и мертвые с косами стоят
Какая ошибка то?


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Intrerio  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 41503
На форуме: 1 год, 11 месяцев, 6 дней
Карма:




Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'SiteController' does not have a method 'actionIndexcsite'
Я выделил букву потому что иногда она меняеться на f или другую. И SiteController здесь не имеет никакого отношения. Тут вся проблема в preg_match
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16109
Пользователь №: 6543
На форуме: 8 лет, 7 месяцев, 26 дней
Карма: 303

Трезвый :
6 лет, 5 месяцев, 5 дней


Опиши проблему четко. Никто не будет перечитывать старую тему. Где регулярка, которая портит имя метода?


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (4) 1 2 [3] 4  Ответ в темуСоздание новой темыСоздание опроса