PHPackages                             gpcosta/thats-it - 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. gpcosta/thats-it

ActiveLibrary

gpcosta/thats-it
================

A simple framework in PHP for personal projects. Easy to use and... That's It!

2169[1 PRs](https://github.com/gpcosta/thats-it/pulls)PHP

Since Feb 17Pushed 1y agoCompare

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

READMEChangelogDependenciesVersions (2)Used By (0)

ThatsIt
=======

[](#thatsit)

A simple framework in PHP for personal projects. Easy to use and... That's It!
------------------------------------------------------------------------------

[](#a-simple-framework-in-php-for-personal-projects-easy-to-use-and-thats-it)

Imagine that you love create things and you also love using PHP... What do you do nowadays to start your projects? Or you start just with vanilla PHP or you use one of the many frameworks that although they are great, they are heavy and most of the times they have many features that are overkill.

So, because I have a lot of free time (just kidding), I started my own framework. The first (maybe?) VC framework in the world, because I only need controllers and views. Why not?

Requirements
------------

[](#requirements)

- You must have at least PHP 7.2
- Composer installed
- if you want to use a DB, MySQL is the only one accepted (currently there are no support for other DBs)

If you want to use it, download it from this repository and then, to download all the dependencies (fastRoute, whoops and monolog), in a shell, in the project root folder, write

```
composer install
```

After that, in the shell, to verify/build the structure of your project just write

```
php thatsIt.php verify
```

This command will create all files and folders that are needed to start your project. At this point, you can go to src/Public where you will see an index.php. This file is the application entry point.

Now, you can start a PHP server with

```
php -S localhost:8000
```

Your app is running and if you go to your browser and type localhost:8000, you see a simple 404 page. So what to do now?

Structure of folders and files
------------------------------

[](#structure-of-folders-and-files)

For you, it just matters config and src folder.

In config folder, you will see 3 files:

- config.php (where you will say the path to server and the current environment)
- database.php (where you put all the information to access to the database)
- router.php (where you will tell the app how your routes will be)

These files are created by the framework and they are already set for you to use.

In src folder, you will find:

- Controller folder (where you will write your controllers)
- Public folder (where your entry point is and where your accessible files from the outside should be as .js, .css and images)
- View folder (where you will put your views and your templates)

Just Views and Controllers
--------------------------

[](#just-views-and-controllers)

In this framework, a controller is the component that will receive the request, do all the "heavy lifting" (like requests to DB and so) and a view is the component that will receive the data and will show it to the user.

If you are like me, you don't like the "dark magic" (aka "lazy loading") that ORMs do so you can forget them and also models in this framework.

In case you want to have business logic separated of the controller, you can just create a folder to put that. Don't forget to add this folder and its namespace in the composer.json of the project.

Working Example
---------------

[](#working-example)

#### Routes

[](#routes)

Imagine that you have this config/router.php file

```
 years old

            // js code

```

I think the code is self explanatory. You can write your view with HTML and print your variables with PHP. Of course that you will be able to use PHP at its full potential.

You have to save this file as test.php in src/View. If you want to save it with another name, you have to change the name in controller, in the parameter passed to the View constructor.

You can also save it inside of src/View/Other\_folder. If you do, you also have to change in the parameter passed to the View constructor (like "Other\_folder/test").

That's It?
----------

[](#thats-it)

Now, if you start your server in src/Public with

```
php -S localhost:8000
```

You can go to localhost:8000/{put your name here} in your browser and see the result of your code. As you can see, your name is displayed on the screen. If you want to change the "age" that appears in the screen, you can go to

```
localhost:8000/{put your name here}?age={put your age here}

```

Your name is still there and now your age is also there.

**And That's It.**

Why did I do ThatsIt framework?
-------------------------------

[](#why-did-i-do-thatsit-framework)

- First of all, I like to control my data. So I prefer to make my own queries, rather trust in ORMs and all the lazy loading they usually do.
- Second, I always thought that PHP is already awesome as a "solo actor". I just don't like having to always be checking whether variables exist or not or what type they have (regarding $\_GET and $\_POST variables)
- Third, I like the division between the data processing and display part. So all I need is controllers and views
- Fourth, this is a good exercise to know what are the fundamentals behind a framework (a real simple one)

**Note**: I want to thank [Patrick Louys](https://github.com/PatrickLouys) for the [HTTP library](https://github.com/PatrickLouys/http) he made available on GitHub, which I heavily used to make my own library with few corrections and adaptations, and also for the [No Framework Tutorial](https://github.com/PatrickLouys/no-framework-tutorial). Although, ThatsIt framework is not based in this tutorial, it was a good resource to learn great tools already available and to see good principles. I recommend it to anyone that wants to understand the "behind the scenes" of a framework.

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance28

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity24

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/661c6776642d75ff2f1187013cbe6948abfad2c39ccb7939d1ffddb556ac50f6?d=identicon)[gpcosta](/maintainers/gpcosta)

---

Top Contributors

[![gpcosta](https://avatars.githubusercontent.com/u/24903410?v=4)](https://github.com/gpcosta "gpcosta (194 commits)")

### Embed Badge

![Health badge](/badges/gpcosta-thats-it/health.svg)

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

PHPackages © 2026

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