# Php WebView Frame **Repository Path**: kllxs_admin/php-webview-frame ## Basic Information - **Project Name**: Php WebView Frame - **Description**: 🏆 基 于 webview2 开 发 桌 面 应 用 框 架 , js 和 php 直 接 交 互 ,无 需 套 壳。 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: http://pwv.kllxs.top/ - **GVP Project**: No ## Statistics - **Stars**: 27 - **Forks**: 4 - **Created**: 2024-02-23 - **Last Updated**: 2025-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: PHP, GUI ## README PHP 桌面应用开发 =============== Q群讨论:515415726 [](http://www.php.net/) [](https://www.php.net/manual/zh/class.ffi) [](https://packagist.org/packages/kingbes/framework) ## 要求 * PHP `8.1+` * FFI `*` * 系统 `windows` # 单独使用 ```shell composer create-project kingbes/framework desktop ``` # 获取依赖 ```shell cd src composer install ``` ## 启动应用 双击`windows.bat`文件 仅 `windows` 系统 自带环境 ```shell .\php\php.exe src/index.php ``` 自己系统环境 ```shell php src/index.php ``` # 命名规范 遵循PSR-2命名规范和PSR-4自动加载规范。 # 编译 仅 `windows` 系统 ```shell .\php\php.exe build.php -exclude="\view" ``` ## 更多编译指令 `-debug` `-name=xxx` `-exclude="\xxx"` ```shell .\php\php.exe build.php -debug # 编译为debug .\php\php.exe build.php -name=myapp # 文件名为 myapp .\php\php.exe build.php -exclude="\view" # 忽略文件夹view 批量忽略:-exclude="\view,\asd\123.txt,..." ``` # 开发文档 ## 基础 ### 根目录结构 ``` ├─php php环境 │ ├─src 应用目录 ├─build.php 编译执行文件 ├─compiler.exe win编译文件 ├─favicon.ico 图标文件 ├─README.md README 文件 └─windows.bat windows执行文件 ``` ### `src`目录结构 ``` ├─app 应用目录 │ ├─config 配置目录 │ │ ├─app.php 应用配置 │ │ ├─database.php 数据库配置 │ │ ├─menu.php 图标菜单配置 │ │ └─middleware.php 中间件配置 │ │ │ ├─controller 控制器目录 │ ├─kingbes 源码目录 │ ├─middleware 中间件目录 │ ├─ ... 更多类库目录 │ │ │ ├─public.php 公共函数文件 │ └─sqlite3.db sqlite文件 │ ├─vendor Composer类库目录 ├─view 视图目录 ├─composer.json composer 定义文件 ├─index.php 入口文件 └─README.md README 文件 ``` ### 配置 #### app.php 应用配置 ```php return [ // 窗口 "windows" => [ // 标题 "title" => "PHP GUI", // 宽 "width" => 640, // 高 "height" => 480, // 是否测试模式 ,非测试模式:false "debug" => true ], // 默认控制器 "default_controller" => "Home", // 默认时区 "default_timezone" => "Asia/Shanghai", // 视图 "default_view" => [ // 目录名 "dirname" => "view", // 文件后缀 "suffix" => "html" ] ]; ``` #### database.php 采用独立的`ThinkORM`库 数据库配置 ```php return [ 'default' => 'sqlite', 'connections' => [ 'sqlite' => [ // 数据库类型 'type' => 'sqlite', // 数据库名 'database' => app_path("sqlite3.db"), // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', ], ], ]; ``` #### menu.php 小图标菜单配置 ```php return [ [ "name" => "显示", // 名称 "fn" => function () { // 点击后触发的函数 app()->show_win(); // 触发显示窗口函数 } ], [ "name" => "退出", "fn" => function () { app()->destroy_win(); // 关闭应用 } ] ... //追加更多 ]; ``` 效果  #### middleware.php 中间件配置 ```php return [ // 例子 app\middleware\TestMiddleware::class ]; ``` ## 控制器和视图 一个控制器文件对应一个视图文件,控制器 `Home.php` 对应视图 `Home.html`,文件名相同。 ### 公共函数 `Home.php` 控制器,每个公共函数绑定一个js函数,可直接在js中触发 ```php namespace app\controller; class Home { /** * get function * * @param integer $seq 触发次数 * @param array $req js传来的参数 * @return array */ public function get(int $seq, array $req): array { /** * 你的逻辑代码 */ ... return ["PHP WINDOWS GUI"]; } } ``` `Home.html` 视图触发 ```html