PHP - işlevi çağrıldı zaman tanımak

5 Cevap php

Ben herhangi bir fonksiyon çağrıldı nereden nasıl bulacağınızı düşünüyorum. Sorun PHP mail() function aradığını nerede bulmalıyız olmasıdır. Tek yönlü register_tick_function() kullanmak olacaktır, ama ben her dosyayı açın ve her satırda ne olduğunu kontrol etmek gerekir. Proje büyük, PHP, her dosyayı ayrıştırmak için gerçekten uzun sürer. Başka bir yolu? Veya nasıl mail() işlevi geçersiz seçenek?

5 Cevap

Geçersiz kılmak için yerleşik posta fonksiyonu, override_function parçası bakmak Advanced PHP Debugger PECL extension - o zaman debug_backtrace arayan ayrıntıları öğrenmek için kullanabileceğiniz ...

//define code to override mail function (note I've used php5.3 nowdoc syntax to avoid 
//the need to escape the dollar symbols!!
$code=<<<'CODE'
    $trace=debug_backtrace();
    $caller=array_shift($trace);

    echo 'mail() called by '.$caller['function']
    if (isset($caller['class']))
        echo 'in '.$caller['class'];
CODE;

//install override
override_function('mail', '$to,$subject,$msg,$hdrs,$params', $code);

Kaba kuvvet yaklaşımı "my_mail (" ile "posta \ s (" yerine, kodunuzda genel arama yapmak ve değiştirmek olacaktır, sonra my_mail tanımlamak ve orada istersen günlüğü işlevsellik koydu.

Neden sadece "(posta" için kaynak aramak yok?

Ben kaynak koduna erişim götürün?

Neden sadece JEdit gibi bir düzenleyici kullanın, ve tüm açık tamponlar * (posta tüm tekrarlarını bulmak değil?

Yoksa gerçekten zamanında satır numaralarını bilmeniz gerekiyor? Ben aslında yapmak olduğunu hayal bile edemiyorum.