PHP code example of kwin / yrphp-core
1. Go to this page and download the library: Download kwin/yrphp-core library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kwin / yrphp-core example snippets
//是否开启调试模式,默认不开启
define('DEBUG',true);
//定义项目目录
define("APP", 'App');
//框架入口文件
/**
* Project: YrPHP.
* Author: Kwin
* QQ:284843370
* Email:[email protected]
*/
namespace App\Boots;
use YrPHP\Routing\Router;
class AddRoutesBoot
{
function init()
{
Router::loadRoutesFrom(APP_PATH . 'Routes/web.php');
}
}
Route::get('/', function () {
return 'Hello World';
});
Route::post('foo/bar', function () {
return 'Hello World';
});
Route::put('foo/bar', function () {
//
});
Route::delete('foo/bar', function () {
//
});
Route::match(['get', 'post'], '/', function () {
return 'Hello World';
});
Route::any('foo', function () {
return 'Hello World';
});
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
//return "kwin"
Route::get('user/{name=kwin}', function ($name) {
return $name;
});
Route::get('user/{name}', [
'pattern'=>['name'=>'[A-Za-z]+']
'uses'=>function ($name) {
//
}
]);
Route::get('user/{id}', [
'pattern'=>['id'=>'[0-9]+']
'uses'=>function ($id) {
//
}
]);
Route::get('user/{id}/{name}', [
'pattern'=>['id'=>'[0-9]+', 'name' => '[a-z]+']]
'uses'=>function ($id, $name) {
//
}
]);
Route::pattern('id', '[0-9]+');
Route::get('user/{id}', function ($id) {
// Only called if {id} is numeric.
});
Route::get('user/profile', [
'as' => 'profile',
'uses' => function () {
//
}
]);
Route::get('user/profile', [
'as' => 'profile',
'uses' => 'App\\Controllers\\UserController@showProfile'
]);
Route::group(['as' => 'admin::'], function () {
Route::get('dashboard', [
'as' => 'dashboard',
'uses' => function () {
// 路由名称为「admin::dashboard」
}]);
});
$url = Route::url('profile');
Route::get('user/{id}/profile', [
'as' => 'profile',
'uses' =>function ($id) {
//
}
]);
$url = Route::rul('profile', ['id' => 1]);
Route::group(['middleware' => 'auth'], function () {
Route::get('/', function () {
// 使用 Auth 中间件
});
Route::get('user/profile', function () {
// 使用 Auth 中间件
});
});
Route::group(['namespace' => 'App\\Controllers'], function()
{
// 控制器在「App\Controllers」命名空间
Route::group(['namespace' => 'Admin'], function()
{
// 控制器在「App\Controllers\Admin」命名空间
});
});
Route::group(['prefix' => 'admin'], function () {
Route::get('users', function () {
// 符合「/admin/users」URL
});
});
Route::group(['prefix' => 'accounts/{account_id}'], function () {
Route::get('detail', function ($account_id) {
// 符合 accounts/{account_id}/detail URL
});
});
Route::resource('photos', 'PhotosController');
Route::resource('photos', 'PhotosController',
['only' => ['index', 'show']]);
Route::resource('photos', 'PhotosController',
['except' => ['create', 'store', 'update', 'destroy']]);
Route::resource('photos', 'PhotosController',
['names' => ['create' => 'photo.build']]);
Route::resource('photos.comments', 'PhotoCommentController');
namespace App\Controllers;
use YrPHP\Controller;
class PhotoCommentController extends Controller
{
/**
* 显示指定相片的评论。
*
* @param int $photoId
* @param int $commentId
* @return Response
*/
public function show($photoId, $commentId)
{
//
}
}
Route::get('photos/popular', 'PhotosController@method');
Route::resource('photos', 'PhotosController');
Route::controller('users', 'UserController');
namespace App\Controllers;
use YrPHP\Controller;
class UserController extends Controller
{
/**
* 响应对 GET /users 的请求
* 响应对 GET /users/index 的请求(PS:当有参数时必须带上`/index`)
*/
public function getIndex()
{
//
}
/**
* 响应对 GET /users/info/1 的请求
* GET /users/info 默认$id为1
*/
public function getInfo($id=1)
{
//
}
/**
* 响应对 POST /users/info 的请求
*/
public function postInfo()
{
//
}
/**
* 响应对 put /users/info/1 的请求
*/
public function putInfo($id)
{
//
}
/**
* 响应对 patch /users/info/1 的请求
*/
public function patchInfo($id)
{
//
}
/**
* 响应对 DETELE /users/info/1 的请求
*/
public function deleteInfo($id)
{
//
}
/**
* 响应对 GET /users/info 的请求
* 响应对 GET /users/info/1 的请求
* 响应对 POST /users/info/1 的请求
* 响应对 put /users/info/1 的请求
* 响应对 patch /users/info/1 的请求
* 响应对 delete /users/info/1 的请求
*/
public function anyInfo($id=null)
{
//
}
}
Route::controller('users', 'UserController', [
'getShow' => 'user.show',
]);
$config['urlSuffix'] = '.html';
/**
* Project: YrPHP.
* Author: Kwin
* QQ:284843370
* Email:[email protected]
*/
namespace App\Middleware;
use Closure;
use Response;
use YrPHP\IMiddleware;
use YrPHP\Request;
class Auth implements IMiddleware
{
public function handler(Request $request, Closure $next)
{
if (!session('admin')) {
Response::errorBackTo('您还没有登录,请先登录', '/admin/manager/login');
}
$next($request);
}
}
namespace App\Http\Middleware;
use Closure;
class BeforeMiddleware
{
public function handler($request, Closure $next)
{
// 执行动作
return $next($request);
}
}
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware
{
public function handler ($request, Closure $next)
{
$response = $next($request);
// 执行动作
return $response;
}
}
/**
* Project: swoole.
* Author: Kwin
* QQ:284843370
* Email:[email protected]
*/
namespace App\Boots;
use YrPHP\Boots\AddMiddleware as BootsAddMiddleware;
class AddMiddleware extends BootsAddMiddleware
{
/**
* 全局中间件
*
* @var array
*/
protected $middleware = [
\YrPHP\Middleware\DebugListen::class,
\YrPHP\Middleware\VerifyCsrfToken::class,
];
/**
* 所有的中间件别名
*
* @var array
*/
protected $routeMiddleware = [
'auth'=>\App\Middleware\Auth::class
];
/**
* 所有的中间件组
* @var array
*/
protected $middlewareGroups = [
'admin'=>[
'auth'
]
];
}
Route::get('/', function () {
//
})->middleware('admin');
Route::group(['middleware' => ['admin']], function () {
//
});
/**
* Created by PhpStorm.
* User: TOYOTA
* Date: 2017/3/16 0016
* Time: 14:05
*/
namespace App\Controllers\Admin;
use YrPHP\Controller;
class User extends Controller
{
function __construct()
{
parent::__construct();
$this->middleware('auth',['except'=>['login']]);
}
//....
}
use YrPHP\Controller;
class UserController extends Controller
{
function __construct()
{
parent::__construct();
}
function show($id)
{
echo "Hello World ".$id;
}
Route::get('user/{id}', 'UserController@show');
use YrPHP\Controller;
class Test extends Controller
{
function __construct()
{
parent::__construct();
}
function index(Request $request,$id,$name)
{
$data=$request->get();
var_export($data);
echo $id.$name;
}
//项目配置文件
return [
'urlType' => '2', //URL访问模式
'defaultCtl' => 'Index', // 默认控制器名称
//更多配置参数
//...
];
$charset = config('charset');//获得配置中的编码格式 =>YrPHP\Config::get('charset');两者等同
config('my_config','default_config');
$config = config();//return array;
YrPHP\Config::set('参数名称','新的参数值');
YrPHP\Config::set("openCache",false);//关闭数据库缓存,只在该次请求有效
YrPHP\Config::set(array(key=>value,key1=>value1));
YrPHP\Config::load('config_test');//=>APP_PATH . 'config/config_test.php'
'modelDir' => "Models", //设置模型目录位置
/--------------------以下是模版配置---------------------------------------/
'setTemplateDir' => APP_PATH . "views/", //设置模板目录位置
'setCompileDir' => APP_PATH . "runtime/compile_tpl/", //设置模板被编译成PHP文件后的文件位置
'auto_literal' => false, //忽略限定符周边的空白
'caching' => 1, //缓存开关 1开启,0为关闭
'setCacheDir' => (APP_PATH . "runtime/cache/"), //设置缓存的目录
'cacheLifetime' => 60 * 60 * 24 * 7, //设置缓存的时间 0表示永久
'leftDelimiter' => "{", //模板文件中使用的“左”分隔符号
'rightDelimiter' => "}", //模板文件中使用的“右”分隔符号
return \view::display('name');
\view::assign('name','yrPHP');//赋值单个数据
//等同于
return \view::display('name',array('name'=>'yrPHP'));
protected $caching = true; //bool 设置缓存是否开启 配置中可设置
protected $cacheLifeTime = 3600; //定义缓存时间 配置中可设置
protected $cacheDir; //定义生成的缓存文件路径 配置中可设置
protected $cacheSubDir; //定义生成的缓存文件的子目录默认为控制器名
protected $cacheFileName; //定义生成的缓存文件名 默认为方法名
private $cacheFile; //最后形成的缓存完整路径 根据前面参数生成
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
{yield body}
</body>
</html>
{extends layout}
{section body}
{456
{endsection}
<h1>hello world</h1>
<div>
{foreach($data as $k=>$v)}
{=$v->userName}
{/foreach}
</div>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>hello world</h1>
<div>
foreach($data as $k=>$v){
{=$test}
echo $test;
{=getUrl('public/css/style.css')}
{$i++}
{$i--}
{--$i}
{++$i}
{include header.html}
{
{assign $name='yrPHP'}
{$name}
{assign $config = config()}
{assign $i=10}
{if($i>=90)}
优秀
{elseif($i>=80)}
良
{else if( $i >= 60 )}
及格
{else}
不及格
{/if}
{assign $config = config()}
{foreach (config as k=>$v)}
<tr>
{if ($k=='openCache')}
{break}
{/if}
<td>{=$k}</td>
<td>{=$v}---</td>
</tr>
{/foreach}
{for(i=0;i<10;$i++)}
{if($i==5)}
{continue}
{/if}
{=$i}
<br/>
{/for}
{assign $i=10}
{while($i)}
{=$i}
</br>
{$i--}
{/while}
echo "Hello World";
/*
系统将自动添加定界符,其他同正则表达式
如下 在模版中调用方式为 {=dump $a}
*/
return array(
'=dump\s(.)\s*' => " var_dump( \1);
use YrPHP\Controller;
class MyController extends Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$data['arr'] = array(1,2,3,4,5,6);
return \view::display('index.html',$data);
}
}
/**
* 应用程序的事件监听器映射。
*
* @var array
*/
protected $listen = [
'App\Boots\ViewLog' => [
'App\Boots\ViewLogListen',
],
];
\Event::listen('event.name', function ($param1, $param2) {
//
});
\Event::fire('App\Boots\ViewLog');
namespace App\Boots;
class UserEventSubscriber
{
/**
* 处理用户登录事件。
*/
public function onUserLogin($event) {}
/**
* 处理用户注销事件。
*/
public function onUserLogout($event) {}
/**
* 为订阅者注册监听器。
*
* @param YrPHP\Event $events
*/
public function subscribe($events)
{
$events->listen(
'App\Boots\UserEventSubscriber\Login',
'App\Boots\UserEventSubscriber@onUserLogin'
);
$events->listen(
'App\Boots\UserEventSubscriber\Logout',
'App\Boots\UserEventSubscriber@onUserLogout'
);
}
}
namespace App\Boots;
use YrPHP\Event;
class EventBoot
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
//
];
protected $subscribe = [
'App\Boots\UserEventSubscriber'
];
/**
- Created by YrPHP.
- User: Kwin
- QQ:284843370
- Email:[email protected]
*/
return [
'defaultConnection' => 'default',
'default' => [
// 'master' => [],//主服务器
// 'slave' => [],//从服务器
'driver' => 'pdo', // 数据库类型
'type' => 'mysql', // 数据库类型
'host' => 'localhost', // 服务器地址
'dbname' => 'test', // 数据库名
'user' => 'root', // 用户名
'password' => 'root', // 密码
'port' => '3306', // 端口
'prefix' => '', // 数据库表前缀
'charset' => 'utf8',
]
];
//return int 受影响行数
DB::::table('user')->insert(['name'=>'kwin','age'=>'18']);
//inserts支付批量添加
//return int 受影响行数
DB::::table('user')->inserts([
['name'=>'kwin','age'=>'18'],
['name'=>'nathan','age'=>'26']
]);
//return int 受影响行数
DB::::table('user')->delete(['id <'=>3]);
DB::::table('user')->update(['name'=>'kwin']],['id'=>1]]);
//return int 受影响行数
DB::::table('user')->get('id','name');
//生成的SQL语句
//select `id`,`name` from `user`;
DB::::table('user')->select('field1,field2,field3')->get();
//生成的SQL语句
//select `field1`,`field2`,`field3` from `user`;
DB::::table('user')->get(['field1','field2','field3']);
//生成的SQL语句
//select `field1`,`field2`,`field3` from `user`;
//查询一条数据
DB::::table('user')->limit(1)->get();
//生成的SQL语句
//select * from `user` limit 1;
DB::::table('user')->where("id='100'")->get();
//生成的SQL语句
//select * from `user` where (id = '100');
DB::::table('user')->where("id='1659'")->where(array('id !='=>'1113','name like'=>'%kwin%'))->get();//前缀在config/database.php 设置 tablePrefix
//生成的SQL语句
//SELECT * FROM `prefix_user` where (id='1659') or ( `id` != '1113' or `name` like '%kwin%' )
DB::::table('user')->where("id='1596'")->where(array('id !='=>'1113','or fullname like'=>'%kwin%',
'and update_time between'=>array(10000 , 100000000)))->get();
//前缀在config/database.php 设置 tablePrefix
//生成的SQL语句
//SELECT * FROM `prefix_user` where (id='1596') and ( `id` != '1113' or `fullname` like '%kwin%' and `update_time` between '10000' and '100000000' )
DB::::table('user')->where(array('id in'=>array(1,2,3,4,5,6,7,8,9,10)))->get();
//生成的SQL语句
//SELECT * FROM `prefix_user` where ( `id` in(1,2,3,4,5,6,7,8,9,10))
DB::::table('user')->where(['id in'=>function($model){
return $model->table('test')->select('id')
->where(['name !='=>''])
->toSql();
}])->get();
//生成的SQL语句
//SELECT * FROM `prefix_user` where (id in (select `id` FROM `prefix_test` where (`name`!='')))
DB::::table('user')->order('id desc')->get();
//生成的SQL语句
SELECT * FROM `prefix_user` ORDER BY `id` desc
DB::::table('user')->order('ip')->get();
//生成的SQL语句
//SELECT * FROM `prefix_user` `GROUP BY `ip`
DB::::table('user')->group('id')->having(array('id >'=>'2000'))->get('users');
//生成的SQL语句
//SELECT * FROM `prefix_user` GROUP BY `id` having ( `id` > '2000' )
DB::::table('orders as a')->join('user as b', ['a.id'=>'b.id'], 'left')->get();
//生成的SQL语句
//SELECT * FROM `prefix_orders` as `a` LEFT JOIN `prefix_user` as `b` ON `a`.`id`=`b`.`id`
DB::table('user')->count();
//同
DB::table('user')->select('count(*) as count')->get()->row()->count;
//生成的SQL语句
//SELECT COUNT(*) as `count` FROM `prefix_user`
DB::::table('user')->max('id');
//同
DB::::table('user')->select('max(id) as max')->get()->row()->max;
//生成的SQL语句
//SELECT MAX(`id`) as `max` FROM `prefix_user`
DB::::table('user')->min('id');
//同
DB::::table('user')->select('min(id) as min')->get('users')->row()->min;
//生成的SQL语句
//SELECT MIN(`id`) as `min` FROM `prefix_user`
DB::::table('user')->sum('id');
//同
DB::::table('user')->select('sum(id) as sum')->get();
//生成的SQL语句
//SELECT SUM(`id`) as `sum` FROM `prefix_user`
DB::::table('user')->avg('users','id');
//同
DB::::table('user')->select('avg(id) as avg')->get();
//生成的SQL语句
//SELECT AVG(`id`) as `avg` FROM `prefix_user`
//返回一个包含结果集中所有行的数组,只获取列名
$re = DB::::query("select * from prefix_users");
$re = DB::::query("update prefix_users name='nathan' where id=500")->rowCount();
//修改 返回受影响的行数
$t= DB::::transaction(function () use($m) {
$m->insert(['name' => 'q1']);
$m->insert(['name' => 'q17567']);
$m->insert(['name1' => 'q3', 'age' => 24]);
});
//当恒等于true时,成功,其余情况为失败
var_export($t===true);
try{
DB::::startTrans();
DB::::query('一条SQL查询...');
DB::::query('另一条查询...');
re = DB::::query('还有一条查询...');
DB::::commit();
}catch (\Exception $e){
DB::::rollback();
}
//获得缓存实例 $dbCacheType 缓存驱动,有file memcache、memcached、redis,默认为file
$cache = YrPHP\Cache::getInstance($dbCacheType = null);
/**
* 设置缓存
* @param string $key 要设置值的key
* @param string $val 要存储的数据
* @param null $timeout 有效期单位秒 0代表永久 默认为配置文件中的cacheLifetime
* @return bool
*/
$cache->set($key, $val, $timeout = null);
/**
* 获取缓存
* @param $key
* @return mixed
*/
$cache->get($key = null);
/**
* 根据key值删除缓存
* @param string $key
*/
$cache->del($key = null);
/**
* 清空所有缓存 慎用
* @return mixed
*/
$cache->clear();
return array(
/*--------------------以下是数据库配置---------------------------------------*/
'openCache' => true, //是否开启缓存
'defaultFilter' => 'htmlspecialchars', // 默认参数过滤方法 用于I函数过滤 多个用|分割stripslashes|htmlspecialchars
'dbCacheTime' => 0, //数据缓存时间0表示永久
'dbCacheType' => 'file', //数据缓存类型 file|memcache|memcached|redis
//单个item大于1M的数据存memcache和读取速度比file
'dbCachePath' => APP_PATH . 'runtime/data/',//数据缓存文件地址(仅对file有效)
'dbCacheExt' => 'php',//生成的缓存文件后缀(仅对file有效)
'memcache' => '127.0.0.1:11211',//string|array多个用数组传递 array('127.0.0.1:11211','127.0.0.1:1121')
'redis' =>'127.0.0.1:6379',//string|array多个用数组传递 array('127.0.0.1:6379','127.0.0.1:6378')
);
$this->setCache(false);
//默认配置文件中openCache = true,临时关闭 可以用setCache 仅当前请求有效
$re = DB::::get('users');
echo DB::::lastQuery();
//等同于 DB::::lastSql()
//select * from `prefix_users`
$users = DB::::setconnection('two')->query(...);
namespace App\Models;
use YrPHP\Database\Model;
class User extends Model
{
//链接用database配置里的`conn1`数组
protected $connection = 'conn1';
//不写 默认操作user表
protected $table = 'users';
//默认主键为`id` 改写为`uid`
protected $primaryKey = 'uid';
}
// 通过主键取回一个模型...
$user = User::find(1);
// 取回符合查询限制的第一个模型 ...
$data = User::where(['status'=>1])->first();
echo $data->name;
echo $data['age'];
// 取回符合查询限制的所有模型 ...
$users = User::where(['name like'=>'%李%'])->get();
foreach ($users as $user) {
echo $user->name;
echo $user['age'];
}
php artisan route cache
php artisan route clear
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
shell
$ php artisan ide-help generate
/**
* Created by YrPHP.
* User: Kwin
* QQ:284843370
* Email:[email protected]
*/
namespace App\Controllers;
use YrPHP\Controller;
class Index extends Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$m = M('users');
$all =$m->all();
return \view::display('index',['data'=>$all]);
}
}
php
$user = User::find(1);
$user->name = 'kwin';
$user->email = '[email protected] ';
$user->save();
php
<?PHP
namespace App\Models;
use YrPHP\Database\Model;
class User extends Model
{
function __construct()
{
parent::__construct();
$this->tableName = 'user';
}
/**
* 获取用户的名字。
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}
php
namespace App\Models;
use YrPHP\Database\Model;
class User extends Model
{
/**
* 设置用户的名字。
*
* @param string $value
* @return string
*/
public function setFirstNameAttribute($value)
{
return strtolower($value);
}
}
php
namespace App\Models;
use YrPHP\Database\Model;
class User extends Model
{
//不写 默认操作user表
protected $table = 'users';
function identity()
{
return $this->hasOne('\App\Models\Identity');
}
}
php
return $this->hasOne('\App\Models\Identity', 'foreign_key');
PHP
return $this->hasOne('\App\Models\Identity', 'foreign_key', 'local_key');
php
namespace App\Models;
use YrPHP\Database\Model;
class Member extends Model
{
/**
* 获取用户的头像
*/
public function avatar()
{
return $this->morphOne('App\Models\Avatar', 'imageable');
}
}
php
namespace App\Models;
use YrPHP\Database\Model;
class Team extends Model
{
/**
* 获取团队的头像
*/
public function avatar()
{
return $this->morphOne('App\Models\Avatar', 'imageable');
}
}
PHP
//返回一个Avatar模型
$avatar = Member::find(1)->avatar;
php
Member::find(1)->avatar()->insert([
'img' => 'upload/image/1499757432849533.jpg'
]);
php
namespace App\Models;
use YrPHP\Database\Model;
class User extends Model
{
/**
* 获得该用户下绑定的所有银行卡。
*/
public function bankCard()
{
return $this->hasMany('\App\Models\BankCard');
}
}
PHP
$bankCards = User::find(1)->bankCard;
foreach ($bankCards as $bankCard) {
//
}
php
return $this->hasMany('\App\Models\BankCard', 'foreign_key');
return $this->hasMany('\App\Models\BankCard', 'foreign_key', 'local_key');
php
namespace App\Models;
use YrPHP\Database\Model;
class Country extends Model
{
/**
* 获得某个国家下所有的用户文章。
*/
public function posts()
{
return $this->hasManyThrough('\App\Models\Post', 'App\User');
}
}
php
namespace App\Models;
use YrPHP\Database\Model;
class Country extends Model
{
public function posts()
{
return $this->hasManyThrough(
'\App\Models\Post',
'\App\Models\User',
'country_id', // 用户表外键...
'user_id', // 文章表外键...
'id', // 国家表本地键...
'id' // 用户表本地键...
);
}
}
namespace App\Models;
use YrPHP\Database\Model;
class User extends Model
{
public function roles()
{
return $this->belongsToMany('\App\Models\Role');
}
}
php
namespace App;
use YrPHP\FormRequest;
class TestRequest extends FormRequest
{
/**
* 设置验证规则
* @return array
*/
function rules()
{
/**
* array('字段名' => array(array('验证规则', ['错误提示'],[ '值域','值域',...])));
* 验证规则:
* en: 值域:array(1,30)|1,30 当存在指定范围时 通过验证
* notbetween:值域:array(1,30)|1,30 当不存在指定范围时 通过验证
* length:值域:array(10,30)|10,30 当字符长度大于等于10,小于等于30时 通过验证 || array(30)|30 当字符等于30时 通过验证
* unique:值域:string 当该字段在数据库中不存在该值时 通过验证
* email: 当值为email格式时 通过验证
* url: 当值为url格式时 通过验证
* number: 当值为数字格式时 通过验证
* regex:值域:正则表达式 //当符合正则表达式时 通过验证
* phone:判断是否为手机号码
* verifyCode:值域:session验证码key值(默认verify) 判断验证码的确与否
* extend:值域:匿名函数 function(表单值,[ '值域'])
*
*/
return ['id' => [[10, '', 'equal']]];
}
}
php
/**
* Created by YrPHP.
* User: Kwin
* QQ:284843370
* Email:[email protected]
*/
namespace App\Controllers;
use App;s
use App\TestRequest;
use YrPHP\Controller;
class Index extends Controller
{
function __construct()
{
parent::__construct();
}
function index(TestRequest $request, $id)
{
//如果TestRequest验证没通过,则会将错误信息写入session 如果是post提交则返回上一页,如果是ajax,则返回{error:{}}, 获取错误信息:session('errors')
}
php
/**
* 访问控制器的原始资源
* 返回当前实例控制器对象
* $app =& getInstance();
* @return Controller 资源
*/
function &getInstance(){}
/**
* 获取配置参数
* @param string|array $name 配置变量
* @param mixed $default 默认值
* @return mixed
*/
function config($name = null, $default = null){}
/**********************************************************/
/**
* @param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...'
* @param bool|true $indexPage 如果是REWRITE重写模式 可以不必理会 否则默认显示index.php
* @return string
*/
getUrl($url = '', $indexPage = true){}
/**********************************************************/
/**
* 获取语言 支持批量定义
* @param null $key 语言关键词
* @param null $value 配置值
* @return array|null
*/
function getLang($key = null, $value = null){}
/**********************************************************/
/**
* 以单例模式实例化类
* loadClass($className [, mixed $parameter [, mixed $... ]])
* @param $className 需要得到单例对象的类名
* @param $parameter $args 0个或者更多的参数,做为类实例化的参数。
* @return object
*/
function loadClass(){}
/**********************************************************/
/**
* 如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。
* @param string $modelName 模型类名
* @return object
*/
function M($modelName = ""){}
/**********************************************************/
/**
* 管理session
* @param string $key
* @param string $val
* @return bool
*/
session($key='',$val=''){};
//添加单个session
session('id','15');//$_SESSION['id'] = 15
//批量添加session
session(array('id'=>15,'name'=>'LiLei'));
//获得session
session('id');
//删除
session('id',null);
//清空session
session(null);
/**********************************************************/
/**
* 管理cookie
* @param string $key
* @param string $val
* @return bool
*/
cookie($key='',$val=''){};
//添加单个session
cookie('id','15');
//批量添加session
cookie(array('id'=>15,'name'=>'LiLei'));
//获得session
cookie('id');
//删除
cookie('id',null);
/**********************************************************/
/**
* 优化的fField(){}
/**
* 命名规则转换
* @param string $name
* @param int $type 0、小驼峰法、1、大驼峰法、2、蛇形命名法
* @return mixed|string
*/
function parseNaming($name = '', $type = 0){}
php
namespace App\Libs;
class MyPage
{
function __construct()
{
parent::__construct();
}
function index()
{
echo "Hello World";
}
php
namespace App\Controllers;
use YrPHP\Controller;
class Test extends MyController
{
function __construct()
{
parent::__construct();
}
function index()
{
$class = loadClass('App\Libs\MyPage');
$class->index();
}
PHP
<?PHP
return
array('cryptMode' => 'des3',//现在加密方式只有DES3
'cryptKey' => '123456789',//密钥
'cryptIv' => '123456789',//初始向量
);
PHP
<?PHP
$crypt = loadClass('YrPHP\Crypt');
$crypt->encrypt($str);//加密数据
$crypt->decrypt($str);//解密数据
php
/**
* Created by YrPHP.
* User: Kwin
* QQ:284843370
* Email:[email protected]
* GitHub:https://github.com/kwinH/YrPHP
*/
namespace YrPHP;
class Arr
{
/**
* 不区分大小写的in_array实现
* @param string $value
* @param array $array
* @return bool
*/
public static function inIArray($value = '', $array = []){}
/**
* 在数组中搜索给定的值(不区分大小写),如果成功则返回相应的键名
* @param $needle
* @param $haystack
* @param bool $strict
* @return mixed
*/
public static function arrayISearch($needle, $haystack, $strict = false){}
/**
* 不区分key值大小写获取数组中的值
* @param array $arr
* @param string $key
* @return mixed
*/
public static function arrayIGet(array $arr = [], $key = ''){}
/**
* 多维数组转一维数组
* @param array $multi
* @return array
*/
public static function arrToOne(array $multi = []){}
/**
* 判断是不是索引数组
* @param array $array
* @return bool true ? 索引数组 : 不是索引数组
*/
public static function isAssoc(array $array = []){}
/**
* 使用“点”符号从数组中获取一个项。
* @param array $arr
* @param string $key
* @param null $default
* @return mixed
*/
public static function get(array $arr = [], $key = '', $default = null){}
/**
* 返回数组中指定的数组项
* @param array $arr 指定数组
* @param $onlyKey 可以为多个参数或则单个数组格式
* @return array
*/
public static function only(array &$arr = [], $onlyKey){}
/**
* 过滤数组中指定的数组项,并返回
* @param array $arr 指定数组
* @param $exceptKey 可以为多个参数或则单个数组格式
* @return array
*/
public static function except(array &$arr = [], $exceptKey){}
}
php
/**
* 建立文件
*
* @param string $aimUrl 文件地址
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
YrPHP\File::createFile($aimUrl, $overWrite = false);
/**
* 递归删除文件夹或文件
* @param string $aimDir 文件地址
* @return boolean
*/
YrPHP\File::rm($aimDir);
/**
* 建立文件夹
* @param string $aimUrl 文件地址
* @param int $mode 权限
* @return viod
*/
YrPHP\File::mkDir($aimUrl, $mode = 0777);
/**
* 移动文件夹或文件
* @param string $oldDir 原地址
* @param string $aimDir 目标地址
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
YrPHP\File::mv($oldDir, $aimDir, $overWrite = false);
/**
* 复制文件或则文件夹
* @param string $oldDir
* @param string $aimDir
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
YrPHP\File::cp($oldDir, $aimDir, $overWrite = false);
/**
* 修改文件名
*$path 需要修改的文件路径
*$name 修改后的文件路径及文件名
* @return boolean
*/
YrPHP\File::rename($path, $name);
/**
* 将字符串写入文件
* @param string $filename 文件路径
* @param boolean $str 待写入的字符数据
*/
YrPHP\File::vi($filename, $str);
/**
* 将整个文件内容读出到一个字符串中
* @param string $filename 文件路径
* @return string
*/
YrPHP\File::readsFile($filename);
/**
* 将文件内容读出到一个数组中
* @param string $filename 文件名
* @return array
*/
YrPHP\File::readFile2array($filename);
/**
* 根据关键词列出目录下所有文件
* @param string $path 路径
* @param string $key 关键词
* @param array $list 增加的文件列表
* @return array 所有满足条件的文件
* 返回一个索引为结果集列名的数组
*/
YrPHP\File::dirList($path, $key = '', $list = array());
/**
* 根据关键词列出目录下所有文件
*
* @param string $path 路径
* @param string $key 关键词
* @param array $list 增加的文件列表
* @return array 所有满足条件的文件
* 返回一个索引为结果集列名和以0开始的列号的数组
*/
YrPHP\File::search($path, $key = '', $list = array());
/**
* 获取文件名后缀
* @param string $filename 文件路径
* @return string
*/
YrPHP\File::fileExt($filename);
/**
* 获得文件相关信息
* @param $filename 文件路径
* @return array|bool
* 将会返回包括以下单元的数组 array :dirname(文件实在目录)、basename(文件名带后缀)、extension(文件后缀
* 如果有)、filename(文件名不带后缀)、dev(设备名)、ino(inode 号码)、mode(inode 保护模式)、nlink(被连接数
* 目)、uid(所有者的用户 id)、gid(所有者的组 id)、rdev(设备类型,如果是 inode 设备的话)、size(文件大小的
* 字节数)、atime(上次访问时间(Unix 时间戳))、ctime(上次改变时间(Unix 时间戳))、blksize(文件系统 IO
* 的块大小)、blocks(所占据块的数目)。
*/
YrPHP\File::getFileInfo($filename);
/**
* 统计目录大小
* @param string $dirname 目录
* @return string 比特B
*/
YrPHP\File::getDirSize($dirname);
/**
* 将字节转换成Kb或者Mb...
* @param $size为字节大小
*/
YrPHP\File::bitSize($size);
/**
* 返回当前目录层级下所有文件及目录列表
* @param string $dir 路径
* @return array 返回目录列表
array (
App
2 => 'public',
YrPHP
)
*/
YrPHP\File::dirNodeTree($dir);
/**
* 递归循环目录列表,并返回关系层级
* @param string $dir 路径
* @param int $parentid 父id
* @param array $dirs 传入的目录
* @return array 返回目录及子目录列表
array (
1 =>
array (
'id' => 1,
'parentid' => 0,
App
App
),
2 =>
array (
'id' => 2,
'parentid' => 1,
Common
Common
),
)
*/
YrPHP\File::dirTree($dir, $parentid = 0, $dirs = array());
php
$config = $config = array(
'maxSize'=>100,
'savePath'=>'/ttt',
'isRandName'=>false,
'allowedTypes'=>array('jpg','png')
);
//参数配置可以在实例化时就传入
$up = loadClass('YrPHP\\upload',$config);
$re = $up->uploadFile('file123');
//参数配置也可以在init方法中传入
$up = loadClass('YrPHP\\upload');
$re = $up->init($config)->uploadFile('file123');
php
/**
缩略图
**/
$img = loadClass('YrPHP\Image','D:/test.jpg');//实例化 并打开test.jpg图片,也可以用open方法打开图片
/**
* 获得图片的基本信息
* @return array(dirname,basename,extension,filename,width,height,type,mime)
*/
var_dump($img->getInfo());
$img=$img->thumb(array('width'=>100,'height'=>100,'pre'=>0.5));//如果设置了$config['per']则按照$config['per']比例缩放 否则按给定宽高
/**
* 直接在浏览器显示图片
* @param null $type 图像类型(gif,jpeg,jpg,png) 为空则按原图类型
* @return bool
*/
$img->show($type = null);//显示图片
/**
* 保存图像
* @param string $imgname 图像保存名称
* @param string $type 图像类型(gif,jpeg,jpg,png) 为空则按原图类型
* @param integer $quality 图像质量
* @param boolean $interlace 是否对JPEG类型图像设置隔行扫描
*/
$img->save($imgPath='test1.jpg', $type = null, $quality = 80, $interlace = true);
/**
* 客服端下载
* @param null $downFileName 文件名 默认为原文件名
* @param null $type 图像类型(gif,jpeg,jpg,png) 为空则按原图类型
*/
$img->down($downFileName = null, $type = null);
php
$img = loadClass('YrPHP\Image');//实例化
$img->open('D:/test.jpg');//并打开test.jpg图片
/**
* 为图片添加文字水印
* @param string $water array('str'=>'ok','font'=>'msyh.ttf','color'=>'#ffffff','size'=>20,'angle'=>0,)
* str水印文字为必填 font字体 color默认黑色 size文字大小默认20,angle文字倾斜度默认0 暂只支持GIF,JPG,PNG格式
* @param int $position 水印位置,有10种状态,0为随机位置;
* 1为顶端居左,2为顶端居中,3为顶端居右;
* 4为中部居左,5为中部居中,6为中部居右;
* 7为底端居左,8为底端居中,9为底端居右;
* 指定位置 array(100,100) | array('x'=>100,'y'=>100)
* @return mixed
*/
$img->text($water = array(), $position = 0);
//其他 显示 下载 保存同上
/*************************************************************/
$img = loadClass('YrPHP\Image','D:/test.jpg');//实例化 并打开test.jpg图片
/**
* 添加水印图片
* @param string $water 水印图片路径
* @param integer|array $position 水印位置
* @param int $position 水印位置,有10种状态,0为随机位置;
* 1为顶端居左,2为顶端居中,3为顶端居右;
* 4为中部居左,5为中部居中,6为中部居右;
* 7为底端居左,8为底端居中,9为底端居右;
* 指定位置 array(100,100) | array('x'=>100,'y'=>100)
* @param integer $alpha 水印透明度
* @param integer $waterConf array('width'=>100,'height'=>100) 调整水印大小 默认调用原图
*/
$img->watermark($water, $position = 0, $alpha = 100, $waterConf = array());
//其他 显示 下载 保存同上
php
$img = loadClass('YrPHP\Image','D:/test.jpg');//实例化 并打开test.jpg图片
/**
* 裁剪图像
* @param integer $w 裁剪区域宽度
* @param integer $h 裁剪区域高度
* @param integer|array $position 裁剪起始位置 有10种状态,0为随机位置;
* 1为顶端居左,2为顶端居中,3为顶端居右;
* 4为中部居左,5为中部居中,6为中部居右;
* 7为底端居左,8为底端居中,9为底端居右;
* 指定位置 array(100,100) | array('x'=>100,'y'=>100)
* @param integer $width 图像保存宽度 默认为裁剪区域宽度
* @param integer $height 图像保存高度 默认为裁剪区域高度
*/
$img->cut($w, $h, $position = 1, $width = null, $height = null);
//其他 显示 下载 保存同上
php
//GET请求
$curl = loadClass('YrPHP\Curl');
//设置需要获取的URL地址
$curl = $curl->setUrl($url . 'https://api.weixin.qq.com/sns/oauth2/access_token');
/**
* 启用时会发送一个常规的GET请求
* @param array|string $data array('user'=>'admin','pass'=>'admin') | admin&admin
* @return $this
*/
$curl = $curl->get('appid=' . $AppID . '&secret=' . $AppSecret . '&code=' . $code . '&grant_type=authorization_code');
/**
* 执行一个cURL会话 返回执行的结果
* @param bool $debug 是否开启调试模式 如果为true将打印调试信息
* @return mixed
*/
$curl =$curl->exec();
php
//POST请求
$curl = loadClass('YrPHP\Curl');
//设置需要获取的URL地址
$curl = $curl->setUrl($url . 'https://127.0.0.1/test.php');
/**
* 启用时会发送一个常规的POST请求,默认类型为:application/x-www-form-urlencoded,就像表单提交的一样
* @param array|string $data
* @param string $enctype application|multipart 默认为application,文件上传请用multipart
*/
$curl = $curl->post(array('name' => 'test', 'sex'=>1,'birth'=>'20101010'));
/**
* 执行一个cURL会话 返回执行的结果
* @param bool $debug 是否开启调试模式 如果为true将打印调试信息
* @return mixed
*/
$curl =$curl->exec();
php
//获取Cookie模拟登陆
$cookie_file = tempnam('./temp','cookie');
$curl = loadClass('YrPHP\Curl');
//设置需要获取的URL地址
$curl = $curl->setUrl($url . 'https://127.0.0.1/login.php');
/**
* 启用时会发送一个常规的POST请求,默认类型为:application/x-www-form-urlencoded,就像表单提交的一样
* @param array|string $data
* @param string $enctype application|multipart 默认为application,文件上传请用multipart
*/
$curl = $curl->post(array('name' => 'admin', 'passwd'=>'123456'));
/**
* 获得cookies
* @param string $path 定义Cookie存储路径 必须使用绝对路径
*/
$curl = $curl->getCookie($cookie_file);
/**
* 执行一个cURL会话 返回执行的结果
* @param bool $debug 是否开启调试模式 如果为true将打印调试信息
* @return mixed
*/
$curl =$curl->exec();
$curl = $curl->setUrl($url . 'https://127.0.0.1/getUserInfo.php');
/**
* 取出cookie,一起提交给服务器
* @param string $path 定义Cookie存储路径 必须使用绝对路径
*/
$data = $curl->setCookieFile($cookie_file)->exec();
/**
* 设定HTTP请求中"Cookie: "部分的内容。多个cookie用分号分隔,分号后带一个空格(例如, "fruit=apple; colour=red")。
* @param string|array $cookies 定义Cookie的值
*/
$curl = $curl->setCookie(array('name'=>'admin','passwd'=>'123456'));
$data = $curl->exec();
var_dump($data);
//清理cookie文件
unlink($cookie_file);
php
$headers['Referer'] = 'http://www.baidu.com';
$headers['CLIENT-IP'] = '202.103.229.40';
$headers['X-FORWARDED-FOR'] = '202.103.229.40';
$curl = loadClass('YrPHP\Curl');
//设置需要获取的URL地址
$curl = $curl->setUrl($url . 'https://127.0.0.1/login.php');
/**
* @param bool $verify 是否验证证书 默认false不验证
* @param string $path 验证证书时,证书路径
* @return $this
*/
$curl = $curl->sslVerify(false);
/**
* 传递一个连接中需要的用户名和密码
* @param array|string $userPassword 格式为:array('userName','password') 或则, "username:password"
*/
$curl = $curl->setUserPassword(array('admin','123456'));
//setHeader(array())设置请求头
$curl->setHeader($headers)->get()->exec();
var_dump($data);
php
//配置,以下均为默认值
$conf= array(
'width' =>100;//图片宽度
'height' =>40;//图片高度
'size' =>21;//字体大小
'font'=>'yrphp/resource/font/1.ttf';//字体
'len' =>4;//随机字符串长度
'type';//默认是大小写数字混合型,1 2 3 分别表示 小写、大写、数字型
'backColor' => '#eeeeee'; //背景色,默认是浅灰色
'pixelNum' => 666; //干扰点个数
'lineNum'=> 10; //干扰线条数
);
/**
* @param string $code 验证码key,用于session获取,默认verify
* @param bool $line 是否显示干扰线
* @param bool $pixel 是否显示干扰点
*/
//参数可以在实例化时传入 也可以调用init方法初始化时调用
loadClass('YrPHP\VerifyCode',$conf)->show($code = 'verify', $line = true, $pixel = true);
php
//配置,以下均为默认值
$config = array(
'totalRows' => 100,// 总行数
'listRows' => 12,// 列表每页显示行数 默认12
'rollPage' => 6,// 分页栏每页显示的页数 默认8
'p' => 'p',
'url' => 'http://example.com/test/page/',//跳转链接URL,不配置 默认为当前页
'urlParam' => array('key' => 'hello'),// 分页跳转时要带的参数
//添加封装标签
'fullTagOpen' => '<div>',//整个分页周围围绕一些标签开始标签
'fullTagClose' => '</div>',//整个分页周围围绕一些标签结束标签
//自定义“当前页”链接
'nowPage' => 3,//当前页,默认为'1'第一页
'nowTagOpen' => '<strong>',//在当前页外围包裹开始标签 默认<strong>
'nowTagClose' => '</strong>',//在当前页外围包裹结束标签
//自定义起始链接
'firstTagOpen' => '',//在首页外围包裹开始标签
'firstLink' => '首页',//你希望在分页中显示“首页”链接的名字 如果不想显示该标签 则设置为FALSE即可
'firstTagClose' => '',//在首页外围包裹标签结束标签
//自定义结束链接
'lastTagOpen' => '',//在尾页外围包裹开始标签
'lastLink' => '尾页',//你希望在分页中显示“尾页”链接的名字 如果不想显示该标签 则设置为FALSE即可
'lastTagClose' => '',//在尾页外围包裹标签结束标签
//自定义“上一页”链接
'prevTagOpen' => '',//在上一页外围包裹开始标签
'prevLink' => '上一页',//上一页显示文字 如果不想显示该标签 则设置为FALSE即可
'prevTagClose' => '',//在上一页外围包裹标签结束标签
//自定义“下一页”链接
'nextTagOpen' => '',//在下一页外围包裹开始标签
'nextLink' => '下一页',//你希望在分页中显示“下一页”链接的名字 如果不想显示该标签 则设置为FALSE即可
'nextTagClose' => '',//在下一页外围包裹标签结束标签
//自定义“数字”链接 如果不想显示该标签 将rollPage设置为0即可
'otherTagOpen' => '',//在其他“数字”链接外围包裹开始标签
'otherTagClose' => '',//在其他“数字”链接外围包裹标签结束标签
//自定义“select下拉跳转”
'gotoPage' => false,//是否显示select下拉跳转,默认不显示
'gotoTagOpen' => '',//在select下拉跳转外围包裹标签
'gotoTagClose' => '',//在select下拉跳转外围包裹标签闭合
);
//实例化分页类 参数也可以通过init方法初始化
$page = loadClass('YrPHP\page', $config);
//输出分页的html
echo $page->show();
php
/**
* 判断是否为空值,当数据不为空时 return true
* @param null $data
* @return bool
*/
YrPHP\Validate:: */
YrPHP\Validate::equal(20, 10);//false
YrPHP\Validate::equal(20, 20);//true
/**
* 当两个不值相等时 return true
* @param string $data
* @param string $val
* @return bool
*/
YrPHP\Validate::notEqual(20, 10);//true
YrPHP\Validate::notEqual(20, 20);//false
/**
* 当存在指定范围时return true
* @param string $data
* @param array|string $range
* @return bool
*/
YrPHP\Validate::in(2, '2,8');//true
YrPHP\Validate::in(10, array(2, 8));//false
/**
* 当不存在指定范围时return true
* @param string $data
* @param array|string $range
* @return bool
*/
YrPHP\Validate::notIn(2, '2,8');//false
YrPHP\Validate::notIn(10, array(2, 8));//true
/**
* 当存在指定范围时return true
* @param null $data
* @param array|string $range
* @return bool
*/
YrPHP\Validate::between(10, '10,20');//true
YrPHP\Validate::between(10, array(20, 15));//false
/**
* 当不存在指定范围时return true
* @param null $data
* @param array|string $range
* @return bool
*/
YrPHP\Validate::notBetween(10, '10,20');//false
YrPHP\Validate::notBetween(10, array(20, 15));//true
/**
* 当数据库中值存在时 return false
* @param $tableName 表名
* @param $field 字段名
* @param $val 值
* @return bool
*/
YrPHP\Validate::unique($tableName, $field, $val);
/**
* 当字符长度存在指定范围时return true
* @param null $data 字符串
* @param array|string $range 范围
* @return bool
* length('abc',3); strlen('abc') ==3
* length('abc',array(5,3))==length('abc',array(3,5)) => strlen('abc') >=3 && strlen('abc') <=5
*/
YrPHP\Validate::length($data = '', $range = '');
/**
* Email格式验证
* @param string $value 需要验证的值
*/
YrPHP\Validate::email('[email protected] ');//true
/**
* URL格式验证
* @param string $value 需要验证的值
*/
YrPHP\Validate::url('https://www.baidu.com');//true
/**
* 数字格式验证
* @param string $value 需要验证的值
*/
YrPHP\Validate::number(100); //true;
/**
* 使用自定义的正则表达式进行验证
* @param string $value 需要验证的值
* @param string $rules 正则表达式
*/
YrPHP\Validate::regex($value, $rules);
/**
* 判断是否为手机号码
* @param string $value 手机号码
*/
YrPHP\Validate::phone($value = '');
/**
* 判断验证码的确与否
* @param string $value 值
* @param string $code session中的key 默认'verify'
* @return bool
*/
YrPHP\Validate::verifyCode($value, $code);
/**
自定义匿名函数
*/
YrPHP\Validate::extend('test', function ($key, $val) {
if ($key > $val) return true;
return false;
});
var_dump(YrPHP\Validate::test(3, 2)); //true
php
//配置参数
$conf = array(
'saveMode' = 'session',//存储方式,有cookie和session,默认session
'mallMode'=>false,//商城模式 true多商家 false单商家,默认false单商家
'key'=>'cartContents',//保存在session或者cookie中的key
);
//实例化购物车类 配置参数也可以通过init方法初始化
$cart = loadClass('YrPHP\Cart',$conf);
//添加一个产品到购物车
/**
六个保留的索引分别是:
id - 你的商店里的每件商品都必须有一个唯一的标识符(identifier)
qty - 购买的数量(quantity)。
price - 商品的价格(price)。
name - 商品的名称(name)。
options - 标识商品的任何附加属性。必须通过数组来传递。
seller - 卖家标识ID,多商家模式必须设置
id, qty, price 和name是必需的,options是可选的
除以上六个索引外,还有两个保留字:rowId 和 subtotal。它们是购物车类内部使用的,因此,往购物车中插入数据时,请不要使用这些词作为索引。
其他可自行扩展
*/
$items = array(
'id' => 'sku_123ABC',
'qty' => 1,
'price' => 39.95,
'name' => 'T-Shirt',
'options' => array('Size' => 'L', 'Color' => 'Red')
);
/**
* 添加单条或多条购物车项目
* @param array $items 添加多个可为二维数组
* @param bool $accumulation 是否累加,默认累计
* @return bool|string
*/
$cart->insert($items);
/**
* 返回一个包含了购物车中所有信息的数组
* @param null $mallMode 商城模式 true多商家(二维数组) false单商家(一维数组)默认为配置中的模式,当为单商家时,不管设置什么都返回一维数组
* @param null $seller 返回指定商家下的所以产品,默认为null,返回所以商家,单商家下无效
* @return array
*/
$cartList = $cart->getContents();
/**
* 获得一条购物车的项目
* @param null $rowId
* @return bool|array
*/
$rowId = n'b99ccdf16028f015540f341130b6d8ec';
$item = $cart->getItem($rowId);
/**
* 显示购物车中总共的商品数量
* @param null $seller 商家标识符 单商家模式下无效
* @return int
*/
$totalQty = $cart->totalQty();
/**
* 显示购物车中的总计金额 商家标识符 单商家模式下无效
* @return int
*/
$priceTotal = $cart->total();
/**
* 显示购物车中总共的项目数量
* @param null $seller 商家标识符 单商家模式下无效
* @return int
*/
$totalItems =$cart->totalItems();
/**
* 更新购物车中的项目 必须包含 rowId
* @param $item 修改多个可为二维数组
* @return bool
*/
$items = array(
'rowId'=> 'b99ccdf16028f015540f341130b6d8ec',
'qty'=>6,
)
$cart->update($items);
/**
* 删除一条购物车中的项目 必须包含 rowId
* @param null|array $rowId
* @return bool
*/
$rowId = n'b99ccdf16028f015540f341130b6d8ec';
$cart->remove($rowId);
/**
*删除多条用数组
*/
$rowId = array(
'b99ccdf16028f015540f341130b6d8ec',
'qweuyrf16028f985640f341130b6d66c'
);
$cart->remove($rowId);
/**
* 销毁购物车
*/
$cart->destroy();
/**
* 根据rowId 查找商家
* @param $key
* @return bool|int|string 当为单商家模式时直接返回false,当找不到时也返回false,否则返回商家标识符
*/
$rowId = 'b99ccdf16028f015540f341130b6d8ec';
$seller = $cart->searchSeller($rowId);