在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:YanPHP开源软件地址:https://gitee.com/JIANGWL/YanPHP开源软件介绍:YanPHP V0.2GuideDocumentation这是一个为API开发而设计的高性能轻量级框架。框架为你集成了一些常用的类库,让你开发更加便捷。另外引入了Composer,可以让你更加轻松地管理依赖以及处理命名空间问题。让语法更加贴近原生PHP,并且在此基础上让你实现自己的定制化功能。因为封装程度不高,所以框架的性能十分之优秀。 目录结构├── Application --你的代码目录│ ├── Cgi --分层应用根目录(这里是Cgi代码)│ │ ├── Cache --缓存│ │ ├── Compo --自定义组件│ │ ├── Config --配置│ │ ├── Controller --控制器,用于编写业务逻辑│ │ ├── Logs --日志存放│ │ ├── Model --模型层│ │ ├── Param --入参定义,以及参数校验│ │ └── Util --工具类库│ └── Server --分层应用根目录(这里是Server代码)│ │ ├── Cache --缓存│ │ ├── Compo --自定义组件│ │ ├── Config --配置│ │ ├── Controller --控制器,用于编写业务逻辑│ │ ├── Logs --日志存放│ │ ├── Model --模型层│ │ ├── Param --入参定义,以及参数校验│ │ └── Util --工具类库├── System --框架目录│ └── Yan│ ├── Common│ └── Core│ ├── Compo│ └── Exception 安装环境要求Require:
Composer安装:https://getcomposer.org/download/ 安装步骤先把 git clone https://github.com/kong36088/YanPHP.git 然后进行框架依赖组件的安装,这里需要用到 composer install 完成! hello world首先安装YanPHP的依赖项: composer install 来编写我们的第一个hello world 首先我们需要先新增一个控制器新建一个控制器文件 <?phpnamespace App\Cgi\Controller;use Yan\Core\Compo\ResultInterface;use Yan\Core\Controller;class HelloController extends Controller{ public function index(): ResultInterface { return $this->succ('hello world'); }} 紧接着到 [index] 用命令行重新加载composer中注册的命名空间: composer dump-autoload 最后,用浏览器访问我们刚才编写的hello world: 返回结果为以下内容 { "code": 0, "message": "hello world", "data": []} 若有新增类库文件,记得一定要运行一次 路由默认路由规则默认路由寻路路径是:/interface.php/controller/methodcontroller代表您的控制器,method是指向的方法 举例:http://localhost/interface.php/user/getUser这个路径映射到 自定义路由规则当然,您也可以自定义自己的路由规则。路由规则存放在 $config['default_method'] = 'index'; //默认方法$config['route'] = [ '/' => [ //被映射的路径 'request_method' => ['GET','POST'], //支持的http动作,支持GET和POST 'controller' => 'App\\Cgi\\Controller\\UserController', //所映射到的控制器,需要包含命名空间,映射到Application/Cgi/Controller/UserController 'method' => 'index' //所映射到的方法,映射到UserController的index方法 ], '/user' => [ 'request_method' => ['GET'], //支持的http动作,支持GET 'controller' => 'App\\Cgi\\Controller\\UserController', //所映射到的控制器,需要包含命名空间,映射到Application/Cgi/Controller/UserController 'method' => 'getUser' //映射到UserController的index方法getUser方法 ],]; 配置配置文件统一存放在 系统配置相关$config['namespace'] = 'App\\Cgi'; 这里用于配置你的应用层采用的命名空间,在新添加应用层后请勿忘记修改这里的配置哦。 $config['session_path'] = BASE_PATH.'/Cache/session';$config['session_name'] = 'YAN_SESSION';
日志配置相关几种日志等级。比如日志等级配置为 /**'DEBUG''INFO''NOTICE''WARNING''ERROR''CRITICAL''ALERT''EMERGENCY'*/$config['log_level'] = 'DEBUG'; 日志存放路径 /** * The log path */$config['log_path'] = BASE_PATH . '/logs/cgi.log'; /** * 最大存放的日志文件数量 */$config['log_max_file'] = 0;/** * 配置日志记录的格式 * "[%datetime%] %channel%.%level_name%: %message% %context%\n"; */$config['log_format'] = "[%datetime%]-%extra.process_id% %channel%.%level_name%: %message% %context%\n"; database
可以配置多个数据库连接,默认使用 例如下面的例子: $config['db'] = [ 'default' => [ /** host */ 'db_host' => 'mysql', /** 数据库用户名 */ 'db_user' => 'root', /** 数据库密码 */ 'db_password' => 'root', /** 端口 */ 'db_port' => 3306, /** 数据库 */ 'db_database' => 'yan', /** 表名前缀 */ 'db_prefix' => '', /** * mysql/postgres/sqlite/sqlsrv */ 'db_driver' => 'mysql', 'db_charset' => 'utf8', 'db_collation' => 'utf8_unicode_ci' ], 'mysql1'=>[ 'db_host' => '', 'db_user' => '', 'db_password' => '', 'db_port' => 3306, 'db_database' => '', 'db_prefix' => '', 'db_driver' => 'mysql', 'db_charset' => '', 'db_collation' => '' ]]; 这里我们可以对连接进行管理,其中上面的 YAssertYanPHP内嵌的断言支持。感谢beberlei/assert提供类库支持 详细的使用方法在这里:YassertDocument 入参和Input用法介绍所有入参都需要定义在应用目录路径下的Param目录,并且可以对其进行相关的参数校验操作。 下面我们会举例对该功能进行讲解。 例如我们需要请求 文件内容如下: [index]user_id="starts_with[1]|required|numeric|between[1,123]"page="numeric"domain="string|numeric"arr="array"[getUser] “=”号左边的是需要的入参,右边的是需要验证的规则。规则都是 若参数不符合规则要求,则会直接返回错误信息。 如若你需要为参数配置多个验证规则,可以用 相关入参规则
获取输入参数Input::get('user_id'); //获取参数user_idInput::set('user_id',1); //设置参数 DatabaseDB方面YanPHP采用了illuminate/Database。编码设计风格与其保持总体一致。 使用介绍
Once the Capsule instance has been registered. You may use it like so: Using The Query Builder $users = Capsule::table('users')->where('votes', '>', 100)->get(); Other core methods may be accessed directly from the Capsule in the same manner as from the DB facade: $results = Capsule::select('select * from users where id = ?', array(1)); Using The Schema Builder Capsule::schema()->create('users', function ($table) { $table->increments('id'); $table->string('email')->unique(); $table->timestamps();}); Using The Eloquent ORM class User extends Illuminate\Database\Eloquent\Model {}$users = User::where('votes', '>', 1)->get(); 或者使用YanPHP提供的风格 use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Collection;class User extends Model{ protected $table = 'user'; protected $primaryKey = 'uid'; protected $keyType = 'int'; public function getById($id): Collection { return $this->where([$this->primaryKey => $id])->get(); } public function getByCond($cond): Collection { return $this->where($cond)->get(); } public function updateByCond($cond, $update): bool { return $this->where($cond)->update($update); } public function deleteById($id) { return $this->where($id)->delete(); }}$UserModel = new User();$UserModel->getById(1); // 获取user表中uid为1的用户数据信息 For further documentation on using the various database facilities this library provides, consult the Laravel database documentation. DB多连接管理在配置文件 下面我们将介绍如何进行连接的切换。
<?phpnamespace App\Cgi\Model;use Illuminate\Support\Collection;use Yan\Core\Model;class User extends Model{ protected $table = 'user'; protected $connection = 'mysql1'; //这里可以配置User Model默认使用"mysql1"连接 public function getById($id): Collection { //这里可以使当前实例的连接切换为"default" $this->setConnection('default'); return $this->where([$this->primaryKey => $id])->get(); }} 我们可以使用Model当中的 另外一种方法是使用自带的 Session用法示例 use Yan\Core\Session;Session::set('a','b'); //设置session值$sessionVaue = Session::get('a'); //获取session中的值Session::destroy(); //销毁所有session Session类中有以下方法 /** * @method static mixed get($key, $alt = null) * @method static mixed set($key, $val) * @method static null clear() * @method static mixed getFlash($key, $alt = null) * @method static null setFlash($key, $val) * @method static null clearFlash() * @method static mixed getFlashNext($key, $alt = null) * @method static null setFlashNow($key, $val) * @method static null clearFlashNow() * @method static null keepFlash() * @method boo null destroy() */ 定制化定制Result格式可以到你的应用目录下的 下面是Result类的示例: namespace App\Cgi\Compo;use Yan\Core\Compo\ResultInterface;class Result implements ResultInterface{ protected $code; protected $message; protected $data; public function __construct(int $code, string $message, array $data = []) { $this->code = $code; $this->message = $message; $this->data = $data; } function getCode(): int { return $this->code; } function getMessage(): string { return $this->message; } /** * Specify data which should be serialized to JSON * @link http://php.net/manual/en/jsonserializable.jsonserialize.php * @return mixed data which can be serialized by <b>json_encode</b>, * which is a value of any type other than a resource. * @since 5.4.0 */ function jsonSerialize() { return ['code' => $this->code, 'message' => $this->message, 'data' => $this->data]; }}
定制ReturnCodeYanPHP为你定义了一个全局的返回码,返回码的修改可以到 YanPHP命名规范准则YanPHP的所有的类文件文件名都 必须 与类名保持一致 框架的命名方式应该遵循驼峰命名法的命名规范。相关介绍可以看这里 控制器控制器类名需要以 例如: Model采用驼峰法,名字可以根据你自己的喜好进行命名。我们会推荐你根据数据库表名或相关的业务用途对model进行命名。 例如: 入参配置文件( |
请发表评论