Skip to content

C语言编写的PHP扩展-MVC框架,以高性能为目标。

Notifications You must be signed in to change notification settings

shiftwinting/cspeed

Repository files navigation

CSpeed

www.supjos.cn			All Rights Reserved.

CSpeed 是一个全堆栈的C语言PHP扩展, 基于MVC模式,专为高性能的API设计开发。 开发环境: Linux、PHP7.1.5、Nginx

一个简单的 示例 :

/* 实例化扩展程序类 */
$app = new supjos\mvc\App();

/* 命名空间引入类使用方式如下: 
 * 系统默认内置app命名空间别名指向当前index.php入口文件目录
 * 用户可以通过$app->setAlias('@backend', __DIR__ . '/backend');来设置不同的模块别名
 * 如果定义如下一个类
 * namespace app;
 * class Cspeed{
 *     function sayVersion(){
 *         echo "Yes, CSpeed class";
 *     }
 * }
 * // 那么当你在实例化对象时系统自动在当前目录下查找 Cspeed.php文件
 * $speed = new \app\Cspeed();
 * // 当你设置了其余的别名后,系统会自动进行识别并加载类文件
 */

/**
 *  处理GET请求, 
 *  第一个参数支持使用正则表达式进行URL匹配.
 *  第二个参数表示一个匹配URL后进行的函数操作
 *  第二个参数支持两种类型的参数: 匿名函数|实现 ```supjos\mvc\Callback```接口的类
 */
$app->get('/index/index$', function($controller){
	echo '<div style="width:200px;margin: 0 auto;"><h1>Hello CSpeed.</h1></div>';
});

/**
 * 或者如下的形式,方便进行MVC三层开发
 */
  $app->get('/index', new class implements supjos\mvc\Callback(){
  	/** 
  	 * 接口仅包含一个方法 : init
  	 */
  	function init($controller){
  		/* 您可以在此方法里面将请求转发至其余的控制器方法 */
  		echo '<div style="width:200px;margin: 0 auto;"><h1>Hello CSpeed.</h1></div>';
  	}
  });

IOC注入容器类

$di = new supjos\tool\Di();

$di->set('view', function(){
	/* 返回此注入类的实例 */
	return new supjos\mvc\View();
});

/* 当需要从容器中获取时 */
$view = $di->get('view');

View

/* 实例化视图类 */
$view = new supjos\mvc\View();

/* 操作视图进行渲染 */
$view->render('index.phtml', ['version'=>'1.1.8', 'engine'=>'CSpeed']);

/* 将变量或者内容输出到模版,可以重复多次调用 */
$view->setVar('version', 'v12.1');

/* 渲染视图 */
$view->partial('test.phtml',['version'=>'v1.8.1']);

/* 将视图内容进行获取而不输出 */
$viewData = $view->getRender('test.phtml', ['version'=>'v1.8.1', 'engine'=>'CSpeed']);

模型

/*下个版本考虑加入连接池功能*/

$mysql = new supjos\mvc\MySql(
	[
		'dsn' 	   => 'mysql:host=localhost;dbname=cspeed',
		'username' => 'root',
		'password' => 'Root@localhost'
	]
);

/* 查询满足条件的所有数据 */
$goods = $mysql->select(['id', 'price', 'good_name'])
			 ->from('www_good')
			 ->where(['price'=>'8.8])
			 ->orderBy('price DESC')
			 ->findAll();
 
/* 查询满足条件的一条数据 */
$goods = $mysql->select(['id', 'price', 'good_name'])
			 ->from('www_good')
			 ->where(['price'=>'8.8])
			 ->orderBy('price DESC')
			 ->findOne();
			 
/* 原生SQL查询, 使用预处理绑定参数 */
$goods = $mysql->query('SELECT * FROM www_good WHERE price >:price', [ ':price'=>'8.8' ]);

/* 原生SQL语句更新或者删除 */
$rows = $mysql->execute(' INSERT INTO www_good (id, price, good_name) VALUES ( :id, :price, :good_name ) ', 
	[ ':id'=>'22', ':price'=>'89.8', ':good_name'=>'Apple' ]);

$rows = $mysql->execute(' UPDATE www_good SET price=:price, good_name=:good_name WHERE id=:id ', 
	[ ':id'=>'22', ':price'=>'89.8', ':good_name'=>'Apple' ]);

/* 批量插入 */
$data = [];
for ($i = 0; $i < 10000; $i++){
	$data[] = [
		$i,
		$i+1,
		$i+2,
		$i+3
	];
}
$rows = $mysql->insert('www_product', ['id', 't_id', 'r_id', 'j_id], $data);

REQUEST、RESPOSNE

/**
 * HTTP REQEUST
 */
$request = new supjos\net\Request();

/* 是否GET请求 */
$request->isGet();

/* 是否POST请求 */
$request->isPost();

/* 是否PUT请求 */
$request->isPut();

/* 是否DELETE请求 */
$request->isDelete();

/* 是否HEAD请求 */
$request->isHead();

/* 是否OPTIONS请求 */
$request->isOptions();

/* 获取$_GET */
$request->get();

/* 获取$_POST */
$request->getPost();

/* 获取QUERY_STRING */
$request->getQuery();

/*获取USER-AGENT */
$request->getUserAgent();

/* 获取ReqeustUri */
$request->getRequestUri();


/* HTTP Resposne */
$response = new supjos\net\Response();

/* 设置响应的JSON内容 */
$response->setJsonData(['hello'=>'Speed']);

/* 设置响应的原生内容 */
$response->setRawData("Hello CSpeed");

/* 渲染设置的内容 */
$response->send();

/* 设置响应HTTP头 */
$response->setHeader($key, $value);

About

C语言编写的PHP扩展-MVC框架,以高性能为目标。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published