You are here: Re: debug_backtrace and FILE/LINE indices « PHP Programming Language « IT news, forums, messages
Re: debug_backtrace and FILE/LINE indices

Posted by Taras_96 on 04/28/07 07:25

Thanks Thomans, I'll try out your suggestion and see how it goes :).

Taras

On Apr 25, 5:01 am, "Thomas Mlynarczyk" <tho...@mlynarczyk-
webdesign.de> wrote:
> Also sprach Taras_96:
>
>
>
> > $vDebug = debug_backtrace();
> > $vFiles = array();
> > for ($i=0;$i<count($vDebug);$i++) {
> > // skip the first one, since it's always this func
> > if ($i==0) { continue; }
> > $aFile = $vDebug[$i];
> > var_dump($aFile);
> > $vFiles[] = '('.basename($aFile['file']).':'.
> > $aFile['line'].')';
> > } // for
> > return implode(',',$vFiles);
>
> > I checked the PHP documentation for this function, and to my surprise
> > found that:
>
> > "The *possible* returned elements are as follows:", ie: 'file' and
> > 'line' wont always be returned. When are these elements returned, so
> > that I can make the function do something useful when file/line isn't
> > returned?
>
> A workaround: If 'file' and 'line' are not returned, use the respective
> values from the next entry in the backtrace array. Here's what I use:
>
> $aTrace = debug_backtrace();
> // Loop backwards (!) through array
> for ( $sFile = '', $iLine = 0, $i = count( $aTrace ); $i--; )
> {
> // Make sure all fields are set
> $aTrace[$i]
> = array_merge(
> array(
> 'function' => '',
> 'type' => '',
> 'class' => '',
> 'object' => array(),
> 'args' => array(),
> 'file' => $sFile,
> 'line' => $iLine
> ),
> $aTrace[$i]
> );
>
> // Add this for convenience
> $aTrace[$i]['call']
> = $aTrace[$i]['class']
> . $aTrace[$i]['type']
> . $aTrace[$i]['function'];
>
> // Missing file or line? Copy from previous item
> $sFile = $aTrace[$i]['file'];
> $iLine = $aTrace[$i]['line'];
> }
>
> // Remove first item ("this function")
> array_shift( $aTrace );
>
> This way, all possible fields are set to useful values. If you're only
> interested in file and line, you can optimize the code of course.
>
> Greetings,
> Thomas

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация