Directory Structure
Overview
A typical Lighthouse application:
my-app/
├── config/
│ └── app.php
├── public/
│ ├── index.php
│ └── .htaccess
├── routes/
│ └── web.php
├── src/
│ └── Controllers/
│ └── HomeController.php
├── views/
│ ├── layouts/
│ │ └── main.php
│ ├── home.php
│ └── about.php
├── tests/
├── .env
├── .env.example
└── composer.jsonDirectory Purpose
config/
Application configuration files.
php
// config/app.php
return [
'name' => 'My App',
'debug' => true,
];public/
The web server's document root. Contains index.php (the entry point) and static assets.
Only this directory should be publicly accessible.
routes/
Route definitions.
php
// routes/web.php
$app->get('/', [HomeController::class, 'index']);
$app->get('/about', [HomeController::class, 'about']);src/
Your application code — controllers, services, models.
php
// src/Controllers/HomeController.php
namespace App\Controllers;
use Lighthouse\Controller;
class HomeController extends Controller
{
public function index()
{
return $this->view('home');
}
}views/
PHP template files.
php
// views/home.php
<?php $view->extends('layouts.main'); ?>
<?php $view->section('content'); ?>
<h1>Welcome!</h1>
<?php $view->endSection(); ?>tests/
PHPUnit tests.
php
// tests/ExampleTest.php
public function test_homepage_works(): void
{
// ...
}