За последние 24 часа нас посетил 21701 программист и 1054 робота. Сейчас ищут 673 программиста ...

php, события require и вызова функции

Тема в разделе "Прочее", создана пользователем admyx, 9 окт 2013.

  1. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Таки вот возник у меня вопрос - у кого-нибудь возникало желание отслеживать момент инклуда файла, и вызова какой-либо built-in функции? Пых не событийный язык, и таки вопрос - полезной была бы такая фича или нет?
    Вопрос абсолютно отвлеченный, без подвоха.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    на вызов метода заманчиво подцепиться, потому как виденные реализации через магические методы, слишком накладные..
     
  3. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    в смысле? что-то типа
    Код (Text):
    1. <?php
    2. __call($name, $args){
    3.   $methodName = '_func_' . $name;
    4.   if(method_exists($this, $methodName){
    5.     $this->beforeMethod($name, $args);
    6.     $this->$methodName();
    7.     $this->afterMethod($name, $args);
    8.   }
    9. }
    ?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    типа да

    Добавлено спустя 1 минуту:
    О, сорри, я невнимательно прочел.
    нет, таких желаний не возникало.

    с оговорками можно подменить встроенную (из корневого неймспейса) функцию на свою. если вызов не предваряется \ . но зачем?

    Код (Text):
    1. namespace Target;
    2. function substr($s, $p, $n)
    3. {
    4. ...
    5. return \substr($s, $p, $n);
    6. }
     
  5. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    это да, всячески не айс =( реализация кривая, да и built-in опять же не обернешь таким образом.

    собственно, мне мысль отслеживания вызова функции пришла в результате курения, как можно предотвратить вызов set_error_handler(), после того, как уже один раз было вызвано...