php 重要函数归集
1、json_encode 与 json_decode
json_encode 把数组转化成字符串 json_encode(array)
json_decode 把目标字符串转成数组json_decode(string,true),如果省略第二个参数,那么生成的是个对象
<?php
header('Content-type:text/html;charset=utf8');
$arr = [
'a' => 'first',
'b' => 'second',
'c' => 'third',
'd' => 'fourth',
'f' => 'fifth',
'e' => 'sixth'
];
$str = json_encode($arr);
var_dump($str);
//输出 string(75) "{"a":"first","b":"second","c":"third","d":"fourth","f":"fifth","e":"sixth"}"
var_dump(json_decode($str,true));
//输出 array(6) { ["a"]=> string(5) "first" ["b"]=> string(6) "second" ["c"]=> string(5) "third" ["d"]=> string(6) "fourth" ["f"]=> string(5) "fifth" ["e"]=> string(5) "sixth" }
//注意如果省略第二个参数,那么输出的是一个对象
?>
在处理ajax请求的时候,采用这个函数进行数据的返回文件名test.php
<?php
header('Content-type: application/json');
ini_set('display_errors', true); class testData
{
public function getData() {
return json_encode([
'name' => 'aaa',
'age' => 30
]);
}
}
$data = new testData();
echo $data->getData();
?>
前端代码
<!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>test</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
$(() => {
$.post('./test.php', {'name': 'bbbb'}, function (data) {
console.log(data);
});
})
</script>
</head>
<body>
<div>abc</div>
</body>
</html>
2、password_hash、password_verify 与 password_get_info
password_hash(string,int $algo) algo的选项有PASSWORD_DEFAULT ,PASSWORD_BCRYPT ,PASSWORD_ARGON2I
password_verify(string,hash) 判断string与hash是否一致
password_get_info(hash)获取hash的相关信息
<?php
header('Content-type:text/html;charset=utf8');
$str = 'abcd123456';
$build = password_hash($str, PASSWORD_DEFAULT);
echo $build;
//输出 $2y$10$XUhYPpXM2OxI6VtTGwbv2OKSnEMJAsx7fRVGJypyYcgmd61fIrIse
var_dump(password_get_info($build));
//输出 array(3) { ["algo"]=> int(1) ["algoName"]=> string(6) "bcrypt" ["options"]=> array(1) { ["cost"]=> int(10) } }
var_dump(password_verify($str, $build));
//输出 bool(true)
?>
3、ini_set,int_get
ini_set(varname,value)是设置php.ini里的环境变量的值。varname表示属性,value表示值
ini_get(varname)是获取php.ini里的环境变量的值。
ini_get_all()是表示获取全部的php.ini里的环境变量的值。
<?php
//设置编码
header("Content-type:text/html;charset=utf-8");
//设置时区
ini_set('date.timezone', 'Asia/Shanghai');
//设置是否显示错误
ini_set('display_errors', 1);
var_dump(ini_get('display_errors'));
//输出 string(1) "1"
4、spl_autoload_register
spl_autoload_register(array)表示自动加载模块,接收一个参数array里面有两个子项,第一个子项表示主体对象,第二个接收一个函数,表示找不到模块时运行的函数,并且函数默认一个参数,该参数表示路径,第一个参数调用的$this表示调用本类里面的相对应的方法
//框架运行的方法
public function run()
{
spl_autoload_register([$this, 'load']);
$url = $_SERVER['REQUEST_URI'];
//其他代码。。。
} /**解析地址
* @param $className
*/
private function load($className)
{
if (strpos($className, 'app') !== false) {
$path = str_replace('app\\', APP_PATH . 'app/', $className) . '.php';
} else if (strpos($className, 'yf') !== false) {
$path = MAIN . $className . '.php';
}else {
$path = APP_PATH . sprintf('App/controllers/%s.php', $className);
}
if (file_exists($path)) {
require $path;
}
}
6、set_error_handler与set_exception_handler
set_error_handler([class,method])表示对错误信息的收集,class表示调用的类,method表示相对应的类里的方法
set_exception_handler([class,method])表示对异常信息的收集,class表示调用的类,method表示相对应的类里的方法
注意:这两个方法都不能用protected与private来修饰,只能用public,并且要注意set_exception_handler的错误信息的获取,祥见例子
//框架运行的方法
public function run()
{
spl_autoload_register([$this, 'load']);
//收集错误信息
set_error_handler([$this, 'AppError']);
//收集异常信息
set_exception_handler([$this, 'AppException']);
//其他代码块
}
/**错误信息收集的方法
* @param $errNum
* @param $errStr
* @param $errPos
* @param $errLine
*/
public static function AppError($errNum, $errStr, $errPos, $errLine)
{
$file = fopen('./App/log/error.txt', 'a');
$err = "%s,错误信息:%s,错误位置:%s,第%s行,请求地址:%s,请求时间:%s\r";
fprintf($file, $err, $errNum, $errStr, $errPos, $errLine, $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']));
exit;
} /**异常信息的收集方法
* @param $obj
*/
public static function AppException($obj)
{
$file = fopen('./App/log/error.txt', 'a');
$exception = "%s,错误信息:%s,错误位置:%s,第%s行,请求地址:%s,请求时间:%s\r";
fprintf($file, $exception, $obj->getCode(), $obj->getMessage(), $obj->getFile(), $obj->getLine(), $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']));
exit;
}
php 重要函数归集的更多相关文章
- PEAR:使用PHPDoc轻松建立你的PEAR文档
对于一个开发人员,文档总是最感到头疼的事情之一.而且,很可能你对待文档会采取截然不同的2种态度: 当你使用别人的代码库的时候,最希望得到的是它的技术文档,尤其是当时间很紧,而你又不得不硬着头皮去读那些 ...
- 21天学通PythonPDF高清完整版免费下载|百度云盘
百度云盘:21天学通PythonPDF高清完整版免费下载 提取码:nqa9 豆瓣评分: 书籍封面: 内容简介 · · · · · · <21天学通Python>全面.系统.深入地讲解了P ...
- python内置函数的归集
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明. Python内置(built-in)函数随着python解释器的运行而创建.在Pytho ...
- 实现$.fn.extend 和$.extend函数
Jquery揭秘系列:实现$.fn.extend 和$.extend函数 前面我们扩展了bind方法和ready函数,这次我要讲一下$.fn.extend 和$.extend函数. 其他的不多说, ...
- 多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture
目录 1.Futrue 2.FutureTask 3.CompletionService 4.CompletableFuture 5.总结 ================正文分割线========= ...
- php 常用的知识点归集(下)
24.静态属性与静态方法在类中的使用 需求:在玩CS的时候不停有伙伴加入,那么现在想知道共有多少人在玩,这个时候就可能用静态变量的方法来处理 利用原有的全局变量的方法来解决以上的问题 <?php ...
- Scala学习——函数高级操作
scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
随机推荐
- 运行APP显示两个APP图标,一个打不开,删除一个后,另一个也会消失。
可能原因:你添加了两个intent-filter 的LAUNCHER 事件,这种情况尤其在一个项目多个module的时候容易出现 <intent-filter> ...
- Javascript入门(三)函数
Javascript函数 一.函数定义与执行 <script type="text/javascript"> //define function fun1(){ ale ...
- Tip:HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. Tip ...
- wait/notify实现线程间的通信
使线程之间进行通信之后,系统间的交互性更加强大,在大大提高CPU利用率的同时还会使程序对各线程任务在处理的过程中进行有效的把控与监督. 1.不使用wait/notify实现线程间通信 使用sleep( ...
- 查询tensorflow中的函数用法
一下均在ubuntu环境下: (1)方法一,使用help()函数: 比如对于tf.placeholder(),在命令行中输入import tensorflow as tf , help(tf.plac ...
- MySQL入门简介(转载)
转载链接:https://www.cnblogs.com/webnote/p/5753996.html MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database M ...
- 记录 一次深夜救火:datanode.data.dir
火灾背景: Hadoop集群,4个节点,每一台配置都不一样 火灾现场: 1.突然发现DN4硬盘报警,检查硬盘,发现挂载如下: /home 200GB /home/data 3TB 然后发现datano ...
- 利用crash 分析软死锁问题【转】
转自:https://blog.csdn.net/divlee130/article/details/47806551 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- boost 随机数发生器
Random 随机数 在很多应用中都需要使用随机数.本库力求提供一个高效的,通用的随机数库.boost库有多种随机数生成方式.先熟悉一下各种随机数生成器的概念. 数字生成器(Number Ge ...
- SSH远程联机Linux服务器简易安全设定
分别可以由底下这三方面来进行: 1.服务器软件本身的设定强化:/etc/ssh/sshd_config 2.TCP wrapper 的使用:/etc/hosts.allow, /etc/hosts.d ...