PHPackages                             underpin/underpin - 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. underpin/underpin

ActivePackage[Framework](/categories/framework)

underpin/underpin
=================

Underpin framework

4.2.1(3y ago)931.7k6[11 issues](https://github.com/Underpin-WP/underpin/issues)[1 PRs](https://github.com/Underpin-WP/underpin/pulls)20MITPHPPHP ^8.1

Since Sep 30Pushed 3y ago6 watchersCompare

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

READMEChangelog (10)Dependencies (3)Versions (35)Used By (20)

Underpin
========

[](#underpin)

The goal of Underpin is to provide a pattern that makes building PHP projects easier. It provides support for useful utilities that plugins need as they mature, such as a solid error logging utility, a batch processor for upgrade routines, and a decision tree class that makes extending *and* debugging multi-layered decisions way easier than traditional WordPress hooks.

Installation
------------

[](#installation)

Underpin can be installed in any place you can write code.

### Via Composer

[](#via-composer)

`composer require underpin/underpin`

**Note** This will add Underpin as a `mu-plugin`, but due to how WordPress handles must-use plugins, this does *not actually add the plugin to your site*. You must also manually require the file in a mu-plugin PHP file:

```
