Seemore - the lightweight PHP MVC2 framework

Seemore is a lightweight PHP-based MVC2 framework inspired by Ruby on Rails. Unlike other frameworks, the intention of Seemore is to be simple, small and lightweight. I also want to promote test-driven development in Seemore by making it easy to write tests for Seemore and automate them. Download the latest version of Seemore here.


Seemore is and will continue to be simple to use. Much like Rails, Seemore will employ convention over configuration at all times. The intention is to allow PHP web-developers to do common tasks easily whilst allowing less common tatsks with only a little extra configuration.


It is my intention Seemore be small. The codebase should be focused to implementing MVC2 and the temptation to bloat Seemore up with a load of functionality should resisted. We have all seen Rails grow into a behemoth, allbeit a revolutionary and very functional behemoth. With that in mind it is not my intention to integrate an ORM layer into Seemore. One could easily use Doctrine (quite big in itself), why re-invent the wheel. However I might include an implementation of something like ActionMailer as I am not aware of such a library in PHP, and ActionMailer is great. Then again, maybe that should be a separate project.


Running or hosting a RoR app requires a lot of memory compared to PHP. It is my intention that Seemore does not change this fact. The memory footprint of a Seemore web-app should not be big because it’s Seemore (the source code or other libraries may make it big, but it won’t be Seemore).


Unit testing, functional testing and continuous integration is something you see mentioned a lot in the same breath as Java, Ruby and even .NET technologies. Test-driven development is pretty much a requirement for any professional software developer. I may be wrong but there is a distinct lack of testing when it comes to PHP development, if only in perception.

About the Author

I am a software developer that currently specialises in Ruby and Java development. I also dip my toes in C# for some of the projects. I was a commercial PHP developer for a number of years until I got sick of it and moved on to Java and then Ruby and never looked back… until now. With that in mind I may be out of touch as to what is the latest thing in the PHP world, I’m happy to be corrected. To talk to me about Seemore or anything else found here contact me at elwyn at malethan dot com.

Try it

Download the latest version of Seemore here. I recommend you use PHPMesh to decorate your views, it’s great. That is until perhaps Seemore supplies some layout functionality.

Typical Project Structure

Below is the structure for a typical Seemore application. In fact it’s the only Seemore application. It’s actually a rudimentary wiki engine I’m developing to illustrate how Seemore works.

|-- decorators
|   `-- application.php
|-- htdocs
|   |-- .htaccess
|   |-- .phpmeshrc
|   |-- dispatch.php
|   |-- images
|   |-- javascripts
|   `-- stylesheets
|-- lib
|   |-- php-mesh
|   |-- seemore
|   |   |-- 404.html
|   |   |-- Application.class.php
|   |   |-- LICENCE
|   |   |-- Routes.class.php
|   |   |-- View.class.php
|   |   `-- load.php
|   `-- textile
|-- log
|-- pages
|-- src
|   |-- Wiki.class.php
|   `-- app
|       |-- controllers
|       |   `-- default_controller.php
|       |-- routes.php
|       `-- views
|           `-- default
|               |-- edit.php
|               `-- page.php
`-- test

This project uses PHPMesh and Textile in addition to Seemore to display and management of a simple wiki. These libraries reside in the lib folder.

The htdocs folder contains the web application’s static resources such as images, stylesheets or even simple old html files. The .htaccess file redirects all requests that don’t correspond to a static resource to dispatch.php, which in turn loads the web application.

All source code specific to the web application should reside in the src folder. The Seemore application source should reside in a folder called app within the src folder. In this example you will see that there is a controller called default_controller.php in src/app/controllers and a number of views for that controller in the src/app/views/default folder.

When this example project is more complete I’ll elaborate more on the project structure…

Last modified: October 03 2008 18:21:04.