Skip to content

hymns/mika-framework

Repository files navigation

Mika Framework

A lightweight yet powerful PHP framework designed for simplicity and efficiency, inspired by Laravel. This framework provides essential features such as routing, an ORM, templating, migrations, and form validation, making it an excellent choice for rapid development.

Features

  • Routing: Define routes easily using Route::get(), Route::post(), etc.
  • ORM & Query Builder: Provides an easy-to-use, scalable database abstraction layer.
  • Blade-like Templating: Supports reusable and dynamic views.
  • Migrations & Seeders: Simple syntax for database migrations and data seeding.
  • Form Request Validation: Implements form validation .
  • CLI Support: Includes command-line utilities for migrations, seeding, and logging.
  • Modular & Scalable: Designed for flexibility and easy extension.

Installation

  1. Clone the repository:

    git clone https://github.com/hymns/mika-framework.git
    cd mika-framework
  2. Install dependencies using Composer:

    composer install
  3. Configure the .env file and update accordingly:

    cp .env.example .env
  4. Run migrations:

    php leman db:migrate
  5. Start the built-in PHP server:

    php -S localhost:8000 -t public/

Usage

Defining Routes

Create routes in routes/web.php:

// Using with Closure
Route::get('/hello', function () {
    return 'Hello, World!';
});

// Using with Controller
Route::get('/users', [UserController::class, 'listUser'], 'user.index');

Checkout full Route documentation.

Using the Controller

Create new controller using Leman command line.

php leman make:controller UserController

Leman will create the basic CRUD function for UserController. This will help to reduce time to create from scratch.

<?php

namespace App\Controllers;

use Core\Http\Request;
use Core\Http\Response;

class UserController
{
    /**
     * Display a listing of the data.
     * 
     * @return Response
     */
    public function index(): Response
    {
        // display data list
    }

    /**
     * Store a newly created data in storage.
     * 
     * @param Request $request
     * @return Response
     */
    public function store(Request $request): Response
    {
        // do store process
    }

    /**
     * Display the specified data.
     * 
     * @param int $id
     * @return Response
     */
    public function show(int $id): Response
    {
        // show data
    }

    /**
     * Display the specified data to edit.
     * 
     * @param int $id
     * @return Response
     */
    public function edit(int $id): Response
    {
        // show edit form
    }

    /**
     * Update the specified data in storage.
     * 
     * @param int $id
     * @param Request $request
     * @return Response
     */
    public function update(int $id, Request $request): Response
    {
        // do process update
    }

    /**
     * Remove the specified user from storage.
     * 
     * @param int $id
     * @return Response
     */
    public function delete(int $id): Response
    {
        // do process delete
    }
}

Using the ORM with Model

Create new model using Leman command line.

php leman make:model User --table=users

Define a model:

class User extends Model {
    protected string $table = 'users';
}

Query example:

$users = User::where('active', true)->get();

Form Request Validation

$request = new UserRequest();
if (!$request->validate()) {
    die('Validation failed');
}

Contributing

Feel free to fork the project and submit pull requests to improve it.

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published