Skip to main content

File Generators

S-PHP includes powerful code generators to quickly scaffold common application components. All generators automatically create the necessary directory structure and generate properly namespaced PHP classes.

Controller Generator

Create a new controller class:
php do controller [Name]

Basic Usage

php do controller UserController
Generated file: app/controllers/UserController.php
<?php

namespace Sphp\Controllers;

use Sphp\Controllers\Controller;

/**
 * UserController Controller
 */
class UserController extends Controller
{
    // TODO: Implement Controller functionality
}

Nested Controllers

Create controllers in subdirectories with automatic namespace resolution:
php do controller Admin/UserController
Generated file: app/controllers/Admin/UserController.php
<?php

namespace Sphp\Controllers\Admin;

use Sphp\Controllers\Controller;

/**
 * UserController Controller
 */
class UserController extends Controller
{
    // TODO: Implement Controller functionality
}

Configuration

  • Path: app/controllers/{name}.php (Command.php:42)
  • Namespace: Sphp\Controllers (Command.php:44)
  • Base Class: Sphp\Controllers\Controller (Command.php:45)

Middleware Generator

Create a new middleware class:
php do middleware [Name]

Basic Usage

php do middleware AuthMiddleware
Generated file: app/middleware/AuthMiddleware.php
<?php

namespace Sphp\Middleware;

use Sphp\Middleware\Middleware;

/**
 * AuthMiddleware Middleware
 */
class AuthMiddleware extends Middleware
{
    // TODO: Implement Middleware functionality
}

Nested Middleware

php do middleware Api/RateLimitMiddleware
Generated file: app/middleware/Api/RateLimitMiddleware.php
<?php

namespace Sphp\Middleware\Api;

use Sphp\Middleware\Middleware;

/**
 * RateLimitMiddleware Middleware
 */
class RateLimitMiddleware extends Middleware
{
    // TODO: Implement Middleware functionality
}

Configuration

  • Path: app/middleware/{name}.php (Command.php:48)
  • Namespace: Sphp\Middleware (Command.php:50)
  • Base Class: Sphp\Middleware\Middleware (Command.php:51)

Model Generator

Create a new model class:
php do model [Name]

Basic Usage

php do model User
Generated file: app/models/User.php
<?php

namespace Sphp\Models;

use Sphp\Core\Models;

/**
 * User Model
 */
class User extends Models
{
    // TODO: Implement Model functionality
}

Nested Models

php do model Blog/Post
Generated file: app/models/Blog/Post.php
<?php

namespace Sphp\Models\Blog;

use Sphp\Core\Models;

/**
 * Post Model
 */
class Post extends Models
{
    // TODO: Implement Model functionality
}

Configuration

  • Path: app/models/{name}.php (Command.php:54)
  • Namespace: Sphp\Models (Command.php:56)
  • Base Class: Sphp\Core\Models (Command.php:57)

View Generator

Create a new view file:
php do views [path]

Basic Usage

php do views home
Generated file: app/views/home.php
<!-- View File: home -->

Nested Views

php do views admin/users/index
Generated file: app/views/admin/users/index.php
<!-- View File: index -->

Configuration

  • Path: app/views/{name}.php (Command.php:30)
  • Template: HTML comment with view name (Command.php:31)
  • No namespace (views are plain PHP templates)

Generator Features

Automatic Directory Creation

All generators automatically create parent directories if they don’t exist (Command.php:132):
ℹ️ Created directory: app/controllers/Admin
🚀 Created controller file: app/controllers/Admin/UserController.php

Duplicate Detection

Generators check if files already exist and prevent accidental overwrites (Command.php:141):
ℹ️ File already exists: app/controllers/UserController.php

Namespace Resolution

For class-based generators (controller, middleware, model), subdirectories are automatically converted to sub-namespaces (Command.php:184-186):
  • Admin/UserControllerSphp\Controllers\Admin\UserController
  • Api/V1/MiddlewareSphp\Middleware\Api\V1\Middleware

Error Handling

Generators provide clear error messages:
# Missing name
$ php do controller
 Missing name parameter! Use: php do controller [name]

# Directory creation failure
 Failed to create directory: app/controllers/Admin

# Write failure
 Failed to write file: app/controllers/UserController.php

Build docs developers (and LLMs) love