PHPackages                             appserver-io/doppelgaenger - 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. appserver-io/doppelgaenger

ActiveLibrary

appserver-io/doppelgaenger
==========================

Make PHP structure definition clones which look the same but behave differently

1.7.3(7y ago)25.3k4[1 PRs](https://github.com/appserver-io/doppelgaenger/pulls)1OSL-3.0PHPPHP &gt;=5.4.0

Since Nov 18Pushed 7y ago1 watchersCompare

[ Source](https://github.com/appserver-io/doppelgaenger)[ Packagist](https://packagist.org/packages/appserver-io/doppelgaenger)[ RSS](/packages/appserver-io-doppelgaenger/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (38)Used By (1)

doppelgaenger
=============

[](#doppelgaenger)

Make PHP structure definition clones which look the same but behave differently

[![Latest Stable Version](https://camo.githubusercontent.com/daf71cf582c4e67d1ee77c323e85626e72eb61fe5ebcec1ce7e07b4fe66d181e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6170707365727665722d696f2f646f7070656c6761656e6765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/appserver-io/doppelgaenger)[![Total Downloads](https://camo.githubusercontent.com/a4d8f38e06fc8173230bf4f4b3fd110ddb4666e27737319f37d70067ae26d60a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6170707365727665722d696f2f646f7070656c6761656e6765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/appserver-io/doppelgaenger)[![License](https://camo.githubusercontent.com/7393928c1e0963d43c40aba0db2325b26bb0190a46c282c5ec1bfd05b7c62bc5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6170707365727665722d696f2f646f7070656c6761656e6765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/appserver-io/doppelgaenger)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/f129b1035008b245f12bc0c1267a366977fddcadacd355cb97bd1927725ac0f9/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f6170707365727665722d696f2f646f7070656c6761656e6765722f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/appserver-io/doppelgaenger/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/cdf2ef61c37ff0dfa681e6bc6f1d36a9f65789bd11eb1ae356601a69128ad30f/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f636f7665726167652f672f6170707365727665722d696f2f646f7070656c6761656e6765722f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/appserver-io/doppelgaenger/?branch=master)

Introduction
============

[](#introduction)

Doppelgaenger is created for tampering with PHP structure definitions such as classes before they get loaded and known to the code which uses them. Its main goal is to introduce additional behaviour and logic to code in a simple and controllable manner. To do this doppelgaenger relies on annotations with which additional features can be added.

Doppelgaenger currently supports the known techniques of:

- [AOP](http://en.wikipedia.org/wiki/Aspect-oriented_programming)
- [Design by Contract](http://en.wikipedia.org/wiki/Design_by_contract)

Issues
------

[](#issues)

In order to bundle our efforts we would like to collect all issues regarding this package in [the main project repository's issue tracker](https://github.com/appserver-io/appserver/issues). Please reference the originating repository as the first element of the issue title e.g.: `[appserver-io/] A issue I am having`

Semantic versioning
-------------------

[](#semantic-versioning)

This library follows semantic versioning and its public API defines as follows:

- The public API of [its related appserver.io PSR](https://github.com/appserver-io-psr/mop)
- The public interface of the `\AppserverIo\Doppelgaenger\AutoLoader` class
- The public interface of the `\AppserverIo\Doppelgaenger\Config` class
- The syntax and amount of usable annotations (NOT including common annotations such as `@param` and `@return`)
- The format of its configuration files

External Links
--------------

[](#external-links)

- Documentation at [appserver.io](http://docs.appserver.io) (have a look at [`AOP`](http://appserver.io/get-started/documentation/aop.html) and [`Design by Contract`](http://appserver.io/get-started/documentation/design-by-contract.html) section)

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 85.6% 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 ~45 days

Recently: every ~132 days

Total

37

Last Release

2556d ago

Major Versions

0.6.0 → 1.0.02015-02-13

### Community

Maintainers

![](https://www.gravatar.com/avatar/76b54aaecf7287a0520eec0009161ca457982dee83ac413bfa0d818b72d79947?d=identicon)[wagnert](/maintainers/wagnert)

![](https://www.gravatar.com/avatar/33b42e8c7314da5df45bca5d1dd786ea2b3d540fae5a5a9489580a886f2f4f39?d=identicon)[zelgerj](/maintainers/zelgerj)

![](https://www.gravatar.com/avatar/aa15f27f393eeb1f1a481fa7de89b41add17de686da79d49e07c5c77249c5e86?d=identicon)[wick-ed](/maintainers/wick-ed)

---

Top Contributors

[![wick-ed](https://avatars.githubusercontent.com/u/4931168?v=4)](https://github.com/wick-ed "wick-ed (166 commits)")[![pathmissing](https://avatars.githubusercontent.com/u/6809462?v=4)](https://github.com/pathmissing "pathmissing (19 commits)")[![wagnert](https://avatars.githubusercontent.com/u/287509?v=4)](https://github.com/wagnert "wagnert (5 commits)")[![ahi](https://avatars.githubusercontent.com/u/125972?v=4)](https://github.com/ahi "ahi (3 commits)")[![zelgerj](https://avatars.githubusercontent.com/u/287595?v=4)](https://github.com/zelgerj "zelgerj (1 commits)")

---

Tags

aopproxyremote proxytwindoppelgaengerremote method callaspect oriented

### Embed Badge

![Health badge](/badges/appserver-io-doppelgaenger/health.svg)

```
[![Health](https://phpackages.com/badges/appserver-io-doppelgaenger/health.svg)](https://phpackages.com/packages/appserver-io-doppelgaenger)
```

###  Alternatives

[ocramius/proxy-manager

A library providing utilities to generate, instantiate and generally operate with Object Proxies

5.0k82.4M230](/packages/ocramius-proxy-manager)[friendsofphp/proxy-manager-lts

Adding support for a wider range of PHP versions to ocramius/proxy-manager

1.2k139.1M104](/packages/friendsofphp-proxy-manager-lts)[fideloper/proxy

Set trusted proxies for Laravel

7.3k174.4M559](/packages/fideloper-proxy)[symfony/var-exporter

Provides tools to export, instantiate, hydrate, clone and lazy-load PHP objects

2.1k378.1M441](/packages/symfony-var-exporter)[php-curl-class/php-curl-class

PHP Curl Class makes it easy to send HTTP requests and integrate with web APIs.

3.3k9.5M353](/packages/php-curl-class-php-curl-class)[nette/http

🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.

48619.2M541](/packages/nette-http)

PHPackages © 2026

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