# weiwo **Repository Path**: wycto/weiwo ## Basic Information - **Project Name**: weiwo - **Description**: weiwo是一款基于swoole开发的mvc框架 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # weiwo ## 介绍 weiwo是一款基于swoole-cli开发的PHP框架,采用最新的PHP 8.4语法和特性,支持多应用、多数据库驱动和模板解析。 ### 核心特性 - **多应用支持**:通过应用目录结构实现多应用隔离,支持Web和API等不同类型的应用 - **数据库驱动**:内置支持MySQL、Redis和PostgreSQL等多种数据库 - **模板引擎**:内置简单高效的模板解析引擎,支持模板标签和缓存 - **Swoole服务器**:基于Swoole的HTTP服务器,支持异步处理和高并发 - **路由系统**:灵活的路由系统,支持参数路由和RESTful API - **日志系统**:内置完整的日志系统,支持多级别日志和按日期分割 - **服务管理**:支持通过HTTP请求重启和停止服务器 - **现代PHP**:充分利用PHP 8.4的新特性,如命名参数、联合类型等 ## 软件架构 ### 框架结构 ``` weiwo/ ├── app/ # 应用目录 │ ├── api/ # API应用 │ │ ├── controllers/ # 控制器 │ │ ├── models/ # 模型 │ │ ├── views/ # 视图 │ │ └── routes.php # 路由配置 │ └── web/ # Web应用 │ ├── controllers/ # 控制器 │ ├── models/ # 模型 │ ├── views/ # 视图 │ └── routes.php # 路由配置 ├── weiwo/ # 框架核心 │ ├── core/ # 核心类 │ │ ├── App.php # 应用核心 │ │ ├── Controller.php # 控制器基类 │ │ ├── Model.php # 模型基类 │ │ ├── View.php # 视图基类 │ │ ├── Router.php # 路由处理 │ │ ├── Database.php # 数据库抽象 │ │ └── Log.php # 日志处理 │ ├── database/ # 数据库驱动 │ │ ├── Mysql.php # MySQL驱动 │ │ ├── Redis.php # Redis驱动 │ │ └── Pgsql.php # PostgreSQL驱动 │ ├── template/ # 模板引擎 │ │ └── Engine.php # 模板解析引擎 │ ├── config/ # 配置文件 │ │ ├── app.php # 应用配置 │ │ ├── database.php # 数据库配置 │ │ ├── server.php # 服务器配置 │ │ └── log.php # 日志配置 │ └── utils/ # 工具类 │ └── Helper.php # 辅助函数 ├── public/ # 公共目录 ├── storage/ # 存储目录 │ ├── cache/ # 缓存目录 │ │ └── templates/ # 模板缓存 │ └── logs/ # 日志目录 ├── swoole.php # Swoole服务器启动文件 ├── composer.json # Composer配置 └── .env # 环境变量配置 ``` ### 架构说明 - **核心层**:包含框架的核心类,负责应用初始化、请求处理、路由分发等基础功能 - **驱动层**:提供不同数据库的驱动实现,支持多种数据库操作 - **模板层**:实现模板解析和渲染功能,支持模板标签和缓存 - **应用层**:开发者编写的应用代码,包括控制器、模型和视图 ## 安装教程 ### 环境要求 - PHP 8.4+ (必须) - Swoole 6.1.4+ 扩展 (必须) - Composer (推荐) ### 安装步骤 1. **克隆仓库** ```bash git clone https://gitee.com/wycto/weiwo.git cd weiwo ``` 2. **安装依赖** ```bash composer install ``` 3. **配置环境变量** 复制`.env`文件并根据实际情况修改配置: ```bash cp .env.example .env # 编辑.env文件,配置数据库连接和服务器参数 ``` 4. **启动服务器** ```bash swoole-cli swoole.php ``` 服务器默认会在 `http://0.0.0.0:9504` 启动(可在.env文件中修改端口配置) ## 使用说明 ### 日志功能 weiwo框架内置了完整的日志系统,支持8个日志级别:debug, info, notice, warning, error, critical, alert, emergency。 #### 使用示例 ```php // 使用辅助函数 debug('调试信息'); info('信息日志'); notice('通知日志'); warning('警告日志'); error('错误日志'); critical('严重错误'); alert('警报日志'); emergency('紧急日志'); // 带上下文信息 error('用户登录失败', [ 'user_id' => 123, 'ip' => '192.168.1.1' ]); // 使用Log类 use weiwo\Core\Log; Log::getInstance()->info('服务器启动成功'); ``` #### 日志配置 在`.env`文件中配置日志级别和分割方式: ``` # 日志配置 LOG_LEVEL=debug LOG_DAILY=true ``` #### 日志存储 日志文件存储在`storage/logs/`目录下,按日期分割,格式为`app-YYYY-MM-DD.log`。 ### 服务管理API weiwo框架支持通过HTTP请求来管理服务器,包括重启和停止操作。 #### 重启服务器 ```bash curl http://localhost:9504/api/server/restart ``` #### 停止服务器 ```bash curl http://localhost:9504/api/server/stop ``` ### 创建应用 1. **创建新应用目录** 在`app/`目录下创建新的应用目录,如`admin/` 2. **配置应用路由** 在新应用目录下创建`routes.php`文件,定义路由规则: ```php return [ ['get', '/', 'HomeController@index'], ]; ``` 3. **创建控制器** 在`controllers/`目录下创建控制器文件: ```php namespace app\Admin\Controllers; use weiwo\Core\Controller; class HomeController extends Controller { public function index() { return $this->view('home/index', [ 'title' => 'Admin Dashboard', ]); } } ``` 4. **配置应用** 在`weiwo/config/app.php`文件中添加新应用配置: ```php 'apps' => [ // ... 现有应用 'admin' => [ 'namespace' => 'app\\Admin', 'path' => app_path('admin'), 'routes' => app_path('admin/routes.php'), ], ], ``` ### 数据库操作 #### MySQL操作 ```php // 在模型中使用 namespace app\Web\Models; use weiwo\Core\Model; class User extends Model { // 自动对应users表 } // 使用示例 $user = new User(); $user->create(['name' => 'John Doe', 'email' => 'john@example.com']); $users = $user->findAll(); ``` #### Redis操作 ```php use weiwo\Core\Database; $redis = Database::getInstance()->connection('redis'); $redis->set('key', 'value', 3600); $value = $redis->get('key'); ``` ### 模板使用 在视图文件中使用模板标签: ```php {{ $title }}

