# boaFramework
**Repository Path**: mirrors/boaFramework
## Basic Information
- **Project Name**: boaFramework
- **Description**: boa是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://www.oschina.net/p/boaframework
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-10-13
- **Last Updated**: 2026-02-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 介绍

boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发。
# 安装
* 命令行下切换至www目录执行:php boa -b
* 或者浏览器中直接访问:http://localhost
# 升级
直接覆盖
# 帮助
* 官网:http://boasoft.top
* 文档:http://boasoft.top/doc/
# 示例
## 示例控制器
```php
namespace mod\doc\controller;
use boa\boa;
use boa\msg;
use boa\controller;
class index extends controller{
public function __construct(){
parent::__construct();
}
public function index(){
$this->view->assign('title', 'boa框架开发文档'); //模板赋值
$this->view->html(); //从模板www/tpl/doc/index/index.html输出html
}
public function menu(){
$model = boa::model('doc.content'); //访问doc模块中content模型
$data = $model->list_content($this->cid); //从模型获取数据
// GET/POST/COOKIE数据中的cid可以直接用$this->cid访问,配置验证规则后会自动验证
$this->view->json($data); //输出json数据
}
}
```
## 示例验证规则
如欲对示例控制器中cid进行验证,可以配置mod/doc/variable/index/menu.php
```php
return [
'cid' => [
'label' => '栏目ID', //标签名
'check' => 'required', //检查规则:必需
'filter' => 'intval' //过滤规则:转为整型
]
]
```
## 类的访问
boa命名空间下的类可以直接通过boa类访问
```php
//使用默认或静态配置(config.php中配置)
boa::cache()->get('language');
//动态配置一
boa::cache(['expire' => 86400])->get('language');
//动态配置二
$cache = boa::cache();
$cache->cfg('expire', 86400);
$cache->get('language');
```
## 控制器之间的访问
```php
//后端调用其他控制器方法并返回结果,可以带参数
$res = boa::call('news.content.show', ['id' => 1]);
```
## 访问模块中的库
```php
//访问admi模块中library/test.php
boa::lib('admin.test')->get();
//访问当前模块中library/test.php
boa::lib('test')->get();
```
## 数据库操作
```php
//访问database类,等同boa::database()
$db = boa::db();
$data = ['title'=>'Title', 'content'=>'Content'];
$res = $db->table('news')->insert($data); //插入
$res = $db->table('news')->where('id = ?', 1)->delete(); //删除
$res = $db->table('news')->where('id = ?', 1)->update($data); //更新
//联合查询
$arr = $db->table('news A')
->field('A.*, B.category AS cat, COUNT(C.*) total')
->join('category B', 'A.cid = B.id')
->join('tag C', 'A.id = C.pid')
->where('A.cid = ? AND A.status = ?', 9, 1)
->limit(50, 10)
->order('A.sort ASC, A.id DESC')
->select();
//单行查询
$arr = $db->table('news')->where('id = ?', 1)->find();
```
## 示例模板
示例控制器中的模板www/tpl/doc/index/index.html
```javascript
{inc inc.head} //包含inc/head.html
{$arr news.content.show 1} //获取模型数据,参数id=1
{list $arr $k $v} //循环输出$arr
{$k} : {$v}
//默认序号
{$i++} : {$v}
//自定义从1开始的序号
{/list}
{date Y-m-d {time}} //调用date函数,支持嵌套time函数
{if {date Y-m-d} == 2020-01-01 or ($a > 1 && $b == 2)} //多条件判断
...
{elseif {date Y-m-d} == 2020-02-02 || $c == 3}
...
{else}
...
{/if}
{@news.error.1001} //调用news模块语言包中error.php中1001标签
```
## 多语言
```php
//调用boa内核语言包中error.php中2标签,带替换参数
boa::lang('boa.error.2', 'home/controller/test.php');
//调用home模块语言包中news.php中title标签
boa::lang('home.news.title');
```