ФорумПрограммированиеPHP для идиотов → Как узнать имя переменной, переданной в качестве аргумента ф-ии

Как узнать имя переменной, переданной в качестве аргумента ф-ии

  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 16 марта 2010 г. 10:46, спустя 1 час 16 минут 46 секунд

    а типа

    function (&$arg) {
    ob_start();
    var_dump($arg);
    $NeedParse = ob_get_clean();
    //и распарсить NeedParse
    }
    Спустя 30 сек.
    да, по ходу тупость ))
    Спустя 46 сек.
    да, я еще чёто натупил с этим постом, вклейка в коде ГЫГЫ
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 16 марта 2010 г. 16:01, спустя 5 часов 15 минут 51 секунду



    function test($param1, $param2)
    {}

    $funcRefl = new ReflectionFunction('test');
    $params = $funcRefl->getParameters();
    foreach ($params as $param)
    {
    echo $param->getName() . "\n";
    }

    // result:
    // param1
    // param2
    Work, buy, consume, die
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 16 марта 2010 г. 16:36, спустя 34 минуты 41 секунду

    Naaayh, ПОСЛАННОЙ, а не объявленой
    Сапожник без сапог
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 16 марта 2010 г. 17:52, спустя 1 час 15 минут 26 секунд

    phpdude, чувствую, можно смело объявить конкурс или battle
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 16 марта 2010 г. 22:21, спустя 4 часа 29 минут 18 секунд

    можно принять батл и послать конкурс
    ιιlllιlllι унц-унц
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 16 марта 2010 г. 23:41, спустя 1 час 19 минут 55 секунд

    да, что-то ступил, мыж итак знаем как переменные называются ))))
    Work, buy, consume, die
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 января 2012 г. 16:50, спустя 659 дней 16 часов 8 минут

    Да не нужно это потому что
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 января 2012 г. 17:44, спустя 54 минуты 32 секунды

    магия зло!
    Сапожник без сапог
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 5 января 2012 г. 19:54, спустя 2 часа 9 минут 54 секунды

    Все не читал, может быть где-то уже написали. Нашел такое:

    <?php
    function hello(&$var, $scope=0) {
    $old = $var;
    if (($key = array_search($var = 'unique'.rand().'value', !$scope ? $GLOBALS : $scope)) && $var = $old) return $key;
    }

    $name = 'HELLO';
    echo hello($name); // name
    Спустя 66 сек.
    Ну естественно нужно переделать если будет юзаться в классе
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 6 января 2012 г. 6:07, спустя 10 часов 12 минут 36 секунд

    решить сабжевую задачу конечно можно, но это дикое усложнение и костыли
    я для шаблонизаторов делаю так:


    class MyController {
    function foo(){
    $name = 'vasya';
    $age = 27;
    return compact('name', 'age');
    }
    }

    движок автоматом передаёт результат функции контроллера во вьюху, в шаблонизатор. принято, что всегда возвращаются массивы
    механизм похож на рельсы. ну, наверное это не джанго, но зато это ближе всего к именованным аргументам
    не всё полезно, что в swap полезло
  • waff

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 11 января 2012 г. 12:04, спустя 5 дней 5 часов 57 минут

    самому нужно было недавно, использовал глобалс. а еще придумал кое-что.. как вам такой код:
    <?php

    function test ($name)
    {
    // тут надо получить 'thisName'
    list($name, $varname) = explode("*", $name);
    return $varname; //thisName
    }
    $thisName = 'lorem ipsum';
    test($thisName.'*thisName'); //передаем имя в аргументе))
    ?>

    я только начинающий кодер.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 11 января 2012 г. 12:44, спустя 39 минут 57 секунд

    как вам такой код

    уебанство
    а что если $thisName == 'lorem*ipsum' ?
    а что если надо передать аргументом не строку?
    не всё полезно, что в swap полезло
  • waff

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 11 января 2012 г. 13:20, спустя 36 минут 13 секунд

    от части согласен с вами, от части нет. приведенный код как пример той мысли и расчитывалось только на строковый тип.
    а для чего-то рабочего и гибкого можно, конечно, дописать чтобы работало не только со строками и т.п.

    1-е. решается очень просто:
    <?php

    function test ($name)
    {
    // тут надо получить 'thisName'
    $arrvars = explode("*", $name);
    $varname = end($arrvars);
    return $varname; //thisName
    }
    $thisName = 'lorem*ipsum';
    test($thisName.'*thisName'); //передаем имя
    ?>
    2-е. тоже просто. например, вместо конкатенации можно передавать доп. аргумент.
    <?php

    function test ($name, $varName)
    {
    // тут надо получить 'thisName'
    $var = $varName;
    return $var; //thisName
    }
    $thisName = 'lorem*ipsum';
    test($thisName, 'thisName');
    ?>
    и всего делов. :)
    Спустя 66 сек.
    упс, забыл в пхп тэги поместить код.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 11 января 2012 г. 13:29, спустя 8 минут 56 секунд

    waff, зачем это всё? я же написал как решается эта задача
    не всё полезно, что в swap полезло
  • waff

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 11 января 2012 г. 14:24, спустя 55 минут 23 секунды

    да делать нехуй. недавно писал шаблонизатор нужно было такое. а ваше решение как работает? объясните, если не влом, как оно решает задачу? весь прикол в том что движок автоматом передаёт результат функции? непонятно короче.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!