{{ $title }}

{{ $message }}

@if($user)

Welcome, {{ $user['name'] }}!

@endif @foreach($items as $item)
  • {{ $item['name'] }}
  • @endforeach ``` ## 路由配置 ### Web应用路由 ```php // app/web/routes.php return [ ['get', '/', 'HomeController@index'], ['get', '/about', 'HomeController@about'], ['get', '/user/{id}', 'UserController@show'], ]; ``` ### API应用路由 ```php // app/api/routes.php return [ ['get', '/', 'ApiController@index'], ['get', '/users', 'UserController@index'], ['get', '/users/{id}', 'UserController@show'], ['post', '/users', 'UserController@store'], ['put', '/users/{id}', 'UserController@update'], ['delete', '/users/{id}', 'UserController@destroy'], ]; ``` ## 配置文件 ### 应用配置 ```php // weiwo/config/app.php return [ 'env' => env('APP_ENV', 'development'), 'debug' => env('APP_DEBUG', true), 'name' => env('APP_NAME', 'weiwo'), 'default_app' => 'web', 'apps' => [ // 应用配置 ], ]; ``` ### 数据库配置 ```php // weiwo/config/database.php return [ 'default' => env('DB_DEFAULT', 'mysql'), 'connections' => [ 'mysql' => [ // MySQL配置 ], 'redis' => [ // Redis配置 ], 'pgsql' => [ // PostgreSQL配置 ], ], ]; ``` ### 服务器配置 ```php // weiwo/config/server.php return [ 'host' => env('SERVER_HOST', '0.0.0.0'), 'port' => env('SERVER_PORT', 9504), 'mode' => constant(env('SERVER_MODE', 'SWOOLE_PROCESS')), 'sock_type' => constant(env('SERVER_SOCK_TYPE', 'SWOOLE_SOCK_TCP')), 'settings' => [ // Swoole服务器设置 ], ]; ``` ### 日志配置 ```php // weiwo/config/log.php return [ // 日志级别: debug, info, notice, warning, error, critical, alert, emergency 'level' => env('LOG_LEVEL', 'debug'), // 日志存储路径 'path' => storage_path('logs'), // 日志文件名称格式 'filename' => 'app.log', // 是否按日期分割日志文件 'daily' => env('LOG_DAILY', true), // 日志文件权限 'permission' => 0644, // 日志格式 'format' => '[%datetime%] %level%: %message% %context% %extra%\n', ]; ``` ## 参与贡献 1. **Fork 本仓库** 2. **新建 Feat_xxx 分支** 3. **提交代码** 4. **新建 Pull Request** ## 许可证 MIT ## 联系我们 - 项目地址:https://gitee.com/wycto/weiwo - 作者:wycto