首页
友人帐
留言板
关于
Search
1
IDE Eval Resetter:JetBrains 全家桶无限试用插件
383 阅读
2
影视资源采集站收录大全
309 阅读
3
linux安装或升级protoc
226 阅读
4
VFM 3.7.5 源码 - 一个极简的 PHP 私人云盘!
163 阅读
5
批量采集美女写真等图片做图片站
150 阅读
谈天说地
程序源码
技术教程
成品源码
登录
Search
标签搜索
PHP
linux
源码
go
windows
centos
原创
mysql
微信
激活
采集
宝塔
绿色版
API
解析
SDK
图片
破解
域名
html
云青
累计撰写
150
篇文章
累计收到
82
条评论
首页
栏目
谈天说地
程序源码
技术教程
成品源码
页面
友人帐
留言板
关于
搜索到
2
篇与
的结果
2022-06-16
AYPHP轻量级框架
开发初衷此框架陪伴了博主三年多,因为经常开发小系统,其他框架有些东西真好用(TP的连贯操作、C函数等),想把这些抠出来太难了。故此写了很多第三方类,后来觉得文件太多了,每次开发都要重新复制并命名(命名空间)很麻烦,故此开发了这样一个轻量级框架,用此框架无需担心用户注入等危险操作,框架在路由层已全面去除可能存在的危险字符(sql、xss、特殊字符)框架lib下类文件均可以独立使用,如果您并不希望使用此框架,可以单独取出所需要的类文件使用此文章将长期更新ps: 此框架支持PHP8,数据库采用PDO源码地址规范目录和文件 目录使用小写+下划线; 类库、函数文件统一以.php为后缀; 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; 类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名; 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写); 函数和类、属性命名 类的命名采用驼峰法(首字母大写),例如User、UserType,默认不需要添加后缀,例如UserController应该直接命名为User; 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如get_client_ip; 方法的命名使用驼峰法(首字母小写),例如getUserName; 属性的命名使用驼峰法(首字母小写),例如tableName、instance; 以双下划线“__”打头的函数或方法作为魔术方法,例如__call和__autoload; 目录结构project 应用部署目录 ├─app 应用目录 │ ├─index 模块目录(可更改) │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ ├─function.php 应用(公共)自定义函数 ├─ay 框架系统目录 │ ├─unity.php 核心函数 │ ├─drive 框架驱动文件 │ ├─lib 框架类文件 │ ├─Base.php 基础定义文件 │ ├─Core.php 控制台入口文件 │ └─ay.php 框架引导文件 ├─config 框架配置目录 │ │ └─app.php 基础配置文件 │ │ └─file.php 上传配置 │ │ └─database.php 数据库配置文件 │ │ └─image.php 图片配置文件 │ │ └─redis.php redis配置文件 │ │ └─route.php 路由配置文件 ├─extend 扩展类库目录 ├─public 公共资源目录 │ ├─static 静态资源存放目录(css,js,image) │ ├─index.php 应用入口文件 │ ├─.htaccess 用于 apache 的重写 ├─temp 应用的运行时目录(可写,可设置) ├─vendor 第三方类库目录(Composer) ├─README.md README 文件核心类Request请求类引入Request类use ay\lib\Request; // 获取全部参数 dump(Request::instance()->param()); // 获取get参数参数 dump(Request::instance()->get()); // 获取post请求参数 status字段并格式化成int类型 dump(Request::instance()->post("status", "int")); // 获取put请求正文 dump(Request::instance()->put()); // 获取delete请求参数 dump(Request::instance()->delete()); Session引入Session类use ay\lib\Request; // 设置 dump(Session::set("user", "123")); // 获取 dump(Session::get("user")); // 判断是否存在 dump(Session::has("user")); // 取出并删除 dump(Session::pull("user")); // 删除 Session::delete("user");Json返回类引入json类use ay\lib\Json; $data = [ "list" => [ ["id" => 1], ["id" => 2], ["id" => 3], ] ]; // 与最外层同级 $arr = ["page" => 1]; Json::msg(200, "success", $data, $arr);返回{ "code": 200, "msg": "success", "data": { "list": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }, "page": 1 }Xml操作引入Xml类use ay\lib\Xml; // 生成xml dump(Xml::instance()->create(["a" => 1, "d" => 2])); // 转数组 dump(xml::instance()->toArray(xml字符串)); 引入dir类use ay\lib\Dir; // 创建文件夹 dump(Dir::instance()->create(PUB . "/s")); // 获取文件扩展名 dump(Dir::instance()->getExt(PUB . "static/water/water.png")); // 显示目录树 dump(Dir::instance()->treeDir(AY)); // 遍历目录内容 dump(Dir::instance()->tree(AY)); // 删除文件夹 dump(Dir::instance()->del(PUB . "/s")); // 获取目录大小 dump(Dir::instance()->getDirSize(PUB . "static/water")); // 复制目录 dump(Dir::instance()->copy(PUB . "static/water", PUB . "static/water1")); 图像处理引入image类use ay\lib\Image; // 初始化image类 详细初始化信息 看构造函数 $image = new Image(); // 生成缩略图并返回缩略图地址 echo $image->thumb(PUB . "static/water/h.png", PUB . "static/water/h1.png", 100, 100, 1); // 添加水印 var_dump($image->water(PUB . "static/water/h.png", PUB . "static/water/h2.png", [100, 100], "", 1, "123")); 缓存类引入Cache类use ay\lib\Cache; // 设置指定缓存 dump(Cache::instance()->set('data', '123')); // 取出指定缓存 dump(Cache::instance()->get('data')); // 删除指定缓存 Cache::instance()->del('data'); // 删除全部缓存 Cache::instance()->delAll(); dump(Cache::instance()->get('data')); Curl类引入Curl类use ay\lib\Curl; $url = "https://blog.aaayun.cc/test.php"; $ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'; dump( Curl::url($url) ->userAgent($ua) // 设置ua ->referer('') // 设置来源 ->param(['user' => '测试数据']) // 设置参数 ->time(10) // 最大超时时间 ->proxy('127.0.0.1', 1080) // 设置代理 ->show(true) // 显示repose信息 ->cert('') // 设置证书 ->post() );Upload类引入Upload类use ay\lib\Upload; $upload = new Upload(PUB . 'upload/', ['txt']); dump($upload->operate('file'));Env类引入Env类use ay\lib\Env; dump(Env::get('data.debug'));Api类详细使用请看Api控制器助手函数R方法// 获取所有post参数 dump(R('post.')); // 验证post下ids参数是否存在 dump(R('?post.ids')); // 获取所有get参数 dump(R('get.')); // 验证get下id参数是否存在 dump(R('?get.id')); // 获取所有参数 注意 会多返回一个s参数 此参数为当前路由 dump(R('param')); // 获取所有文件参数 dump(R('file')); // 验证file下file参数是否存在 dump(R('?file.file'));C方法// 输出全部预定义 dump(C()); // 改变指定并返回值 dump(C('APP.DEBUG', 123)); // 增加并返回值 dump(C('AAA.ACV', 123)); dump(C()); success&&fail方法success('操作成功', 'http://baidu.com'); fail('操作失败', 'http://baidu.com');无限级分类树$arr = [ ['id' => 1, 'pid' => 0, 'name' => '一级'], ['id' => 2, 'pid' => 1, 'name' => '二级'], ['id' => 3, 'pid' => 2, 'name' => '三级'], ]; dump(tree($arr, 'id', 'pid'));其它常用方法// 导入extends目录下扩展包 extends('pay/alipay.php'); $pay = new AliPay(); // 获取来源ip dump(getIp()); // 判断当前是否是ssl dump(is_ssl()); // 抛出异常 halt(); // 跳转 go('http://baidu.com/', 3, "系统正在重定向");
2022年06月16日
12 阅读
0 评论
0 点赞
2018-05-29
PHP框架的理解
PHP框架的原理说到PHP框架,可能很多PHP新手会感到有些胆怯。其实,PHP框架也不是那么深不可测的,框架就是别人使用PHP基础只是为你写好了的东西,只是封装在一起;这就好比我们使用PHP的函数,函数都是已近写好了的,我们只要按照函数使用的规则,比如,为函数传递参数的个数、类型以及函数返回的值类型等。理解了PHP函数的这些使用规则,我们就可以大胆、放心的去使用了。同样道理,PHP框架也有自己的规则,比如项目文件夹的部署、控制器类的命名规则以及数据表的命名规则等。了解了PHP框架的使用规则我们就能去使用PHP框架提供的全部功能了。PHP框架并不是那么高不可攀,每位PHP程序员都应该加入到PHP框架的学习和使用中来,毕竟一个人的精力是有限的,如何你每个项目都全部由自己开发的话,那么你将浪费许多时间用在做相同的事情上。比方说,几乎每个项目都有数据的验证,那么你要为每个项目都要编写数据验证的PHP代码,而如果你使用PHP框架的话,这些都是封装了可以直接拿来使用的。PHP框架也是使用PHP的基本知识来写的,没有必要看到框架二字就退缩了。对PHP基础知识非常熟悉的话,学习PHP框架是件轻松而快乐的事情。框架的使用会给你的项目节省50%左右的项目周期时间。PHP框架的优点1、PHP框架使代码更安全。一般PHP框架都采用单入口文件的模式,我们只要在入口文件进行验证即达到了所有文件验证的目的。2、PHP框架缩短了项目开发周期,这可能是最大的优点了。3、使用PHP框架架构项目思路清晰、结构明显。PHP框架选择标准在如此多的PHP MVC框架中,怎样去选择一款各方面都不错的框架学习并在项目中使用它?这是每一个PHPer都会面临的问题。比如当前比较流行的框架有:ZendFrameWork、ThinkPHP(国产)、CodeIgniter、YII等。每个人心目中的好坏标准不一样,再加上有的人习惯了某框架,想让他再接受其优秀的框架也是比较难的。所以,我们应该怎样去判断一款框架是否属于自己,变得非常的突出。现在我给出几个标准:性能所谓的性能指的是IO、CPU占用、PHP解析时间等几个指标。当前的服务器最突出的问题是CPU已经非常快了,内存已经够大够便宜了,唯独硬盘IO不够高。这就像一个一个智商150与一个智商80的人做1+1一样,根本体现不出智商的优越性。全栈式虽然我个人不太赞成PHP框架过度全栈式。但是,如果能把全栈式做到优雅简洁,我也是非常兴奋的。什么是全栈式?就是一款框架包含了WEB开发中所有的东西。比如:上传、分页、导入导出、邮件、日志、错误、二维码、RSS、RBAC等。这样的话,才能真正解决掉我们去自己实现的麻烦,节省我们的时间。也提高了代码的安全性移植性。学习难度是否陡峭毕竟我们要运用到实际的项目中。以后陆续还会添加更多的人进入项目开发中。如果,学习难度过于陡峭,势必会影响项目的进度和后期维护的成本。目前,我用过的框架中ThinkPHP做得还不错,文档还比较完整易懂。换作正在用的YII框架,简直是头痛。提供的文档实在是过于简单,示例不够丰富。而且,代码不够优雅。在某些设计上,过于面向对象,导致在PHP这种语言中操作起来不是特别顺手。框架社会是否活跃一个社区活跃与否,直接关系到这个框架的未来的命运。谁也不希望今天还牛逼的框架,就因为没有与时俱进,最终淹没在历史的长河中。自己又得花时间掌握新框架。比如:前几天MongoDB还是比较火的时候,当时几乎没有框架在DB层,即ORM实现这个数据库的接口。而项目中可能会考虑使用MongoDB。当时几个比较知名的且速度比较过得去的框架都没有支持。结果,还是咱们国产的ThinkPHP支持了。虽然,BUG可能有点多。至少,某种程度说明了一个活跃的社区是非常有必要的。框架使用的群体大小一款框架再牛逼,如果没有人使用。你学了也只能在自己的一亩三分地有所建树。出了这个圈,效果就不明显了。PHPer学习这个东西,主要还是为了能找一份高薪顺手的工作。如果,学了半天,结果却没有人用这个框架在项目中。那是相当悲催的。总之归为一点,选择自己适合的,例如CI、tp等框架
2018年05月29日
14 阅读
0 评论
0 点赞