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.
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 […]