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

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

  • Frozzeg

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

    Spritz 11 января 2012 г. 14:26, спустя 1 минуту 53 секунды

    adw0rd, как поживает мини-фреймворк?
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • master

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

    Spritz 11 января 2012 г. 15:08, спустя 42 минуты 7 секунд

    waff,
    суть в следующем:
    контроллер упаковывает переменные функцией compact, а шаблонизатор распаковывает полученный массив функцией extract в локальном пространстве имён
    пример:


    //функция, имитирующая функцию контроллера
    function foo(){
    $name = 'Vasya';
    $age = 27;
    return compact('name', 'age');
    }

    //функция, имитирующая шаблонизатор
    function fetch($params){
    extract($params); // распаковываем в локальное пространство имён
    ob_start();
    include('template.php');
    return ob_get_clean();
    }

    print fetch(foo());


    template.php

    <div>
    Меня зовут <?= $name ?>, мне <?= $age ?> лет
    </div>


    плюсы:
    compact не ругается на несуществующие переменные. правда, их отсутствие обнаружится в шаблоне, будут нотайсы, но их можно отключить через error_reporting
    имена переменных в контроллере совпадают с именами переменных в шаблоне, всё наглядно

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

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

    Spritz 12 января 2012 г. 0:49, спустя 9 часов 40 минут 55 секунд

    master,
    теперь ясно. вполне неплохо. проверю на производительность и может у себя так сделаю.
  • Nyaah

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

    Spritz 12 января 2012 г. 10:24, спустя 9 часов 34 минуты 22 секунды

    Человек, который конкатенирует/эксплодит аргументы при передаче в функцию, только для того, чтобы узнать как называется переменная, будет тестировать производительность…
    Этот мир обречён =)
    Work, buy, consume, die
  • waff

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

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

    Nyaah,
    не принимайте близко к сердцу. ну да, кое что умею, а вообще учусь, и этому рад =) у вас есть крутое решение данного вопроса? не стесняйтесь, пишите, как я например.
  • Nyaah

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

    Spritz 12 января 2012 г. 16:35, спустя 3 часа 55 минут 21 секунду

    Сможешь объяснить, зачем тебе это, напишу как сделать. Если это только объединение области видимости контроллера и шаблорна, то мастер тебе уже написал, причем два или три раза уже
    Work, buy, consume, die

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