[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Существует ли подобная функция?
SitnikovArtur
 
class a
{
function b()
{
$ab = 'ab';
}
}


какая_функция_может_сделать_так(a::b());
// приняв аргументом функцию
// без объявления new a();
// чтобы вывело исходный код функции


желаемый результат
Цитата
$ab = 'ab'


В итоге нужно запустить код не вызывая a::b()
А воспользовавшись функцией eval()

Пример:
eval(какая_функция_может_сделать_так(a::b()))
echo $ab;

желаемый результат
Цитата
ab




Спустя 2 часа, 1 минута, 32 секунды (23.04.2012 - 00:11) I++ написал(а):
В теории можно через http://fr.php.net/manual/en/book.tokenizer.php

Спустя 40 минут, 13 секунд (23.04.2012 - 00:51) HErATuB написал(а):
Статическая функция класса

class a{
public static function b(){
$ab = 'ab';
}
}


Вызов как ты и писал:

a::b();

Спустя 2 минуты, 6 секунд (23.04.2012 - 00:53) SitnikovArtur написал(а):
I++, cпасибо. Просто хотел убедиться, что нет встроенной функции, возвращающей код объявленных функций. Странно, если честно. Такую мелочь, и не могли дать разработчикам. Хотя может это сложно технически.

Спустя 8 минут, 47 секунд (23.04.2012 - 01:02) SitnikovArtur написал(а):
HErATuB
Нужно только через eval.
А писать довольно громоздкий код, изначально формируя из него строку, неудобно.

Спустя 4 минуты, 28 секунд (23.04.2012 - 01:07) HErATuB написал(а):
можно не обязательно через eval()
можно и так:

class a{
public static function b(){
$ab = 'ab';
}
}

$myperem = 'a::b';
$myperem();

дальше и через извращение :D

eval('$myperem()');

Спустя 21 минута, 1 секунда (23.04.2012 - 01:28) SitnikovArtur написал(а):
Вообще код передается между серверами. Один сервер коннектится ко второму, второй же должен отдать первому скрипт на исполнение.

Если скрипт который я должен отдать содержит:

echo "Это один";
echo "Это два";


То писать мне его приходится так:

echo '
echo "Это один";
echo "Это два";
'
;


Если присутствует вдруг HTML код, то получается каша из экранированных кавычек, чего и хочу избежать.

Придется разбирать функции класса на маленькие файлы и в зависимости от того какой сервер просит код - включать, либо парсить в переменную. Разбора классов на кусочки и хотелось избежать. Удобнее когда все в одном месте, а не каждая функция в отдельном файле. Иметь два экземпляра одного и того же кода - всегда потом править придется в двух местах, это даже не рассматривается.

Такая функция меня бы очень выручила.


_____________
Не к каждой каптче можно написать антикаптчу ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.