strifejeyz / framework
A Fast and Lightweight PHP MVC Framework.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 5
Forks: 1
Open Issues: 2
Type:project
Requires
- php: >= 7.0
- phpmailer/phpmailer: ^6.3
This package is not auto-updated.
Last update: 2025-07-13 17:20:48 UTC
README
Introduction
Strife is a fast and lightweight PHP MVC framework designed to simplify web application development. It provides powerful tools and features for building robust and maintainable applications.
Features
- Smart Routing: Flexible and intuitive routing for handling HTTP requests.
- Multi-Database Support: Compatible with various database systems.
- Query Builder: Simplifies database interactions.
- Form Builder: Easy generation and validation of forms.
- Migration Management: Manage database schema changes effortlessly.
- Encryption & Caching: Built-in tools for secure and optimized applications.
- Built-in CLI: Command-line tools for rapid development.
- Template Engine: For clean and maintainable HTML views.
Requirements
- PHP 7.0 or higher
- A web server (e.g., Apache or Nginx)
- Composer (for dependency management)
Installation
- Clone the repository:
git clone https://github.com/strifejeyz/framework.git
- Navigate to the project directory:
cd framework
- Install dependencies:
composer install
Directory Structure
/
├── app/
├── kernel/
├── storage/
├── vendor/
├── .gitignore
├── .htaccess
├── composer.json
├── composer.lock
├── favicon.ico
├── index.php
├── LICENSE
├── readme.md
└── yamato
Usage
Routing
Define routes in app/routes.php
:
get('/users', 'UsersController@index'); post('/store', 'UsersController@store');
'/users'
: The route endpoint.UsersController@index
: The class name and method to call.
You can use either get()
or post()
when defining routes.
To assign a name to a route, use the following syntax:
get('users-list -> /users', 'UsersController@index');
If File-based routing is enabled, the app/routes.php
file is ignored. Instead, you can directly call a class and method.
For example, if UsersController
is the class name and index
is the method, you can invoke the endpoint /users/index
.
This accommodates any HTTP request method.
Controllers
Create controllers in the app/controllers
directory:
use App\Models\User; class HomeController { public function index() { $title = "Home Page"; $users = User::get(); return render('index', compact('title','users')); } }
Models
Define models in the app/models
directory:
use Kernel\Database\QueryBuilder as Model; class User extends Model { protected static $table = "users"; }
Views
Place your templates in app/views
:
<!DOCTYPE html> <html> <head> <title>{{ $title }}</title> </head> <body> <ul> {{foreach($users as $user)}} <li>{{$user->firstname}}</li> {{endforeach}} </ul> </body> </html>
Template Engine
The Strife PHP Framework includes a powerful template engine for building clean and maintainable views.
Extending and Rendering Templates
@extend('template_name')
: Extends a base template.@render('template_name')
: Renders a specified template.
Section Management
@stop()
: Marks the end of an extended layout/template.@get('section_name')
: Similar behavior to include().
Importing and Conditionals
@import('app\models\Users')
: Imports a class{{if(condition)}} ... {{endif}}
: Executes the enclosed code block if the condition is true.{{elseif(condition)}} ... {{endelseif}}
: Checks an alternative condition.{{else}}
: Runs an alternative block if theif
condition fails.{{endif}}
: Marks the end of anif
block.
Loops and Iterations
{{for(condition)}} ... {{endfor}}
: Runs a block of code a specified number of times.{{do(condition)}} ... {{enddo}}
: Executes the enclosed block once.{{while(condition)}} ... {{endwhile}}
: Loops while the condition is true.{{foreach(condition)}} ... {{endforeach}}
: Iterates over an array or object.
Example Usage
Extending a Template
@extend('layouts/frontend') <p>Welcome back, user!</p> @stop
Conditional Rendering
{{if($userIsLoggedIn)}} <p>Welcome back, user!</p> {{else}} <p>Please log in.</p> {{endif}}
Loop Example
{{foreach($items as $item)}} <p>{{ $item }}</p> {{endforeach}}
Use these functions to build flexible and dynamic views efficiently.
Query Builder
This guide explains how to use the most common methods in the Query Builder class for running queries.
where
Filters results based on a condition.
$query = Users::where('column_name', '=', 'value');
- Parameters:
field
: The column to filter.a
: The comparison operator (e.g.,=
).b
: The value to compare against.
join
Performs an inner join with another table.
$query = Users::join('another_table')->on('table.id = another_table.foreign_id');
- Parameters:
table
: The table to join.
- Chaining:
- Use
on
to specify the join condition.
- Use
get
Fetches the results of the query.
$results = Users::get();
- Parameters:
fetchMode
(optional): Defaults toPDO::FETCH_OBJ
.
select
Specifies the columns to retrieve.
$query = Users::select(['column1', 'column2']);
- Parameters:
selection
: An array of column names to select.
order
Sorts the results.
$query = Users::order('column_name', 'ASC');
- Parameters:
field
: The column to sort by.order
:ASC
for ascending orDESC
for descending.
limit
Limits the number of results.
$query = Users::limit(10, 5);
- Parameters:
number
: The maximum number of results.offset
(optional): The starting point for the results.
first
Fetches the first result of the query.
$firstResult = Users::first();
count
Counts the number of results.
$total = Users::count();
Example Usage
Here is an example combining some of these methods:
$results = Users::select(['id', 'name']) ->where('status', '=', 'active') ->order('created_at', 'DESC') ->limit(10) ->get();
Database Migrations
Generate a migration:
php yamato create:migration create_users_table
Edit the migration file and run:
php yamato db:migrate
Command-Line Interface (CLI)
Use Yamato CLI for various tasks:
php yamato
Common Commands
Cleanup
php yamato clear:logs
: Clear logs directory.php yamato clear:cache
: Clear cached pages.php yamato clear:all
: Clear all backups, logs, and cache.
Generators
php yamato create:model [name] [table=null]
: Create a model class.php yamato create:controller [name] [empty=bool]
: Create a controller class.php yamato create:migration [name] [table]
: Create a migration class.php yamato create:request [name]
: Create a request class.php yamato create:key
: Generate an application key.
Database
php yamato db:migrate
: Install all migrations.php yamato db:rollback
: Rollback all migrations.php yamato db:backup
: Backup table data into a JSON file.php yamato db:restore
: Restore the last made backup.php yamato db:seed
: Perform database seeding.
Security
php yamato hash:encode [string]
: Returns the hash of a given string.php yamato encryption:encode [string] [level=1]
: Encrypt a string.php yamato encryption:decode [string] [level=1]
: Decrypt a string.
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Submit a pull request with a detailed description of your changes.
License
Strife is open-source software licensed under the MIT License.
Support
For questions or support, please open an issue on GitHub.