PHP code example of phpframe-project / template

1. Go to this page and download the library: Download phpframe-project/template library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

phpframe-project / template example snippets


use PHPFrame\Facades\Route;
use App\Controllers\Default\DefaultController;

// 闭包
Route::get('/', function() {
    return 'Hello World';
});

// 控制器方法
Route::get('/users', [UserController::class, 'listAction']);
Route::post('/users', [UserController::class, 'createAction']);
Route::put('/users/{id}', [UserController::class, 'updateAction']);
Route::delete('/users/{id}', [UserController::class, 'deleteAction']);

// 路由组
Route::group('/api', function () {
    Route::get('/users', [UserController::class, 'listAction']);
});

Route::shell('default/test', [DefaultShell::class, 'testAction']);

namespace App\Controllers\Default;

use PHPFrame\BaseController;

class UserController extends Controller
{
    public function listAction()
    {
        $page = $this->getParam('page', 1);
        $users = Db::table('users')->paginate(15, ['*'], 'page', $page);
        return $this->json(['code' => 0, 'data' => $users]);
    }

    public function createAction()
    {
        $data = $this->request->post();
        // 验证并创建...
        return $this->json(['code' => 0, 'message' => 'created']);
    }
}

namespace App\Controllers\Shell;

use PHPFrame\BaseShell;

class DefaultShell extends BaseShell
{
    public function testAction()
    {
        $params = $this->getParams();
        $this->output("参数: " . json_encode($params));
        $this->log("执行测试命令");
    }
}

use PHPFrame\Facades\Route;
use App\Middleware\AuthMiddleware;

// 全局中间件
Route::middleware(new CorsMiddleware());

// 路由级中间件
Route::registerMiddleware('auth', new AuthMiddleware());
Route::handlerMiddleware('App\Controllers\UserController@profile', ['auth']);

use PHPFrame\Facades\Log;
use PHPFrame\Facades\Db;
use PHPFrame\Facades\Cache;
use PHPFrame\Facades\Config;

Log::info('User logged in', ['user_id' => 123]);
$users = Db::table('users')->get();
Cache::set('key', 'value', 3600);
$name = Config::get('app.name');

// 单例服务
app()->set('my_service', function ($c) {
    return new MyService($c->get('db'));
});

// 原型服务(每次解析返回新实例)
app()->prototype('request', function ($c) {
    return Request::createFromGlobals();
});

// 使用
$service = app('my_service');

// 读取
config('app.name');
config('database.connections.default.host', '127.0.0.1');

// 运行时修改(不持久化)
app('config')->set('app.debug', true);

use PHPFrame\Facades\Cache;

Cache::set('key', 'value', 3600);
$value = Cache::get('key');
Cache::delete('key');
Cache::deleteByPattern('users:*');  // 模式删除(Redis)

use PHPFrame\Facades\Db;

// 查询构建器
$users = Db::table('users')->where('active', 1)->get();

// 事务
Db::transaction(function () {
    Db::table('users')->insert([...]);
    Db::table('orders')->insert([...]);
});

use PHPFrame\Facades\Log;

Log::info('Info message');
Log::error('Error message', ['context' => $data]);
Log::warning('Warning message');

// 在控制器中
return $this->render('/default/test.twig', ['name' => 'PHPFrame']);

return $this->json(['code' => 0, 'data' => $users]);

return $this->redirect('/login', 302);
bash
 location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
bash
# 前台运行
php cli.php server start --host=0.0.0.0 --port=8000 --worker=4

# 守护进程
php cli.php server start --host=0.0.0.0 --port=8000 --worker=4 --daemon

# 停止
php cli.php server stop
bash
php shell.php default/test name=user1 [email protected]
php shell.php database/tables
php shell.php database/describe table_name
php shell.php database/build-structure
php shell.php database/build-model-fields

config/app.php                # 基础配置
config/app.production.php     # 生产环境覆盖(APP_ENV=production 时自动合并)