moehakram / webphp-oop
An elegant PHP framework leveraging OOP principles to simplify.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: ^8.1
- moehakram/phpquick: dev-main
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2025-05-19 16:47:50 UTC
README
About The Project
This framework is a simple solution for native PHP projects that integrates object-oriented programming (OOP) principles. It is designed to facilitate PHP application development by providing tools for streamlined routing management.
Getting Started
To start using this framework, follow these steps:
- Clone this repository to your local directory.
- Run
composer install
to install the necessary dependencies.
Usage
Configuration
Database configuration is located in /config/config.php
.
To start a local server, use the following command:
composer serve
Routing Patterns
Routing configuration is located in /config/routes.php
.
// Example: `http://localhost:8080/users/123` $router->get('/users/:id', function($id, Request $req) { return "User ID: " . $id; // Output: User ID: 123 }); // Example: `http://localhost:8080/users/asd123` $router->get('/users/:id', function($id, Request $req) { return "User ID: " . $id; // Output: User ID: asd123 }); // Example: `http://localhost:8080/search/name_group/123` $router->get('/search/:group/:id', function($group, $id, Request $req) { return "Group / ID: " . $group . '/' . $id; // Output: Group / ID: name_group/123 });
Callback Formats
The framework accepts various callback formats:
-
Array Callback:
The callback should be an array with two elements: the controller class name and the method name.
$router->get('/array', [HomeController::class, 'index']);
-
String Callback:
The callback should be a string in the format
'Controller@method'
, whereController
is the controller class name andmethod
is the method name.$router->get('/string', 'HomeController@index');
-
Callable Callback:
The callback should be a callable, such as a closure, anonymous function, or any function defined as callable.
$router->get('/anonymous-function', function() { return "Hello World"; }); $router->get('/arrow-function', fn() => "Hello World");
Summary
- Array:
[ControllerClass::class, 'methodName']
- String:
'Controller@method'
- Callable:
function(Request $req) { ... }
orfn(Request $req) => ...
Implementing Middleware
You can add middleware to your routes by passing them as additional parameters to the get
method.
// Middleware example class AuthMiddleware implements Middleware { public function execute(Request $request, callable $next) { // Authentication logic if (!$request->user) { return redirect('/login'); } return $next($request); } } // Applying middleware to a route //$router->get(string $path, $callback, ...$middlewares): void $router->get('/dashboard', 'DashboardController@index', AuthMiddleware::class);