1. Go to this page and download the library: Download ju1ius/footprints library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ju1ius / footprints example snippets
use ju1ius\Footprints\Backtrace;
// Capture the current stack trace
$trace = Backtrace::capture();
// retrieve the array of stack frames
$frames = $trace->frames();
// Capture the current stack trace, skipping the current stack frame
$trace = Backtrace::capture(1);
// Second argument is the flags for \debug_backtrace()
$trace = Backtrace::capture(0, Backtrace::PROVIDE_OBJECT|Backtrace::IGNORE_ARGS);
// You can capture error/exception traces too
try {
// ...
} catch (\Throwable $err) {
// Capture the exception trace, skipping the two topmost frames
$trace = Backtrace::captureThrowable($err, 2);
}
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Frame;
// Keep only frames for:
// * the top-level foo() function
// * any method named foo() regardless of it's class.
$trace = Backtrace::capture()
->accept(fn(Frame $frame) => $frame->function === 'foo');
// Filters out frames for:
// * the top-level foo() function
// * any method named foo() regardless of it's class.
$trace = Backtrace::capture()
->reject(fn(Frame $frame) => $frame->function === 'foo');
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Predicate;
$trace = Backtrace::capture()->reject(Predicate::isFunction(
'foo',
'Acme\\foobar',
));
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Predicate;
$trace = Backtrace::capture()->reject(Predicate::isClass(
'Foo',
'Acme\\FooBar',
));
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Predicate;
$trace = Backtrace::capture()->reject(Predicate::isMethod(
// rejects method `bar` of class `Foo`
'Foo->bar',
// rejects static method `baz` of class `Acme\FooBar`
'Acme\\FooBar::baz',
));
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Predicate;
$trace = Backtrace::capture()->reject(Predicate::isNamespace(
// rejects everything in namespace `Acme\Foo` and all it's sub-namespaces.
'Acme\\Foo',
));
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Predicate;
$trace = Backtrace::capture()->reject(Predicate::isFile(
// rejects everything in `/src/foo.php`
'/src/foo.php',
// rejects everything in the `/vendor` directory
'/vendor/*',
// rejects files having a `.inc.php` extension
'*.inc.php',
));
use ju1ius\Footprints\Backtrace;
use ju1ius\Footprints\Frame;
use ju1ius\Footprints\Predicate;
// The following filters out:
// * Foo::bar() and Bar::bar() methods (whether static or not)
// * top-level baz() and qux() functions
$trace = Backtrace::capture()->reject(Predicate::or(
Predicate::and(
fn(Frame $frame) => \in_array($frame->class, ['Foo', 'Bar']),
fn(Frame $frame) => $frame->function === 'bar',
),
Predicate::isFunction('baz', 'qux'),
));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.