Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов произвольного метода с произвольным количеством параметров
 
 автор: speedsoft   (25.06.2012 в 21:40)   письмо автору
 
 

Добрый вечер. Может кто сталкивался с передачей неопределенного количества параметров не определенному методу.


<?php
class Router{
    ...........
    function 
run(){
       .......
        
$segments explode('/'$this->getURIRoute());
        
        
// Первый сегмент — контроллер.
        
$component ucfirst(array_shift($segments));
        
$controller $component.'Controller';
        
        
// Второй — действие.
        
$action 'action'.ucfirst(array_shift($segments));
        
        
// Остальные сегменты — параметры.
        
$parameters $segments;
        
$parameters['test']='bla';
        
        .........
        
        
//Создаем отражение
        
$rc = new ReflectionClass($controller);
        
//передаем параметры
        
$class $rc->newInstanceArgs($parameters);                             
        
//Вызываем действие
        
$blocks $class->$action();    
        return     
$blocks;    
        
        ........
    }    
}
?>



в контроллере пытаюсь получить данные


<?
class ContentController{
    public 
$args  = array();
    public function 
__construct(){
        
$this->args func_get_args();
        
var_dump($this->args);die();
    }
    
    public function 
actionMain(){        
        return 
'Вот этот текст';
    }    
}


но вот беда, потерялись ключи у параметров. Сами значения я получил, но ключей тю-тю. Ассоциативный массив конвертировался в обычный.

Возможно ли как-то передать не просто значения, а с ключами?

вместо отражения пробовал

<?php 
call_user_func_array
(array($controller$action), $parameters);


Но тоже самое. видно сама функция func_get_args не заточена под ассоциативные массивы. Есть ли альтернатива? или же придется другой способ реализации искать? (конструктору передавать параметр в виде массива).

  Ответить  
 
 автор: speedsoft   (25.06.2012 в 22:04)   письмо автору
 
   для: speedsoft   (25.06.2012 в 21:40)
 

нашел еще одно решение

<?php
$parameters
[]=array('test'=>'bla');


и потом проверять, если параметр массив, то разобрать его значение. Но это все костыли, так что проблема актуальна

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования