omegamvc / framework
OmegaFramework is a lightweight and modular PHP framework designed for building modern web applications following the MVC architecture. It is optimized for PHP 8+ and provides a simple, extensible foundation for rapid application development.
Requires
- php: ^8.4
- ext-apcu: *
- ext-http: *
- ext-iconv: *
- ext-mbstring: *
- ext-openssl: *
- ext-pcntl: *
- ext-posix: *
- ext-readline: *
- ext-simplexml: *
- omegamvc/serializable-closure: ^2.0.0
- omegamvc/validator: ^2.0.0
Requires (Dev)
- phpunit/phpunit: ^12.3
- squizlabs/php_codesniffer: ^3.13.2
README
Documentation | Changelog | Contributing | Code Of Conduct | License
PHP MVC
Feature
- MVC base
- Container (dependency injection)
- Route
- Model (database class relation)
- View and Controller
- MyQuery (database query builder)
- Collection (array collection)
- Console (assembling beautiful console app)
- Template (create class using class generator)
- Cron
- Now (time managing)
- Http request and response
- Str (string manipulation)
Built in Query Builder
of course, we are support CRUD database, this a sample
Select data
DB::table('table_name') ->select(['column_1']) ->equal('column_2', 'fast_mvc') ->order("column_1", MyQuery::ORDER_ASC) ->limit(1, 10) ->all() ;
the result will show data from query, its same with SQL query
SELECT `column_1` FROM `table_name` WHERE (`column_2` = 'fast_mvc') ORDER BY `table_name`.`column_1` ASC LIMIT 1, 10
Update data
DB::table('table_name') ->update() ->values([ 'column_1' => 'simple_mvc', 'column_2' => 'fast_mvc', 'column_3' => 123 ]) ->equal('column_4', 'fast_mvc') ->execute() ;
the result is boolean true if sql success execute query, its same with SQL query
UPDATE `table_name` SET `column_1` = 'simple_mvc', `column_2` = 'fast_mvc', 'column_3' = 123 WHERE (`column_4` = 'speed')
Insert and Delete
// insert DB::table('table_name') ->insert() ->values([ 'column_1' => '', 'column_2' => 'simple_mvc', 'column_3' => 'fast_mvc' ]) ->execute() ; // delete DB::table('table_name') ->delete() ->equal('column_3', 'slow_mvc') ->execute() ;
its supported cancel transaction if you needed
use Omega\Support\Facades; PDO::transaction(function() { DB::table('table_name') ->insert() ->value('age', 22) ->execute() ; // some condition if (false === $statment) { return false; } return true; });
Create Database Table
create database table
Schema::table('users', function(Column $column) { $column('user')->varchar(50); $column('pwd')->varchar(500)->notNull(); $column->primeryKeys('user'); }) ->excute();
Collection
Array collection, handel functional array as chain method
Create New Collection
$coll = new Collection(['vb_net', 'c_sharp', 'java', 'python', 'php', 'javascript', 'html']); $arr = $coll ->remove('html') ->sort() ->filter(fn ($item) => strlen($item) > 4) ->map(fn ($item) => ucfirst($item)) ->each(function($item) { echo $item . PHP_EOL; }) ->all() ; // arr = ['c_sharp', 'javascript', 'python', 'vb_net']
Available Methods
add()
remove()
set()
clear()
replace()
each()
map
filter()
sort()
sortDesc()
sortKey()
sortKeyDesc()
sortBy()
sortByDecs()
all()
Console
Assembling beautifully console app make easy
- naming parameter
- coloring console (text and background)
Build simple console app
class GreatConsole extends Console { public function main() { // getter to get param form cli argument $name = $this->name ?? 'animus'; style("Great console Application") ->textGreen() ->newLines() ->push("hay my name is ") ->push($name) ->textYellow() ->out() ; } }
Run your app
- create bootstrapper
#!usr/bin/env php // $argv come with default global php return (new greatConsole($argv))->main();
- on your console
php cli greate --name php_mvc # output: # Great console application # hay my name is php_mvc
Str
Make string manipulation.
Str::chartAt('i love php', 3); // o Str::concat(['i', 'love', 'php']); // i love php Str::indexOf('i love php', 'p'); // 8 Str::lastIndexOf('i love php', 'p'); // 10 Str::match('i love php', '/love/'); // love // ... // and many more
chartAt
concat
indexOf
lastIndexOf
match
slice
split
replace
toUpperCase
toLowerCase
firstUpper
firstUpperAll
toSnackCase
toKebabCase
toPascalCase
toCamelCase
contains
startsWith
endsWith
slug
template
length
repeat
isString
isEmpty
fill
fillEnd
limit
Custom Macro
custom macro string;
Str::macro('prefix', fn($text, $prefix) => $prefix.$test); echo Str::prefix('cool', 'its '); // it's cool
String class
use chain string class.
$string = new Text('I Love rust'); echo $string->replace('rust', 'php')->lower()->slug(); // i-love-php echo $string->length(); // 10 echo $string->isEmpty(); // false
String Regex
Str::is('some@email.com', Regex::EMAIL); // true
available regex
email
user
plain_text
slug
html_tag
js_inline
password_complex
password_moderate
date_yyyymmdd
date_ddmmyyyy
date_ddmmmyyyy
ip4
ip6
ip4_6
url