Банальный пример:
function mysql_real_escape_string($var) {
echo $var;
}
mysql_real_escape_string($var);
Именно штатные функции, и можно ли это сделать вообще?
Спустя 6 минут, 26 секунд (8.12.2011 - 16:48) Winston написал(а):
Попробуй это
http://ru2.php.net/manual/ru/function.override-function.php
Спустя 2 минуты, 11 секунд Winston написал(а):
Или это
http://ru2.php.net/manual/ru/function.runk...on-redefine.php
Спустя 8 минут, 48 секунд Winston написал(а):
Но нужно будет установить расширение APD установить, чтобы работало переопределение ф-й.
Спустя 10 минут, 20 секунд Winston написал(а):
А для второй ф-ии расширение Runkit.
http://ru2.php.net/manual/ru/function.override-function.php
Спустя 2 минуты, 11 секунд Winston написал(а):
Или это
http://ru2.php.net/manual/ru/function.runk...on-redefine.php
Спустя 8 минут, 48 секунд Winston написал(а):
Но нужно будет установить расширение APD установить, чтобы работало переопределение ф-й.
Спустя 10 минут, 20 секунд Winston написал(а):
А для второй ф-ии расширение Runkit.
Спустя 12 минут, 2 секунды (8.12.2011 - 17:00) inpost написал(а):
Winston
Да, спасибо, я почитал, но способ кривой. Кучу всяких приложений ставить для pecl, это не выход.
Может есть возможность стандартными возможностями это сделать? Беда не во мне, а в хостерах, потому что для обычных сайтов это отключено и в стандартный пакет установки не входит!
Да, спасибо, я почитал, но способ кривой. Кучу всяких приложений ставить для pecl, это не выход.
Может есть возможность стандартными возможностями это сделать? Беда не во мне, а в хостерах, потому что для обычных сайтов это отключено и в стандартный пакет установки не входит!
Спустя 15 минут, 55 секунд (8.12.2011 - 17:16) inpost написал(а):
Может есть возможность перехватывать функцию, или дополнять её? Собственно мне нужно лишь добавить перед обработкой (и,или после) кое-какие действия + выполнение самой функции.
Спустя 33 минуты, 34 секунды (8.12.2011 - 17:50) Winston написал(а):
Походу не получится так просто переопределить, только с помощью тех 2-х костылей, что я написал.
Здесь тоже об этом говорят.
Здесь тоже об этом говорят.
Спустя 22 минуты, 35 секунд (8.12.2011 - 18:12) inpost написал(а):
1. Использовать функции-контейнеры, которые будут добавлять некоторый функционал до или после вызова встроенной функции). Решение в лоб, которое собственно проблему решает весьма косвенно...
А про какой контейнер тут говорится? То есть действие до выполнение моего кода - мне вполне подойдет!
Спустя 6 минут, 22 секунды (8.12.2011 - 18:19) Winston написал(а):
Ну наверное под контейнером подразумевалось, что-то вроде этого:
function myRES($data)
{
// Некие манипуляции
return mysql_real_escape_string($data);
}
Спустя 13 часов, 22 минуты, 44 секунды (9.12.2011 - 07:42) linker написал(а):
Ух, вот уж чего делать категорически не надо, так это переопределять стандартные функции.
Спустя 1 час, 30 минут, 40 секунд (9.12.2011 - 09:12) Dezigo написал(а):
Давайте переопределим ещё
FALSE = TRUE
TRUE = FALSE
FALSE = TRUE
TRUE = FALSE
Спустя 44 минуты, 23 секунды (9.12.2011 - 09:57) sergeiss написал(а):
inpost - я тоже не понял, зачем тебе это нужно? Чтобы не переписывать код, а изменить логику работы, что ли?
И почему такой вариант не подходит?
И почему такой вариант не подходит?
Цитата (Winston @ 8.12.2011 - 19:19) |
function myRES($data) { // Некие манипуляции return mysql_real_escape_string($data); } |
Спустя 8 минут, 24 секунды (9.12.2011 - 10:05) Michael написал(а):
Спустя 1 час, 38 минут, 2 секунды (9.12.2011 - 11:43) twin написал(а):
Цитата (inpost @ 8.12.2011 - 13:42) |
Кажется видел раньше, но не могу найти. |
Скорее всего ты видел определение несуществующих функций. К примеру для 4 ветки PHP это:
if(!function_exists('file_put_contents'))
{
function file_put_contents($filename, $content, $flag);
{
if(!file_exists($filename))
fclose(fopen($filename, "a+t"));
$f = fopen($filename, "r+t");
while(!flock($f, LOCK_EX + LOCK_NB))
sleep(1);
if($flag == FILE_APPEND)
{
fseek($f, 0, SEEK_END);
}
else
{
ftruncate($f, 0);
fseek($f, 0, SEEK_SET);
}
if(is_array($content))
$content = implode('', $content);
fwrite($f, $content );
return fclose($f);
}
}
Спустя 5 часов, 13 минут, 54 секунды (9.12.2011 - 16:57) inpost написал(а):
Я вот поразмыслил, мне даже не то, чтобы изменить, мне условия перед и после нужны.
Допустим при запуске include, перед этим автоматически запускался if(file_exists), и тогда не нужно было бы внутри кода писать каждый раз по 5 строчек if-else, достаточно перехватывать событие, как на js, и выполнять определённый код до выполнения основного события.
Запустил include, а у меня перед этим проверился, есть ли файл, а если нет - exit();
Цель: не создавать свою собственную функцию include2, или mysql_query2, а дополнить функционал уже существующей и частоиспользуемой.
Допустим при запуске include, перед этим автоматически запускался if(file_exists), и тогда не нужно было бы внутри кода писать каждый раз по 5 строчек if-else, достаточно перехватывать событие, как на js, и выполнять определённый код до выполнения основного события.
Запустил include, а у меня перед этим проверился, есть ли файл, а если нет - exit();
Цель: не создавать свою собственную функцию include2, или mysql_query2, а дополнить функционал уже существующей и частоиспользуемой.
_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).