php debug_backtrace fonksiyonu

dubug_backtrace

PHP’de debug_backtrace() fonksiyonu, çalıştırıldığı yere kadar çalışan tüm metodları, bunların argümanlarını kullanılan nesneleri classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak veren bir metoddur. Adı üzerinde, backtrace’leri debug ediyor 🙂

Örnek olarak hazırladığım 2 adet php sayfası var. Bunlardan biri default.php diğeri start.php. Biraz karmaşık gibi görünebilir, debug_backtrace fonksiyonunun ne işe yaradığını gösterebilmek için tünel kazarak fonkisyondan nesne yaratıp metodlara gittim

start.php içeriği şöyle;

< ?php
require_once 'default.php';

start("dubluve", "dubluve.net");

function start($param1, $param2){
		$default = new DefaultClass($param1);
		$default->deneme();
}
?>

Burada default.php sayfasını require_once ile aldık, daha sanra start(); fonksiyonunu çalıştırdık.
start(); fonksiyonu içerisinde ise DefualtClass için bir nesne yarattık, ardından da deneme(); metodunu çalıştırdık.

default.php içeriği şöyle;

< ?php
class DefaultClass{

	protected $_var = "a";
	private $_var2 = "b";
	public $value = "c";
	
	public function __construct($param){

	}

	public function deneme(){
		$this->_defaultDebug($this->_var);

	}

	protected function _defaultDebug(){
		$result = debug_backtrace();
		print_r($result);
	}

}
?>

Burada da DefaultClass clasımız var. Bu class için nesne yarattığımızda çalışan __construct metodu 1 adet parametre alıyor.
Ardından çalıştırdığımız deneme(); metodu ise protected olan _defaultDebug(); metodunu çağırıyor. Burada da dubug_backtrace yapıyoruz.
Ayrıca DefaultClass classında 3 adet property var.

Şimdi bakalım bunun sonucuna;

Array
(
    [0] => Array
        (
            [file] => A:\deneme\default.php
            [line] => 13
            [function] => _defaultDebug
            [class] => DefaultClass
            [object] => DefaultClass Object
                (
                    [_var:protected] => a
                    [_var2:DefaultClass:private] => b
                    [value] => c
                )

            [type] => ->
            [args] => Array
                (
                    [0] => a
                )

        )

    [1] => Array
        (
            [file] => A:\deneme\start.php
            [line] => 8
            [function] => deneme
            [class] => DefaultClass
            [object] => DefaultClass Object
                (
                    [_var:protected] => a
                    [_var2:DefaultClass:private] => b
                    [value] => c
                )

            [type] => ->
            [args] => Array
                (
                )

        )

    [2] => Array
        (
            [file] => A:\deneme\start.php
            [line] => 4
            [function] => start
            [args] => Array
                (
                    [0] => dubluve
                    [1] => dubluve.net
                )

        )

)

Sonuç olarak dönen array içinde 3 adet array var, gelin bunları tek tek inceleyelim.

  • İlk arrayimiz, dubug_backtrace(); metodun içinde olduğu _defaultDebug metodunun çağırıldığı yer. yani deneme(); metodunun içerisi. [file] parametresinde bu metodu çağıran yerin tam yolu, [line] parametresinde ise o dosyada kaçıncı satırda çağırıldığı bilgisi var. [function] parametresinde de çağırılan metod var. Bu metodun içerisinde bulunduğu class [class] parametresinin içerisinde. [object] parametresi içerisinde de, nesnemiz ve bunun içerisindeki propertyler yer almakta. [arg] içerisinde de argümanlar mevcut.
  • İkinci arrayimizde ise, ilk arrayde çalışan metodun çağırıldığı yer var. yani deneme(); metodunun çağırıldığı yer. Biz deneme metodunu, start.php içerisinde bir nesne yaratarak çağırmıştık, diğer argümanlara baktığımızda bunu da görebiliyoruz.
  • Son arrayimizde ise start.php içerisinde çağırdığımız start(); fonksiyonu yer almakta, çünkü biz ilk oalrak bunu çağırdık. Burada argümanlarını da açıkca görebiliyoruz.

Gelen sonuçlarda [file] parametresindeki dosyanın tam yolunun, include işlemlerinde de işimize yarayabileceğini düşünüyorum.

debug_print_backtrace

debug_print_backtrace(); fonksyionu da debug_backtrace ile hemen hemen aynı işi yapmakta. Farkları, debug_backtrace kadar fazla detay vermemesi, ve geriye hiç birşey döndürmemesi. Geriye hiç birşey return etmiyor, sonucu direk ekrana basıyor.

Şöyle ki, yukarıda verdiğim örnekteki _defaultDebug(); metodu böyleyken;

protected function _defaultDebug(){
		$result = debug_backtrace();
		print_r($result);
	}

şu hale getirirseniz;

protected function _defaultDebug(){
		debug_print_backtrace();
	}

debug_print_backtrace metodunun verdiği sonucu da görmüş olursunuz. Verdiğim örnekte aşağıdaki sonucu aldım;

#0 DefaultClass->_defaultDebug() called at [A:\deneme\default.php:13]
#1 DefaultClass->deneme() called at [A:\deneme\start.php:8]
#2 start(dubluve, dubluve.net) called at [A:\deneme\start.php:4]

Görüldüğü üzere çalışan metodları ve nereden çağırıldıklarını listelemekte.

7 Comments

    php debug_backtrace fonksiyonu « Lé Blog

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu Share :FacebookTwitterStumbleUponLinkedInLike this:LikeBe the first to like […]

    php debug_backtrace fonksiyonu | Boğaç Aslanyürek

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu This entry was posted in Professional and tagged debug backtrace, debug print, debug print […]

    php debug_backtrace fonksiyonu | Kara Kule

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu Share this:TwitterFacebookLike this:BeğenBe the first to like this. By ahmet orsorlu • […]

    php debug_backtrace fonksiyonu | Gökhan Tunçkale | Blog

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu ShareFacebookTwitterStumbleUponMoreTumblrRedditLinkedInDiggEmailPrintLike this:BeğenBe the first […]

    php debug_backtrace fonksiyonu | yusufozkay

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu Share this:TwitterFacebookLike this:BeğenBe the first to like this. This entry was posted in […]

    php debug_backtrace fonksiyonu « Musa Usta'nın Yeri

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu Share this:TwitterFacebookLike this:BeğenBe the first to like this.   Yorum […]

    php debug_backtrace fonksiyonu « kodluyorum

    […] classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak … Devamı için : php debug_backtrace fonksiyonu Share this:TwitterFacebookLike this:BeğenBe the first to like […]

Bir Cevap Yazın