Можем ли мы реализовать функцию извлечения PHP в PHP без использования Zend API - PullRequest
1 голос
/ 12 февраля 2010

Функция извлечения php добавляет переменные в локальную область вызывающей функции.Как мы можем написать наш собственный экстракт функции php, который делает то же самое?

Ответы [ 4 ]

1 голос
/ 12 февраля 2010

Я не думаю, что вы можете сделать это в чистом PHP: функция не имеет доступа к переменным своего вызывающего.

Это похоже на то, что вам нужно, чтобы написать расширение C для разработки - у вас будет больше контроля над внутренними переменными PHP.

(И я действительно не понимаю, почему вы пытаетесь это сделать: почему бы просто не использовать существующую функцию extract?)

0 голосов
/ 12 июля 2010

Да, это возможно,

причина, по которой я это сделал, потому что мне нужно что-то еще из функции извлечения, чтобы оно тоже обрезало значения

function extractArray($ar) {
        if(count($ar)>=1) {
            foreach($ar as $k=>$v) {
                $GLOBALS[$k] = (is_array($v)?$v:trim($v));
            }
        }
}

Я просто передаю свои $ _GET, $ _POST и другие массивы вроде этого например, $ _GET ['username'] = 'justnajm'; extractArray ($ _ GET);

и я могу просто повторить, и он напечатает 'justnajm'

0 голосов
/ 12 февраля 2010

Хорошо, если это просто для удовольствия, это возможно:

<?php
$data=array('a' => 1, 'b' => 2);

foreach ($data as $name => $value) {
    ${$name} = $value;
}

echo $a;
?>

Но некоторые проблемы - например, конфликты с $ data, $ name и $ value, и вы не можете заключить их в функцию. Но возможно.

0 голосов
/ 12 февраля 2010

PHPJS - это библиотека javascript, которая содержит функции, аналогичные функциям php, вот ее extract функция, из которой вы можете получить представление. Сказав это, я удивляюсь, почему вы ищете свою собственную функцию, если php уже предоставляет ее.

...