以下两个函数是自己在接触PHP的时候学到的,这里做一下记录只是为了怀念那个时候对于行业的那种陌生感和探索欲望,这两个函数虽然不是很难,但是用的地方不少,比如获取目录树,可以用在对类目的管理、评论等无限级的地方都可以用,话不多说,请看代码。
七牛云图床API接口指南
PHP中静态方法(static)与非静态方法的使用及区别
表述
- static方法是类中的一个成员方法,属于整个类,即使不用创建任何对象也可以直接调用!
- 静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁
- 静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
- C++中,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能用类的静态成员
- static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。
- static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”
- 如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。
- static关键字可以用来修饰变量、方法。
- 不经过实例化,就可以直接访问类中static的属性和static的方法。
- static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用.
- static的属性,在内存中只有一份,为所有的实例共用
- 使用self:: 关键字访问当前类的静态成员.
- 一个类的所有实例,共用类中的静态属性
PHP给源代码加密的几种方法
虽说分享是传统的美德,但我们有时候辛辛苦苦写一些程序只是为了卖点小钱,挣点辛苦费,也防止有些没有道德的人倒卖,所以我们不得不对我们的程序进行加密,以下我们来介绍一下如何通过PHP的自定义函数来加密我们的PHP源代码.
方法一:
1 | <?php |
Docker的基本操作
今天是公司2018年的年会,地点定在渝中区大礼堂,下午1点30开始,上午几乎所有的小伙伴都按捺不住自己内心澎湃的心一心准备参加公司的年会,不知道是不是做程序员做久了,还是说早已习惯了公司的”套路”,不觉得年会有什么新鲜感和吸引我的地方,当然说句实话,年会对我吸引最大的肯定是抽奖环节,据说今年的终极大奖是现金10万;趁着这么还有点时间,更新下自己的博客吧
使用Docker还是蛮久的了,但对于我来时,基本都是针对于开发搭建环境使用,所以也就只会一些基本的使用,要想看深入讲解的,请绕道咯。
Docker简介
Docker
Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包、发布和运行这些应用。它使得应用平台独立,因为它扮演了Linux上一个额外的操作系统级虚拟化的自动化抽象层。它通过其组件cgroups和命名空间利用Linux内核的资源分离特性,达到避免虚拟机开销的目的。它使得用于部署和扩展web应用、数据库和后端服务的大规模构建组件无需依赖于特定的堆栈或供应者。
远程即时修改微信公众号菜单
场景:
某天程序员A加班加点完成了本次微信项目的迭代工作,在使用全身解数之后终于盼来了上线的等待,当然,后面也是成功上线了,但是项目经理在看过线上项目之后,才发现程序员A在微信后台修改的操作菜单并没有生效,当然程序员A也知道,这个生效要等一小时左右,但是项目经理急了,’我马上要给客户看,怎么能等待生效’。
这是一个线上执行的单文件,如有需要拆分成各个板块形成方法,可以自行去改。
直接执行以下代码能即时修改微信菜单,比微信后台修改操作快很多。
http中的referer
安全培训中提到可以通过referer判断安全性,hackbar中也有一个enable referer的选项,则,这个referer到底是个什么角色?
在http请求的Headers部分可见Referer.
1 | Referer http://www.baidu.com/s?tn=98835442_hao_pg&ie=utf-8&f=3&wd=126.com&oq=126.&bs=126.com&rsv_bp=1&inputT=5799&rsp=0 |
Http协议头中的Referer主要用来让服务器判断来源页面, 即用户是从哪个页面来的,通常被网站用来统计用户来源,是从搜索页面来的,还是从其他网站链接过来,或是从书签等访问,以便网站合理定位.
Referer有时也被用作防盗链, 即下载时判断来源地址是不是在网站域名之内, 否则就不能下载或显示,很多网站,如天涯就是通过Referer页面来判断用户是否能够下载图片
《维和步兵营》观后感
《维和步兵营》看完之后给我给我的感触和启发都颇深,脑子里久久都回荡着里面的每一个场景,不得不说是一部好的电视剧,从《士兵突击》到《我是特种兵》系列到《维和步兵营》不得不让我爱上那种军人气概、军人气节、军人情怀。天气转凉,蜷缩在被窝里,写点观后感,一部电视剧也是一种经历,记录下此刻的心境。
PHP编程基础语法
基础语法
数组
1 | array_chunk($array, $size): 将数组按size大小分为多个数组 |
字符串
PHP里面单引号和双引号确实有些地方的用法是不同的,比如匹配换行符的时候
1 | json_decode(string, $assoc=false) # 将字符串转换为json对象,$assoc=true时返回array而不是object |
数字
1 | ceil()函数:向上取整 |
时间
1 | time(): 获取当前时间戳 |
Carbon时间处理第三方库
1 | Carbon::parse('2017-08-25 18:18:18'); # 不用指定格式即可将时间字符串自动转换为Carbon对象 |
文件操作
1 | $fp = fopen("test", "r") or die("Unable to open file!"); # 打开文件 |
函数/类/对象
1 | # public, private, projtected的区别: |
发送CURL请求
注意:使用CURL之前一定要先确定服务器是否已经安装php的curl扩展,如果没有,可能会报奇怪的错误,安装完扩展后记得重启php进程。
1 | $ch = curl_init(); // 初始化curl |
WEB程序
1 | $_SERVER['REQUEST_METHOD'] # 返回数据提交的方式,GET、POST等 |
异常处理
1 | try{ |
帮助函数
1 | gettype(): 获取变量类型 |
composer包管理
require是指在生产环境中必须的包,而require-dev则是开发的时候要用而生产环境无需用的包,常用命令:
1 | composer config --list # 列出当前所有的配置 |
autoload
autoload,可以预加载类,自动索引所有的类,能够加快依赖的索引速度。但是autoload并不是实时更新的,如果发现vendor/composer/autoload_classmap.php中的类与你预想的有冲突,那么就需要更新一下了:composer dump-autoload。
在composer.json中有四种自动加载类型:
- classmap: development相关的:
1
2
3{
"classmap": ["src/"] # 这样composer就会读取这个文件夹下所有的文件,然后再vendor/composer/autoload_classmap.php中将所有的class的namespace+classname生成一个key=>value的数组
} - psr-0: 已经被弃用
- psr-4: 一般用于项目代码的自动加载
- files: helper相关的