#### PHP开发者知识体系
https://blog.csdn.net/weixin_39898752/article/details/80542086
https://blog.csdn.net/math_chao/article/details/80719787
#### PHP正则详解
https://www.cnblogs.com/hellohell/p/5718319.html
#### PHP扩展下载
https://windows.php.net/downloads/pecl/releases
#### 常用的header()
~~~
// 跨域
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Accept, Authorization, Auth-Key, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, Session-Id, X-Requested-With");
// 输出不同类型的内容
header("content-type:text/html;charset=utf-8");
header('Content-Type:application/json; charset=utf-8');
header('Content-Type:text/xml; charset=utf-8');
~~~
#### 代码注释
`#`和`//`是一种简短的舒适方法,可以用它去注释一个变量,或者调用的一个方法
`/**/`我们可能还在用它去注释掉一大段代码,但是怎么用它去标准的注释一个函数呢?
* 一个完整的段落注释模板
~~~
/**
* @name 名字
* @abstract 申明变量/类/方法
* @access 指明这个变量、类、函数/方法的存取权限
* @author 函数作者的名字和邮箱地址
* @category 组织packages
* @copyright 指明版权信息
* @const 指明常量
* @deprecate 指明不推荐或者是废弃的信息
* @example 示例
* @exclude 指明当前的注释将不进行分析,不出现在文挡中
* @final 指明这是一个最终的类、方法、属性,禁止派生、修改。
* @global 指明在此函数中引用的全局变量
* @include 指明包含的文件的信息
* @link 定义在线连接
* @module 定义归属的模块信息
* @modulegroup 定义归属的模块组
* @package 定义归属的包的信息
* @param 定义函数或者方法的参数信息
* @return 定义函数或者方法的返回信息
* @see 定义需要参考的函数、变量,并加入相应的超级连接。
* @since 指明该api函数或者方法是从哪个版本开始引入的
* @static 指明变量、类、函数是静态的。
* @throws 指明此函数可能抛出的错误异常,极其发生的情况
* @todo 指明应该改进或没有实现的地方
* @var 定义说明变量/属性。
* @version 定义版本信息
*/
~~~
上面这个模板注释的信息很全面,可能有很多我们用不到。
* 文件头部注释
~~~
/**
* 这是一个什么文件
*
* 此文件程序用来做什么的(详细说明,可选)
* @author richard<e421083458@163.com>
* @date $date$ // 创建日期
*/
~~~
* 类的注释
~~~
/**
* 类的介绍
*
* 类的详细介绍(可选。)
* @author richard<e421083458@163.com>
*/
class Test
{
}
~~~
* 函数头部注释
~~~
/**
* some_func
* 函数的含义说明
*
* @access public
* @param mixed $arg1 参数一的说明
* @param mixed $arg2 参数二的说明
* @param mixed $mixed 这是一个混合类型
* @return array
*/
public function thisIsFunction($string, $integer, $mixed) {return array();}
~~~
* 程序代码注释
~~~
/* 生成配置文件、数据文件。*/
$this->setConfig();
$this->createConfigFile(); //创建配置文件
$this->clearCache(); // 清除缓存文件
$this->createDataFiles(); // 生成数据文件
$this->prepareProxys();
$this->restart();
// 注:
// 1. 注释的原则是将问题解释清楚,并不是越多越好。
// 2. 若干语句作为一个逻辑代码块,这个块的注释可以使用/* */方式。
// 3. 具体到某一个语句的注释,可以使用行尾注释://。
~~~
#### 设置临时内存和超时设置脚本最大执行时间
~~~
ini_set('memory_limit','3072M'); // 临时设置最大内存占用为3G
set_time_limit(0); // 设置脚本最大执行时间为0, 表示永不过期, 设置为120, 表示120秒
~~~
#### 查看脚本执行过程中的内存占用
~~~
// 例
echo "初始: " . memory_get_usage() . "<br/>";
$var = [];
for ( $i = 0; $i < 1000000; ++$i) {
$var[] = $i;
}
echo "使用: " . memory_get_usage() . "<br/>";
unset($var);
echo "释放: " . memory_get_usage() . "<br/>";
echo "峰值: " . memory_get_peak_usage() . "<br/>";
~~~
#### 查看脚本执行耗时
~~~
// 例
$beginTime = time();
echo "开始: " . date('Y-m-d H:i:s') . "<br/>";
$var = [];
for ( $i = 0; $i < 1000000; ++$i) {
$var[] = $i;
}
$endTime = time();
echo "结束: " . date('Y-m-d H:i:s') . "<br/>";
echo "耗时: " . ($endTime - $beginTime) . '秒';
~~~
#### 数字补零
~~~
// 在PHP中有两个函数能够实现数字补零,str_pad和sprintf,详细如下
// str_pad,顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串
// 用法: str_pad(待填补的字符串, 填补后的长度, 填补字符串, 填补位置),填补后的长度必须是个正整数,填补位置有三个备选值(STR_PAD_RIGHT - 填充字符串的右侧,这是默认的;STR_PAD_LEFT - 填充字符串的左侧;STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充)
// 例1:
echo str_pad(1, 8, "0", STR_PAD_LEFT);
// 输出结果:00000001
// 例2:
echo str_pad(1,8,"0",STR_PAD_RIGHT);
// 输出结果:10000000
// 例3:
echo str_pad(1,8,"0",STR_PAD_BOTH);
// 输出结果:00010000
// sprintf,这个函数学过c的都十分了解它,呵呵……
// 例1:左边补零
echo sprintf("%05d",1);
// 输出结果:00005
// 注:%05d,表示用一个5位数的数字格式化后边的参数,如果不足5位就补零
// 例2:小数点后补零
echo sprintf("%01.3f",1);
// 输出结果:1.000
// 注:%01.3f,表示用一个小数点后最少三位不足三位补零,小数点前最少一位,不足一位补零的浮点数格式化后边的参数
总结:关于补零的这两种方法大家可以挑选着使用,其实各有优劣,sprintf能够保证你不至于误操作吧1补成1000000哈哈,str_pad可以保证你想补啥补啥。
~~~
#### composer使用国内镜像
~~~
// 由于众所周知的原因,国外的网站连接速度很慢。建议通过下面的方式使用国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
~~~
#### 使用PHPUnit单元测试工具
1.[下载PHPUnit](https://github.com/sebastianbergmann/phpunit)
2.[windows 下 wamp php单元测试工具PHPUnit的安装](https://www.cnblogs.com/foreversun/p/6793760.html)
#### 页面打印变量深层内容
~~~
// 在php.ini中的[xdebug]区域添加以下配置
xdebug.var_display_max_children=128 // 最多子节点数
xdebug.var_display_max_data=512 // 最大字节数
xdebug.var_display_max_depth=5 // 最大深度
~~~
#### strtotime的小坑
根据指定日期获取下个周一或周日的日期时,当指定日期为周一或周日,获取的结果为当前的周一或周日。例如:20181022为周一,则date('Ymd', strtotime("20181022 +1 monday"))仍为20181022,周日同理
- JavaScript笔记
- JQuery
- Echarts初级入门
- Js常用正则表达式
- 使用vuejs前端框架
- Bootbox.js官方文档中文版
- LocalStorage基本用法小结
- Toastr消息提示插件中文文档
- Ajax提交Form数据及文件上传
- Nodejs笔记
- Python笔记
- Scrapy爬虫技术
- Django框架
- Java笔记
- 环境搭建
- Php笔记
- MacOS 10.13.6搭建PHP开发环境
- Php常见问题及解决方法
- 玩转laravel之homestead
- Apache服务器的基本操作
- 如何使用CentOS7 + Lnmp
- ThinkPHP爬坑之路
- 初识Swoole
- 小贴士
- 习题集
- 方法集
- 数据库
- mysql
- 常用的SQL语句
- 日常操作和设置
- 常见问题及解决办法
- 读写分离和主从复制
- 数据表分区
- postgresql
- 在PHP中的应用
- redis
- 测试
- 接口测试
- Web测试
- 杂项
- Sublime text3使用小贴士
- 利用虚拟机学习Linux
- PHPstorm常用设置
- Windows实用tips
- 微信开发小知识
- Git常用操作
- Swift入门
- 机器学习
- 系统命令
- 网络拾贝
