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

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

  • kostyl

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

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

    а типа

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

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

    Spritz 16 марта 2010 г. 6: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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    $name = &#39;HELLO&#39;;
    echo hello($name); // name
    {+++66+++} Ну естественно нужно переделать если будет юзаться в классе
  • master

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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