Wallogit.com
2017 © Pedro Pelรกez
A Fast and Lightweight PHP MVC Framework.
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., (*1)
bash
git clone https://github.com/strifejeyz/framework.git
bash
cd framework
bash
composer install
/ โโโ app/ โโโ kernel/ โโโ storage/ โโโ vendor/ โโโ .gitignore โโโ .htaccess โโโ composer.json โโโ composer.lock โโโ favicon.ico โโโ index.php โโโ LICENSE โโโ readme.md โโโ yamato
Define routes in app/routes.php:, (*2)
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., (*3)
To assign a name to a route, use the following syntax:, (*4)
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., (*5)
Create controllers in the app/controllers directory:, (*6)
use App\Models\User;
class HomeController
{
public function index()
{
$title = "Home Page";
$users = User::get();
return render('index', compact('title','users'));
}
}
Define models in the app/models directory:, (*7)
use Kernel\Database\QueryBuilder as Model;
class User extends Model
{
protected static $table = "users";
}
Place your templates in app/views:, (*8)
<!DOCTYPE html>
<html>
<head>
<title>{{ $title }}</title>
</head>
<body>
The Strife PHP Framework includes a powerful template engine for building clean and maintainable views., (*9)
@extend('template_name'): Extends a base template.@render('template_name'): Renders a specified template.@stop(): Marks the end of an extended layout/template.@get('section_name'): Similar behavior to include().@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 the if condition fails.{{endif}}: Marks the end of an if block.{{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.@extend('layouts/frontend')
Welcome back, user!, (*10)
@stop
{{if($userIsLoggedIn)}}
<p>Welcome back, user!</p>
{{else}}
<p>Please log in.</p>
{{endif}}
{{foreach($items as $item)}}
<p>{{ $item }}</p>
{{endforeach}}
Use these functions to build flexible and dynamic views efficiently., (*11)
This guide explains how to use the most common methods in the Query Builder class for running queries., (*12)
whereFilters results based on a condition., (*13)
$query = Users::where('column_name', '=', 'value');
field: The column to filter.a: The comparison operator (e.g., =).b: The value to compare against.joinPerforms an inner join with another table., (*14)
$query = Users::join('another_table')->on('table.id = another_table.foreign_id');
table: The table to join.on to specify the join condition.getFetches the results of the query., (*15)
$results = Users::get();
fetchMode (optional): Defaults to PDO::FETCH_OBJ.selectSpecifies the columns to retrieve., (*16)
$query = Users::select(['column1', 'column2']);
selection: An array of column names to select.orderSorts the results., (*17)
$query = Users::order('column_name', 'ASC');
field: The column to sort by.order: ASC for ascending or DESC for descending.limitLimits the number of results., (*18)
$query = Users::limit(10, 5);
number: The maximum number of results.offset (optional): The starting point for the results.firstFetches the first result of the query., (*19)
$firstResult = Users::first();
countCounts the number of results., (*20)
$total = Users::count();
Here is an example combining some of these methods:, (*21)
$results = Users::select(['id', 'name'])
->where('status', '=', 'active')
->order('created_at', 'DESC')
->limit(10)
->get();
Generate a migration:, (*22)
php yamato create:migration create_users_table
Edit the migration file and run:, (*23)
php yamato db:migrate
Use Yamato CLI for various tasks:, (*24)
php yamato
php yamato clear:logs: Clear logs directory.php yamato clear:cache: Clear cached pages.php yamato clear:all: Clear all backups, logs, and cache.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.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.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.Contributions are welcome! Please follow these steps: 1. Fork the repository. 2. Create a new branch for your feature or bugfix. 3. Submit a pull request with a detailed description of your changes., (*25)
Strife is open-source software licensed under the MIT License., (*26)
For questions or support, please open an issue on GitHub., (*27)