PHPackages                             symlex/symlex - 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. [Framework](/categories/framework)
4. /
5. symlex/symlex

AbandonedArchivedProject[Framework](/categories/framework)

symlex/symlex
=============

A lean framework stack for agile Web development based on Symfony and Vuetify

v4.4.4(5y ago)293757↓100%18[15 PRs](https://github.com/symlex/symlex/pulls)MITPHPPHP ^7.3

Since Aug 20Pushed 4y ago16 watchersCompare

[ Source](https://github.com/symlex/symlex)[ Packagist](https://packagist.org/packages/symlex/symlex)[ Docs](https://symlex.org/)[ RSS](/packages/symlex-symlex/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (14)Versions (80)Used By (0)

Symlex: A lean framework stack for agile Web development based on Symfony and Vuetify
=====================================================================================

[](#symlex-a-lean-framework-stack-for-agile-web-development-based-on-symfony-and-vuetify)

[![License: MIT](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](https://github.com/symlex/symlex/blob/master/LICENSE)[![Build Status](https://camo.githubusercontent.com/53c6c7188855a65306ab2b7067562225642355c75f39ee73df4dc4538b1faa25/68747470733a2f2f7472617669732d63692e6f72672f73796d6c65782f73796d6c65782e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/symlex/symlex)[![Documentation](https://camo.githubusercontent.com/84e7e669c9ae017b0fad97fbe04fe187e788bc569eabc772c41e9a2ec33e2708/68747470733a2f2f72656164746865646f63732e6f72672f70726f6a656374732f73796d6c65782d646f63732f62616467652f3f76657273696f6e3d6c6174657374267374796c653d666c6174)](https://docs.symlex.org/en/latest/)[![GitHub contributors](https://camo.githubusercontent.com/c85531d2c7a125c2a4c70a4a9c329e992629402c2d1553b52ec32de73dbb23fc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f73796d6c65782f73796d6c65782e737667)](https://github.com/symlex/symlex/graphs/contributors/)[![Community Chat](https://camo.githubusercontent.com/f267c40a68af4ffc5b6e8c60665e9225a01ffa8edb830b00dc3063282c5992a9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636861742d6f6e2532306769747465722d3461613038372e737667)](https://gitter.im/symlex/community)[![Twitter](https://camo.githubusercontent.com/b5de3c4688168f731f0c0502c3d4e11b0368409c1576a8790fda4005bc1b4991/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f666f6c6c6f772d4073796d6c65787068702d3030616365652e737667)](https://twitter.com/symlexphp)

**Symlex aims to simplify agile Web development by providing a working system that promotes best practices by example:**

- Built on top of well documented and tested standard components
- Contains everything to create full-featured Web applications: Service container, REST routing &amp; Twig template engine
- Strict use of dependency injection for configuration and bootstrapping
- Small code and memory footprint
- Extremely fast compared to other PHP frameworks, especially in combination with [RoadRunner](https://roadrunner.dev/)

Since its initial release in 2014, it has proven to be well suited for rapidly building microservices, CLI and single-page applications. It comes complete with working examples from testing to forms and database abstraction. Simply delete what you don't need.

The [kernel](https://github.com/symlex/di-microkernel) is tiny and only creates a service container for bootstrapping your application within its context. Using a single container for configuration and dependency injection reduces complexity and leads to improved performance compared to other frameworks. It also prevents developers from thoughtlessly installing bundles without understanding them. The result is less bloat and simpler, more maintainable and testable code that is fundamental for agile development.

[![](https://camo.githubusercontent.com/cdece53bf743fa11b4d3c72b843f602c221805c2be7df273a2bc44168a6b842c/68747470733a2f2f646f63732e73796d6c65782e6f72672f656e2f6c61746573742f696d672f73637265656e73686f742e6a7067)](https://camo.githubusercontent.com/cdece53bf743fa11b4d3c72b843f602c221805c2be7df273a2bc44168a6b842c/68747470733a2f2f646f63732e73796d6c65782e6f72672f656e2f6c61746573742f696d672f73637265656e73686f742e6a7067)

Plain classes are used wherever possible to avoid vendor lock-in and enable framework independent code reuse. See [TRADEOFFS.md](TRADEOFFS.md).

You can combine the PHP based backend with any JavaScript library or REST client. The front-end boilerplate is there for your convenience and puts you straight on track for building impressive single-page applications with Webpack and Vuetify, see [demo.symlex.org](https://demo.symlex.org). A working example for command line applications is included as well.

Our complete framework documentation can be found on [docs.symlex.org](https://docs.symlex.org/en/latest/). [Tuzi Liu](https://github.com/tuzimoe) maintains a [Chinese translation](https://docs.symlex.org/zh/latest/) for us.

*Note:  contains the kernel and routers as reusable components.*

Setup
-----

[](#setup)

Before you start, make sure you have PHP 7.3+, [Composer](https://getcomposer.org/) and [Docker](https://www.docker.com/) installed on your system ([howto](https://docs.symlex.org/en/latest/osx/) for Mac OS X). Run `get-composer.sh` to install `composer` locally on Linux. Instead of using Docker, you can set up your own runtime environment based on the existing [Dockerfile](https://github.com/symlex/symlex/tree/master/Dockerfile). In addition, you will need a [database](https://downloads.mariadb.org/) plus [nodejs](https://nodejs.org/en/) and [npm](https://www.npmjs.com/) to build the frontend.

**Step 1:** Run `composer` to create a new Symlex project:

```
composer create-project symlex/symlex myapp

```

Composer will ask for config values to generate `app/config/parameters.yml` for you.

Make sure `storage/cache` is writable so that cache files can be created by the app.

**Step 2:** Start [RoadRunner](https://roadrunner.dev/) and [MariaDB](https://mariadb.org/) using `docker-compose`:

```
cd myapp
docker-compose up

```

*Note: This configuration is for testing and development purposes only, see comments in [docker-compose.yml](https://github.com/symlex/symlex/blob/master/docker-compose.yml) for details. You might need to tweak it if you run Docker with a different user for security reasons. On OS X, the current release of Docker is [really slow](https://twitter.com/lastzero/status/829191426391027712)in executing PHP from the host's file system. `docker-compose up -d` runs Docker in the background, but you won't see helpful log messages in this case.*

**Step 3:** Let [Make](https://www.gnu.org/software/make/) initialize the database and build the front-end components for you:

```
make terminal
make all database

```

To verify everything is working, run `make test`.

*Note: You can also use this approach to execute other CLI commands later. Make should be pre-installed in typical Unix development environments - otherwise you might have to get it first e.g. by installing the Xcode Command Line Tools on OS X via `xcode-select --install` or by adding the `build-base` or `build-essential` package on Linux. The `Makefile` contains a list of all targets.*

After successful installation, open the site at  and log in as `admin@example.com` using the password `passwd`.

YAML files located in `app/config` configure the app based on parameters and services. The main config files are `app/config/web.yml` and `app/config/console.yml`.

If you add `localhost-debug` to your `/etc/hosts` and access the site with that, it will load in debug mode (you'll see a stack trace and other debug information on the error pages).

The [mailhog](https://github.com/ian-kent/MailHog) user interface is available at . It can be used to receive and view mails automatically sent by the system, e.g. when new users are created.

If you want to build a more light-weight app, have a look at our other examples:

-
-

Full documentation:

[![Login Screen](https://camo.githubusercontent.com/1af551d9228340bad534f0359f692a8672008f4fff9f42479edb139f33af89d2/68747470733a2f2f646f63732e73796d6c65782e6f72672f656e2f6c61746573742f6672616d65776f726b2f696d672f6c6f67696e2e6a7067)](https://camo.githubusercontent.com/1af551d9228340bad534f0359f692a8672008f4fff9f42479edb139f33af89d2/68747470733a2f2f646f63732e73796d6c65782e6f72672f656e2f6c61746573742f6672616d65776f726b2f696d672f6c6f67696e2e6a7067)

RoadRunner
----------

[](#roadrunner)

Symlex now includes [RoadRunner](https://roadrunner.dev/) - a high-performance PHP application server - as an alternative to [NGINX](https://en.wikipedia.org/wiki/Nginx). It will be automatically downloaded when you build the Docker image.

Our installation instructions for Symlex &gt;= 4.4.0 won't work for previous releases as they still use NGINX and PHP-FPM. Instead of `web` and `php`, there is now a single `app`service powered by RoadRunner. If you prefer NGINX, you can use an older [release](https://github.com/symlex/symlex/releases) or copy the previous config to the new release. Some of our example apps use NGINX as well.

About
-----

[](#about)

Symlex is maintained by [Michael Mayer](https://blog.liquidbytes.net/about) and aims to simplify agile Web development by providing a working system that promotes best practices by example. Michael released his [first PHP framework](http://freshmeat.sourceforge.net/projects/awf) in 2001 and has worked with various major framework vendors in the past. Building this would not have been possible without a lot of prior work by other developers. Thank you to those and everyone who contributed!

> Choice is the enemy of productivity. Put another way, if your solution does everything, and has no opinions about anything, then it solves nothing. ― *Asim Aslam*

Feel free to send an e-mail to  if you have any questions, need [commercial support](https://blog.liquidbytes.net/contact/) or just want to say hello. We welcome contributions of any kind. If you have a bug or an idea, read our [guide](CONTRIBUTING.md) before opening an issue.

Performance
-----------

[](#performance)

It's obvious that PHP framework performance mainly depends on the lines of code that have to be executed for each request. While Symlex was designed to be simple and lean, a good performance is a very important by-product of this approach.

> The best code is no code. Where there is no code, there are no bugs. No API to learn. No awkward UI. The best refactors are deletions. ― *Eric Elliott*

As published by [phpbenchmarks.com](http://www.phpbenchmarks.com/en/benchmark/apache-bench/php-7.3/symlex-4.1.html), REST requests are more than 40% faster compared to other common PHP frameworks:

[![Response times of popular PHP frameworks](https://camo.githubusercontent.com/73262d13efc8557e22e51f5157373d97fddd87ff761e4e8799bdff0b62640b85/68747470733a2f2f73796d6c65782e6f72672f696d616765732f706572666f726d616e63652d6c617267652e737667)](https://camo.githubusercontent.com/73262d13efc8557e22e51f5157373d97fddd87ff761e4e8799bdff0b62640b85/68747470733a2f2f73796d6c65782e6f72672f696d616765732f706572666f726d616e63652d6c617267652e737667)

Note that these response times were measured in fully optimized production mode on [fast server hardware](http://www.phpbenchmarks.com/en/benchmark-protocol.html) with only 5 concurrent requests. In practice, differences might be much larger in terms of absolute time. Memory consumption should be considered as well:

[![Memory footprint of popular PHP frameworks](https://camo.githubusercontent.com/0b14fdf9ab20f6f62d193bd04ac5317c296494b1438a7e0800fcc1ccc73f398e/68747470733a2f2f73796d6c65782e6f72672f696d616765732f6d656d6f72792d6c617267652e737667)](https://camo.githubusercontent.com/0b14fdf9ab20f6f62d193bd04ac5317c296494b1438a7e0800fcc1ccc73f398e/68747470733a2f2f73796d6c65782e6f72672f696d616765732f6d656d6f72792d6c617267652e737667)

**Why should you care?** First, your users will love it. As a rule of thumb, **100 ms** is about the limit for having them feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result. The total response time also includes network (~25 ms), browser and other overhead, which only leaves a small fraction of those 100 ms for implementing the actual business logic. Second, you'll save a lot of money for server infrastructure and developers are more productive as tests are running faster.

Relationship with Symfony and Silex
-----------------------------------

[](#relationship-with-symfony-and-silex)

Symlex was started in 2014 as a simple Silex boilerplate, since Silex itself doesn't come with a "Standard Edition" that points you in the right direction. Using Silex instead of Symfony was recommended by SensioLabs (the creators of both frameworks) as a light-weight alternative to Symfony + FOSRestBundle for quickly building high-performance REST services and single-page Web applications.

It was soon noticed that Pimple - the service container that comes with Silex - feels cumbersome for developers coming from Symfony and makes it hard to reuse existing code. In addition, many Silex code examples and even real-world applications accessed the service container from all parts of the code (not only the framework itself), which circumvents inversion of control and leads to awkward testability. Symlex therefore promotes the strict use of dependency injection and combines the convenience of a full-fledged service container with the speed of a micro-framework.

Today, Symlex has its own routing component (based on Symfony 4) and does not use Silex anymore. The framework has proven to be useful for a large number of different applications. Some of them were based on the regular Symfony kernel before and did the change because they were drowning in complexity and suffered from response times well above 30 seconds in development mode. Symlex brought them back on track without big changes to their existing code base.

[![Micro-Kernel Architecture](https://camo.githubusercontent.com/0a1106f8506870480289207125cf0dfbf0f135133489a3d97f37d995f57bd8d4/68747470733a2f2f73796d6c65782e6f72672f696d616765732f73796d6c65782d76732d73796d666f6e792e737667)](https://camo.githubusercontent.com/0a1106f8506870480289207125cf0dfbf0f135133489a3d97f37d995f57bd8d4/68747470733a2f2f73796d6c65782e6f72672f696d616765732f73796d6c65782d76732d73796d666f6e792e737667)

Donations
---------

[](#donations)

Symlex is a non-profit project run entirely by volunteers. You're most welcome to support us via [GitHub Sponsors](https://github.com/sponsors/lastzero), especially if you need help with using our software. They will match every donation in the first year.

Please leave a star if you like this project, it provides additional motivation to keep going. Thank you very much! &lt;3

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 91% 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 ~35 days

Recently: every ~61 days

Total

63

Last Release

2097d ago

Major Versions

v0.9 → v1.0.02015-10-27

v1.1.1 → v2.0.02017-02-08

v2.4.2 → v3.0.02017-04-12

v3.0.6 → v4.0.02018-08-22

PHP version history (5 changes)v1.0.2PHP &gt;=5.5.9

v1.1.0PHP &gt;=7.0

v4.0.0PHP &gt;=7.1

v4.2.9PHP ^7.2

v4.4.4PHP ^7.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/f932b09a688c990f2869e72c771bf0eeb009b264a47a1cf78d54c13f566511da?d=identicon)[lastzero](/maintainers/lastzero)

---

Top Contributors

[![lastzero](https://avatars.githubusercontent.com/u/301686?v=4)](https://github.com/lastzero "lastzero (498 commits)")[![graciousgrey](https://avatars.githubusercontent.com/u/15210372?v=4)](https://github.com/graciousgrey "graciousgrey (47 commits)")[![JellyBellyDev](https://avatars.githubusercontent.com/u/190820?v=4)](https://github.com/JellyBellyDev "JellyBellyDev (1 commits)")[![mbezhanov](https://avatars.githubusercontent.com/u/785542?v=4)](https://github.com/mbezhanov "mbezhanov (1 commits)")

---

Tags

agilefull-stackleanmicro-frameworkphpphp-frameworkrestsymfonyvuetifysymfonyframeworkrestdependency-injectionperformancemicro-frameworkwebpackVue.js

### Embed Badge

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

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

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[bear/package

BEAR.Sunday application framework package

30527.9k23](/packages/bear-package)[lastzero/symlex-core

Minimalistic Kernel and Routers based on Symfony Components

119.5k](/packages/lastzero-symlex-core)[doppar/framework

The Doppar Framework

366.7k8](/packages/doppar-framework)

PHPackages © 2026

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