Php mvc with minum mvc framework. is simple and easy to use
Note: This repository contains the core code of the php-mvc. If you want to build an application, visit the main php-mvc.
Note: This repository high inspire with
laravel\framework
andsymfony\symfony
.
- MVC base
- Container (dependency injection)
- Route
- Model (database class relation)
- View and Controller
- MyQuery (database query builder)
- Collection (array collection)
- Console (assembling beutifull console app)
- Template (create class using class generator)
- Cron
- Now (time managing)
- Http request and responese
- Str (string manipulation)
of cource we are support CRUD data base, this a sample
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
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 boolen true if sql success excute quert, 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
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 transation if you needed
use System\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
Schema::table('users', function(Column $column) {
$column('user')->varchar(50);
$column('pwd')->varchar(500)->notNull();
$column->primeryKeys('user');
})
->excute();
Array collection, handel functional array as chain method
$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']
add()
remove()
set()
clear()
replace()
each()
map
filter()
sort()
sortDesc()
sortKey()
sortKeyDesc()
sortBy()
sortByDecs()
all()
Assembling beautifull console app make easy
- naming parameter
- coloring console (text and background)
class GreatConsole extends Console
{
public function main()
{
// getter to get param form cli argument
$name = $this->name ?? 'animus';
style("Great console Aapplication")
->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
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
costume macro string;
Str::macro('prefix', fn($text, $prefix) => $prefix.$test);
echo Str::prefix('cool', 'its '); // its cool
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
Str::is('[email protected]', Regex::EMAIL); // true
avlilable 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