# FinchPHP **Repository Path**: 106179185/finch-php ## Basic Information - **Project Name**: FinchPHP - **Description**: 小型MCV框架 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-27 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FinchPHP 框架 一个轻量级、灵活的 PHP MVC 框架,支持多数据库、缓存系统、环境变量配置。内置企业网站 Demo 应用作为示例。 ## ✨ 特性 - **🚀 轻量级框架**:核心代码简洁,易于学习和扩展 - **🔧 环境变量配置**:支持 `.env` 文件,生产/开发环境轻松切换 - **🗄️ 多数据库支持**:SQLite / MySQL / PostgreSQL 一键切换 - **⚡ 缓存系统**:文件缓存 + Redis 缓存,统一 API - **📝 模板引擎**:自定义模板引擎,支持继承、包含、修饰符 - **🎯 自动路由**:固定格式 `/module/controller/action`,简洁明了 - **📦 模块化管理**:应用模块 `lib/` 目录自动加载 - **🔒 安全机制**:输入过滤、密码加密、CSRF 防护 --- ## 📁 目录结构 ``` finch-php/ ├── core/ # 框架核心(与业务无关) │ ├── App.php # 应用主类(路由、自动加载、错误处理) │ ├── Cache.php # 缓存系统(File/Redis) │ ├── Controller.php # 控制器基类 │ ├── Database.php # 数据库操作类(多驱动) │ ├── Env.php # 环境变量加载 │ ├── Model.php # 模型基类 │ ├── Request.php # 请求处理 │ ├── Session.php # Session 管理 │ ├── Upload.php # 文件上传 │ ├── View.php # 模板引擎 │ └── functions.php # 框架公共函数 │ ├── app/ # 应用模块(Demo 示例) │ ├── common/lib/ # 共享函数库 │ ├── home/ # 前台模块 │ │ ├── controller/ # 控制器 │ │ ├── view/ # 视图模板 │ │ └── lib/ # 模块专属函数 │ └── admin/ # 后台模块 │ ├── controller/ │ ├── view/ │ └── lib/ │ ├── public/ # 公开资源 │ ├── assets/ # CSS/JS/图片 │ └── uploads/ # 上传文件 │ ├── runtime/ # 运行时目录 │ ├── cache/ # 文件缓存 │ └── logs/ # 日志文件 │ ├── install/ # 安装程序 ├── .env # 环境变量(不提交到版本控制) ├── .env.example # 环境变量示例 ├── config.php # 配置文件 ├── index.php # 入口文件 └── CHANGELOG.md # 更新日志 ``` --- ## 🚀 快速开始 ### 环境要求 - PHP 7.0 - 8.x(推荐 PHP 7.4+) - PDO 扩展(SQLite/MySQL/PostgreSQL) - JSON 扩展 - Mbstring 扩展 - Redis 扩展(可选,使用 Redis 缓存时需要) ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/yourname/finch-php.git cd finch-php ``` 2. **创建环境变量文件** ```bash cp .env.example .env # 编辑 .env,配置数据库等信息 ``` 3. **配置 Web 服务器** **Apache:** ```apache DocumentRoot /path/to/finch-php ``` **Nginx:** ```nginx server { listen 80; root /path/to/finch-php; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ``` 4. **运行安装向导** 浏览器访问网站,自动跳转到 `/install/`,按步骤完成: - 环境检测 - 数据库配置(SQLite/MySQL/PostgreSQL) - 网站设置 - 管理员账号 5. **完成** 访问前台 `/` 或后台 `/admin` --- ## 📖 使用文档 ### 路由 固定格式:`/module/controller/action` | URL | 解析结果 | |-----|----------| | `/` | home/index/index | | `/product` | home/product/index | | `/product/detail/1` | home/product/detail(1) | | `/admin/login` | admin/login/index | ### 控制器 ```php db->table('products') ->where('status', 1) ->select(); $this->assign('products', $products); $this->display('product/list'); } // 访问地址: /product/detail/1 public function detail($id) { $product = $this->db->table('products') ->where('id', $id) ->find(); $this->assign('product', $product); $this->display('product/detail'); } } ``` ### 数据库操作 ```php // 查询多条 $products = $this->db->table('products') ->where('status', 1) ->where('category_id', 1) ->order('id', 'DESC') ->limit(10) ->select(); // 查询单条 $product = $this->db->table('products') ->where('id', 1) ->find(); // 插入 $id = $this->db->table('products')->insert([ 'title' => '产品名称', 'content' => '产品内容' ]); // 更新 $this->db->table('products') ->where('id', 1) ->update(['title' => '新名称']); // 删除 $this->db->table('products') ->where('id', 1) ->delete(); ``` ### 缓存使用 ```php use Core\Cache; $cache = Cache::getInstance(); // 基本操作 $cache->set('key', 'value', 3600); // 缓存 1 小时 $value = $cache->get('key', 'default'); // Remember 模式(推荐) $products = $cache->remember('home_products', 600, function () { return $this->db->table('products')->select(); }); // 删除缓存 $cache->delete('key'); // 清空所有缓存 $cache->clear(); ``` ### 模板语法 ```html

{$title}

{foreach $products as $product}
{$product.title|truncate:20}
{/foreach} {if $status == 1} 正常 {else} 禁用 {/if} {include file="header"} {extends file="layout/main"} {block name="content"} 内容区域 {/block} ``` --- ## ⚙️ 配置说明 ### 环境变量 (.env) ```env # 应用 APP_ENV=development APP_DEBUG=true APP_NAME=FinchPHP # 数据库 DB_TYPE=mysql # sqlite / mysql / pgsql DB_HOST=localhost DB_PORT=3306 DB_NAME=website DB_USER=root DB_PASS=your_password DB_PREFIX=f_ # 缓存 CACHE_DRIVER=file # file / redis CACHE_PREFIX=finch_ CACHE_TTL=3600 # Redis(使用 Redis 缓存时) REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASS= REDIS_DB=0 ``` ### 配置文件 (config.php) ```php return [ 'debug' => env('APP_DEBUG', true), 'database' => [ 'type' => env('DB_TYPE', 'mysql'), 'mysql' => [ 'host' => env('DB_HOST', 'localhost'), 'port' => (int) env('DB_PORT', 3306), // ... ], ], 'cache' => [ 'driver' => env('CACHE_DRIVER', 'file'), 'prefix' => env('CACHE_PREFIX', 'finch_'), 'ttl' => (int) env('CACHE_TTL', 3600), ], 'route' => [ 'default' => [ 'module' => 'home', 'controller' => 'index', 'action' => 'index', ], ], ]; ``` --- ## 📝 更新日志 详见 [CHANGELOG.md](CHANGELOG.md) --- ## 📄 许可证 MIT License --- ## 🤝 贡献 欢迎提交 Issue 和 Pull Request!