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

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

  • adw0rd

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

    Spritz 5 ноября 2009 г. 13:27

    Пример:


    function test ($name)
    {
    // тут надо получить 'thisName'
    }

    test($thisName);


    Рассматриваются любые варианты, типа Reflection, backtrace и т.д.

    зы. спасибо васяцу за [man]debug_backtrace[/man]
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • NRG

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

    Spritz 5 ноября 2009 г. 13:28, спустя 1 минуту 24 секунды

    а сделать метод типа getType($var) и внем провяреть типа is_int ит.д. ….
  • adw0rd

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

    Spritz 5 ноября 2009 г. 13:30, спустя 1 минуту 37 секунд

    Если передается не имя переменной, а например так:
    test("ага-ага");

    то, тогда либо false, none, null, да хоть исключение пусть будет… я это все обработаю )
    Спустя 38 сек.
    а сделать метод типа getType($var) и внем провяреть типа is_int ит.д. ….
    эээ, мне не тип надо, а имя переменной
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • NRG

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

    Spritz 5 ноября 2009 г. 13:31, спустя 1 минуту 7 секунд

    ну впринципе еще можно и [man]gettype[/man]
    Спустя 23 сек.
    ой, сорри не так понял…
  • adw0rd

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

    Spritz 5 ноября 2009 г. 13:37, спустя 5 минут 58 секунд

    Для чего мне это:

    Это обертка для шаблонов, например:



    function assign($name, $value) {
       $tpl->assign($name, $value);
    }

    assign('users', $users);



    Я хочу привести к виду:

    function assign($var) {
       $name = // тут определяем имя переданной переменной (в моем примере тут будет 'users')
       $tpl->assign($name, $var);
    }

    assign($users);
    Спустя 128 сек.
    Если там будет не переменная передаваться, то:

    function assign($var) {
       $name = // тут определяем имя переданной переменной
       $name = is_string($name) ? $name : 'default';
       $tpl->assign($name, $var);
    }

    assign('бла-бла-бла');
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

    Spritz 5 ноября 2009 г. 13:43, спустя 5 минут 39 секунд

    adw0rd, не хочу показаться хвастуном, но я сразу понял что для шаблонизатора))

    а чем тебе

    $tpl->users = $users->getAll();

    не нравится? имхо куда практичнее)
    Сапожник без сапог
  • adw0rd

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

    Spritz 5 ноября 2009 г. 13:50, спустя 7 минут 54 секунды

    Ладно, дело обстоит так: я пишу небольшой фреймворк на PHP, похожий по структуре на Django. Мне Django очень нравиться, но проект надо писать на PHP, ибо Python на хостингах нема, а те кому уйдут копии моего фреймоврка это разнообразные ресселеры с небольшими познаниями в программировании, в основном сеошники и прочие манимейкеры. А мне бы хотелось по возможности использовать удобство джанги, поэтому у меня такая вот структура, где есть файл вьюхи, каталог моделей, файл сеттингса и урлов.

    У меня есть вьюха:

    function products ()
    {
    $products = array(1,2,3);
    PanjoTemplate::draw('templates/products.tpl', $products);
    }


    Из названия понятно, что фреймворк назвал я "Panjo"
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

    Spritz 5 ноября 2009 г. 13:52, спустя 1 минуту 34 секунды

    adw0rd, фреймворк на статических классах!
    Спустя 10 сек.
    2:хх в сторону статики!
    Сапожник без сапог
  • adw0rd

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

    Spritz 5 ноября 2009 г. 13:57, спустя 5 минут 22 секунды

    А в шаблоне обрабатывается так:

    <h1>{{ products.title }}</h1>
    <div>{{ products.description }}</div>
    Спустя 71 сек.

    adw0rd, фреймворк на статических классах!
    Спустя 10 сек.
    2:хх в сторону статики!
    чего? Где надо, я юзаю обжекты, а где надо на статике… например в $products будут объекты
    Спустя 47 сек.
    Ну так что, есть идеи по поводу получения имени переменной?
    Спустя 134 сек.
    Из PHP узнать имена переменных нельзя, но можно их количество и значения.
    http://xpoint.ru/forums/programming/PHP/thread/29749.xhtml

    думаете фигня?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

    Spritz 5 ноября 2009 г. 13:58, спустя 9 секунд

    adw0rd, а чем бектрейс не нравится? я не понял. там же это можно вроде получить … эм.
    Сапожник без сапог
  • adw0rd

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

    Spritz 5 ноября 2009 г. 13:59, спустя 1 минуту 20 секунд


    adw0rd, а чем бектрейс не нравится? я не понял. там же это можно вроде получить … эм.
    я его попробовал, но имени там нет, к сожалению :/
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

    Spritz 5 ноября 2009 г. 14:09, спустя 10 минут 1 секунду

    как нет? оО

    Hi: friend
    array(2) {
    [0]=>
    array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
    [0] => &string(6) "friend"
    }
    }
    [1]=>
    array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
    [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
    }
    }



    <?php
    // filename: /tmp/a.php

    function a_test($str)
    {
    echo "\nHi: $str";
    var_dump(debug_backtrace());
    }

    a_test('friend');
    ?>

    <?php
    // filename: /tmp/b.php
    include_once '/tmp/a.php';
    ?>


    это судя из документации
    Сапожник без сапог
  • adw0rd

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

    Spritz 5 ноября 2009 г. 14:34, спустя 24 минуты 39 секунд

    phpdude, это значение, а не имя переменной
    Спустя 23 сек.
    я и так могу получить его, без бектрейса )
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

    Spritz 5 ноября 2009 г. 14:42, спустя 8 минут 11 секунд

    adw0rd, ебать я лох .. сори что сбил с толку)

    как всегда "хочется получить желаемое за действительное"
    Сапожник без сапог
  • adw0rd

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

    Spritz 5 ноября 2009 г. 15:01, спустя 18 минут 51 секунду


    adw0rd, ебать я лох .. сори что сбил с толку)

    как всегда "хочется получить желаемое за действительное"
    бывает ))
    https://smappi.org/ - платформа по созданию API на все случаи жизни

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