sonypradana / php-library

用于构建PHP MVC的库

v0.36.3 2024-09-26 06:52 UTC

README

Php mvc with minum mvc framework. 简单易用

注意: 此存储库包含php-mvc的核心代码。如果您想构建应用程序,请访问主php-mvc

注意: 此存储库深受 laravel\frameworksymfony\symfony 的启发。

功能

  • MVC基础
  • 容器(依赖注入)
  • 路由
  • 模型(数据库类关系)
  • 视图和控制器
  • MyQuery(数据库查询构建器)
  • Collection(数组集合)
  • Console(构建美观的命令行应用程序)
  • 模板(使用类生成器创建类)
  • 定时任务
  • Now(时间管理)
  • HTTP请求和响应
  • Str(字符串操作)

内置查询构建器

当然,我们支持CRUD数据库,这是一个示例

选择数据

DB::table('table_name')
  ->select(['column_1'])
  ->equal('column_2', 'fast_mvc')
  ->order("column_1", MyQuery::ORDER_ASC)
  ->limit(1, 10)
  ->all()
;

结果将显示查询中的数据,与SQL查询相同

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()
;

如果SQL查询成功执行,结果将是布尔值true,与SQL查询相同

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()
;

如果您需要,支持取消事务

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;
});

创建数据库表

创建数据库表

  Schema::table('users', function(Column $column) {
    $column('user')->varchar(50);
    $column('pwd')->varchar(500)->notNull();
    $column->primeryKeys('user');
  })
  ->excute();

🔝 返回内容

集合

数组集合,将功能数组处理为链式方法

创建新集合

$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()

🔝 返回内容

控制台

构建美观的命令行应用程序变得简单

  • 命名参数
  • 着色控制台(文本和背景)

构建简单的控制台应用程序

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()
    ;
  }
}

运行您的应用程序

  • 创建启动器
#!usr/bin/env php

// $argv come with default global php
return (new greatConsole($argv))->main();
  • 在您的控制台
php cli greate --name php_mvc

# output:
# Great console application
# hay my name is php_mvc

🔝 返回内容

Str

进行字符串操作。

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
  • toSnakeCase
  • toKebabCase
  • toPascalCase
  • toCamelCase
  • contains
  • startsWith
  • endsWith
  • slug
  • template
  • length
  • repeat
  • isString
  • isEmpty
  • fill
  • fillEnd
  • limit

自定义宏

自定义宏字符串;

Str::macro('prefix', fn($text, $prefix) => $prefix.$test);

echo Str::prefix('cool', 'its '); // its cool

String类

使用链式字符串类。

$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

可用的正则表达式

  • email
  • user
  • plain_text
  • slug
  • html_tag
  • js_inline
  • password_complex
  • password_moderate
  • date_yyyymmdd
  • date_ddmmyyyy
  • date_ddmmmyyyy
  • ip4
  • ip6
  • ip4_6
  • url

🔝 返回内容