smart-core/ladybug-bundle

Symfony2 bundle for Ladybug library (Simple and Extensible PHP Dumper)

Installs: 521

Dependents: 3

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 49

Type:symfony-bundle

v1.0.6 2014-10-10 06:09 UTC

This package is auto-updated.

Last update: 2024-02-28 23:56:23 UTC


README

Build Status

This bundle provides an easy and extensible var_dump/print_r replacement for Symfony2 projects, both in controllers or Twig templates. For example, with this bundle, the following is possible:

<?php
    class UserController extends Controller
    {
        public function userAction($username) {
            ladybug_dump($username); // or just ld($username)
        }
    }
{{ user.username|ladybug_dump }}

Getting as a result:

string(10) "raulfraile"

Installation

Step 1: Install vendors

To install this bundle, you'll need both the Ladybug library and this bundle. Installation depends on your version of Symfony:

Symfony 2.0.x: bin/vendors.php method

If you're using the bin/vendors.php method to manage your vendor libraries, add the following entries to the deps in the root of your project file:

[Ladybug]
    git=http://github.com/raulfraile/Ladybug.git
    target=Ladybug

[RaulFraileLadybugBundle]
    git=http://github.com/raulfraile/LadybugBundle.git
    target=/bundles/RaulFraile/Bundle/LadybugBundle

Next, update your vendors by running:

$ ./bin/vendors

Finally, add the following entries to your autoloader:

<?php
// app/autoload.php

$loader->registerNamespaces(array(
    // ...
    'Ladybug'           => __DIR__.'/../vendor/Ladybug/lib',
    'RaulFraile'        => __DIR__.'/../vendor/bundles',
));

Symfony 2.1.x: Composer

Composer is a project dependency manager for PHP. You have to list your dependencies in a composer.json file:

{
    "require": {
        "raulfraile/ladybug-bundle": "v0.7"
    }
}

To actually install Ladybug in your project, download the composer binary and run it:

wget http://getcomposer.org/composer.phar
# or
curl -O http://getcomposer.org/composer.phar

php composer.phar install

Step 2: Enable the bundle

Finally, enable the bundle in the kernel:

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...

        new RaulFraile\Bundle\LadybugBundle\RaulFraileLadybugBundle(),
    );
}

Examples

It is possible to dump any variable, including arrays, objects and resources:

Dumping an array

<?php
    $var = array(1, 2, 3);
    ladybug_dump($var)

array_example.png

Dumping an object

<?php
    $var = new Foo();
    ladybug_dump($var)

object_example.png

Dumping a GD image

<?php
    $img = imagecreatefrompng(__DIR__ . '/images/ladybug.png');
    ladybug_dump($img);

gd_example.png

The same can be accomplished using the Twig filter ladybug_dump.

Helpers

The are 5 helpers that can be used in any controller:

ladybug_dump($var1[, $var2[, ...]]): Dumps one or more variables

ladybug_dump_die($var1[, $var2[, ...]]): Dumps one or more variables and terminates the current script

ladybug_dump_return($format, $var1[, $var2[, ...]]): Dumps one or more variables and returns the dump in any of the following formats:

  • yml: Returns the dump in YAML
  • json: Returns the dump in JSON
  • xml: Returns the dump in XML
  • php: Returns the dump in PHP arrays

ladybug_dump_ini([$extension]): Dumps all configuration options

ladybug_dump_ext(): Dumps loaded extensions

There are also some shortcuts in case you are not using this function names:

ld($var1[, $var2[, ...]]): shortcut for ladybug_dump

ldd($var1[, $var2[, ...]]): shortcut for ladybug_dump_die

ldr($format, $var1[, $var2[, ...]]): shortcut for ladybug_return

Only ladybug_dump can be used inside Twig templates.

Symfony command

There are two Symfony commands to dump an instance of a given class or export it to a file, in JSON, YAML or XML format.

# php app/console ladybug:dump class_name [--all]
# php app/console ladybug:export class_name target [--format=yaml]

php app/console ladybug:dump "Symfony\Component\HttpFoundation\Request"
php app/console ladybug:export "Symfony\Component\HttpFoundation\Request" export.json --format=json

Symfony profiler integration

Instead of printing out the dump tree inside the HTML document, you can use the Ladybug logger and see the results in a tab of the Symfony profiler:

symfony_profiler.png

To make use of the Ladybug logger, grab the ladybug service from the DIC, and call the log method:

<?php
class TestController
{
    public function testAction()
    {
        $var = 1;
        $this->get('ladybug')->log($var);
    }

API reference

Ladybug automatically detects Symfony, Doctrine, Twig and Silex classes, and link them to the official documentation.

apilinks_example.png

Configuration

You can configure ladybug library directly in your config.yml file. Here are the defaults:

raul_fraile_ladybug:
    general:
        expanded:             false
    object:
        max_nesting_level:    3
        show_data:            true
        show_classinfo:       true
        show_constants:       true
        show_methods:         true
        show_properties:      true
    array:
        max_nesting_level:    8
    processor:
        active:               true
    bool:
        html_color:           #008
        cli_color:            blue
    float:
        html_color:           #800
        cli_color:            red
    int:
        html_color:           #800
        cli_color:            red
    string:
        html_color:           #080
        cli_color:            green
        show_quotes:          true
    css:
        path:                 /Asset/tree.min.css