PHP code example of arkham-dev / framework

1. Go to this page and download the library: Download arkham-dev/framework library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

arkham-dev / framework example snippets




namespace App\Controllers;

use JosueIsOffline\Framework\Controllers\AbstractController;
use JosueIsOffline\Framework\Http\Response;

class WelcomeController extends AbstractController
{
    public function index(): Response
    {
        return $this->render('welcome.html.twig', [
            'message' => 'Hello from Arkham!'
        ]);
    }
}



use App\Controllers\WelcomeController;

return [
    ['GET', '/', [WelcomeController::class, 'index']],
    ['GET', '/welcome/{name}', [WelcomeController::class, 'show']],
    ['POST', '/api/users', [UserController::class, 'store']],
];

use JosueIsOffline\Framework\Database\DB;

// Select all users
$users = DB::table('users')->select()->get();

// Find a specific user
$user = DB::table('users')->where('id', 1)->first();

// Insert a new user
DB::table('users')->insert([
    'name' => 'John Doe',
    'email' => '[email protected]'
]);

// Update user
DB::table('users')
    ->where('id', 1)
    ->update(['name' => 'Jane Doe']);

// Delete user
DB::table('users')->where('id', 1)->delete();



namespace App\Models;

use JosueIsOffline\Framework\Model\Model;

class User extends Model
{
    protected string $table = 'users';
    protected array $fillable = ['name', 'email', 'password'];
}

// Usage
$users = User::all();
$user = User::find(1);
$activeUsers = User::where('status', 'active');



namespace App\Middleware;

use JosueIsOffline\Framework\Http\Request;
use JosueIsOffline\Framework\Http\Response;

class AuthMiddleware
{
    public function handle(Request $request, callable $next): Response
    {
        // Authentication logic here
        if (!$this->isAuthenticated($request)) {
            return new Response('Unauthorized', 401);
        }
        
        return $next($request);
    }
}

// In your controller
public function show(): Response
{
    return $this->render('user/profile.html.twig', [
        'user' => $user,
        'posts' => $posts
    ]);
}



use PHPUnit\Framework\TestCase;
use JosueIsOffline\Framework\Database\QueryBuilder;

class QueryBuilderTest extends TestCase
{
    public function testSelectQuery()
    {
        $qb = new QueryBuilder($this->connection);
        $sql = $qb->table('users')->select('name', 'email')->toSql();
        
        $this->assertEquals('SELECT name, email FROM users', $sql);
    }
}

// Bootstrap database connection
use JosueIsOffline\Framework\Database\DB;

DB::configure([
    'driver' => 'sqlite',
    'database' => 'database/app.sqlite'
]);

my-app/
├── app/
│   ├── Controllers/
│   │   ├── HomeController.php
│   │   └── BookController.php
│   └── Models/
├── config/
│   └── database.json (auto-generated)
├── public/
│   └── index.php
├── routes/
│   └── web.php
├── src/
│   ├── Controllers/
│   ├── Database/
│   ├── Http/
│   ├── Model/
│   ├── Routing/
│   └── View/
├── tests/
├── views/
│   ├── base.html.twig
│   ├── home.html.twig
│   └── book.html.twig
├── composer.json
└── README.md