PHPackages                             tomi20v/echop - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Debugging &amp; Profiling](/categories/debugging)
4. /
5. tomi20v/echop

ActiveLibrary[Debugging &amp; Profiling](/categories/debugging)

tomi20v/echop
=============

pretty printer for PHP

1.3.2(11y ago)035wtfplPHPPHP &gt;=5.3.0

Since Sep 4Pushed 11y ago3 watchersCompare

[ Source](https://github.com/tomi20v/echop)[ Packagist](https://packagist.org/packages/tomi20v/echop)[ RSS](/packages/tomi20v-echop/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependenciesVersions (4)Used By (0)

EchoPrinter / echop
===================

[](#echoprinter--echop)

=====

Pretty all-purpose printer for PHP.
-----------------------------------

[](#pretty-all-purpose-printer-for-php)

More condensed and informative format than print\_r or var\_dump. Also prints accessible static properties, and constants. More detailed html format or slim console format, with or without phpdoc inprint

There are some bindings in separate files to include so you can have the simplest printer commands

from the source:
----------------

[](#from-the-source)

```
/**
 * the pretty printer
 * 	I will print all kinds of data in a condensed but nice format
 * 	I will print constants and static properties of objects as well
 * 	I will detect cycle references in objects (but not in arrays)
 * 	I will stop at a certain depth level so array recursion is caught as well
 * @param mixed $param I will print this nicely
 * @param boolean $returnOnly if true, I only return in a string, otherwise I print
 * @param int $indent what I print will be indented this much
 * @param int $maxDepth print no deeper than this but print *DEPTH LIMIT* instead. 0 means no limit
 * @param boolean $isHtml if true I'll do some HTML formatting ( and  tags )
 * @param boolean $phpDoc if true, it will look for phpdoc tags of all properties etc
 * @return string|void
 */

```

an example output with all extras:
----------------------------------

[](#an-example-output-with-all-extras)

```
MyClass Object (
    const [**MAP_C**] => 2
    /** @var string this is the first variable */
    static [**pus**:public] => string(3) **pus**
    /** @var string this is the second variable */
    static [**_prs**:protected] => string(3) **prs**
    /** @var string this is my protected property */
    [**_pro**:protected] => string(3) **pro**
    /** @var string this is another protected property */
    [**_pro2**:protected] => string(3) **pro2**
    /** @var string and finally public */
    [**pu**:public] => string(2) **pu**
)

```

changelog
---------

[](#changelog)

1.3.2 2015-03-26 fix composer.json, some prettify, bump

1.3.1 2014-09-05 added type library to composer.json

1.3 2014-09-05 made packagist friendly added new binding "echon" which always returns printout

1.2 2014-08-20 added license fixed: not passing $phpDoc parameter recursively binding functions are now in separate files

1.1 2012-11-11 echop() moved inside EchoPrinter class to encapsulate it and its utilities can look up and print PhpDoc comments on vars

1.0 2012-10-17 initial version

why?
----

[](#why)

my first echop() implementation only wrapped print\_r, with optional second parameter value of 2, making script to dump and die. I've got addicted as I could write the word 'echop' much faster than print\_r or var\_dump... this was 15 years ago. since then it evolved a bit and lately also served some experiments like 'put something on composer'

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~102 days

Total

3

Last Release

4106d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/480c5f31418502babb0cc333db32b167dc4837d9acd60f45241e3ac5c9bf3b72?d=identicon)[tomi20v](/maintainers/tomi20v)

---

Top Contributors

[![tomi20v](https://avatars.githubusercontent.com/u/547831?v=4)](https://github.com/tomi20v "tomi20v (17 commits)")

---

Tags

printerdumpprettybeautifier

### Embed Badge

![Health badge](/badges/tomi20v-echop/health.svg)

```
[![Health](https://phpackages.com/badges/tomi20v-echop/health.svg)](https://phpackages.com/packages/tomi20v-echop)
```

###  Alternatives

[symfony/var-dumper

Provides mechanisms for walking through any arbitrary PHP variable

7.4k887.9M9.1k](/packages/symfony-var-dumper)[kint-php/kint

Kint - Advanced PHP dumper

2.8k20.2M301](/packages/kint-php-kint)[leeoniya/dump-r

a cleaner, leaner mix of print\_r() and var\_dump()

12168.5k5](/packages/leeoniya-dump-r)[jbzoo/jbdump

Script for debug and dump PHP variables and other stuff. This tool is a nice replacement for print\_r() and var\_dump() functions.

191.1M3](/packages/jbzoo-jbdump)[mmucklo/krumo

KRUMO - version 2.0 of print\_r(); and var\_dump(); (with new updates)

90170.8k6](/packages/mmucklo-krumo)[xrdebug/php

PHP client library for xrDebug

23823.2k3](/packages/xrdebug-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
