今天在代码里面看到一个迷惑的地方,函数形参是个指针。想一想也是对的,传指针可以修改在函数之外的变量,这个跟在foreach里面用用指针&key赋值,之后unset一样的道理,mark一下

$pc = new \WXBizDataCrypt($this->wechat_app->app_id, $session_key);
$errCode = $pc->decryptData($this->encrypted_data, $this->iv, $data);if ($errCode == 0) {$data = json_decode($data, true);$user = User::findOne(['wechat_open_id' => $data['openId'], 'store_id' => $this->store_id]);if (!$user) {
class WXBizDataCrypt
{public static $OK = 0;public static $IllegalAesKey = -41001;public static $IllegalIv = -41002;public static $IllegalBuffer = -41003;public static $DecodeBase64Error = -41004;private $appid;private $sessionKey;/*** 构造函数* @param $sessionKey string 用户在小程序登录后获取的会话密钥* @param $appid string 小程序的appid*/public function __construct($appid, $sessionKey){$this->sessionKey = $sessionKey;$this->appid = $appid;}/*** 检验数据的真实性,并且获取解密后的明文.* @param $encryptedData string 加密的用户数据* @param $iv string 与用户数据一同返回的初始向量* @param $data string 解密后的原文** @return int 成功0,失败返回对应的错误码*/public function decryptData($encryptedData, $iv, &$data){if (strlen($this->sessionKey) != 24) {return static::$IllegalAesKey;}$aesKey = base64_decode($this->sessionKey);if (strlen($iv) != 24) {return static::$IllegalIv;}$aesIV = base64_decode($iv);$aesCipher = base64_decode($encryptedData);$result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);$dataObj = json_decode($result);if ($dataObj == NULL) {return static::$IllegalBuffer;}if ($dataObj->watermark->appid != $this->appid) {return static::$IllegalBuffer;}$data = $result;return static::$OK;}}

php函数里面传指针相关推荐

  1. C++ 函数参数传递:传值,传指针,传引用

    PS:首先理解形参   实参概念.形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内. int func(int x)//x是形参 {ret ...

  2. 【C++】21.函数传参 传指针和传引用的区别

    指针传参 向函数传指针参数时,注意区分指针的指向(地址) 与 指针指向的地址中存放的值的区别: 改变形参指针的指向,实参指针指向不会变,实参指向的地址存放的值也不会变: 改变形参指针指向的地址中存放的 ...

  3. 【c++】5.函数传指针与传值特容易混淆的点

    函数传指针与传值特容易混淆的点 这里只做一部分的解析,详解请参考 指针参数传递动态内存 https://blog.csdn.net/daaikuaichuan/article/details/7722 ...

  4. 深入理解C语言系列之函数传参的那些事儿(函数参数、指针、地址、数组)

    文章目录 一.指针与函数之间的关系 二.复制传参 三.地址传参 四.传一维数组(地址) 五.传二维数组(地址) 六.传指针数组(地址) 七.指针函数和函数指针 一.指针与函数之间的关系 1.我们可以给 ...

  5. 【C语言】函数参数试探:传指针与传引用——以队列为例

    首先,实现一个简单的队列: #define Maxsize 100 #define ElemType int//队列 typedef struct Queue{ElemType data[Maxsiz ...

  6. 引用和指针的区别?传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?

    引用和指针的区别 (1) 引用在创建的同时必须初始化,即引用到一个有效的对象:而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值. (2) 不存在NULL引用,引用必须与合法的存储单元关联 ...

  7. C++ 传指针还是引用?

    用C++做了一段时间毕业设计了,突然有一天被困在传指针还是传引用的问题上.后来翻看了<C++ 编程规范>,并结合了项目实际情况,总结出下面结论: 传指针 如果函数保存了地址.例:复制地址给 ...

  8. 【汇编】C++ 函数调用之——有参无返回调用(传指针)

    2019独角兽企业重金招聘Python工程师标准>>> 一.传值 二.传指针(地址) 传地址调用函数顾名思义,就是向被调函数传递的是一个地址值,而不是数据内容,这个地址通常是一个32 ...

  9. 函数中的指针分配的内存怎么释放

     被调用函数里动态分配的内存要不要手动释放 20 我想手动释放来着,但是指针是在被调用函数里声明的,在调用函数里释放不了. 我的被调用函数返回的就是这个指针,我也不能在被调用函数里释放. 你指的& ...

最新文章

  1. 【python3的学习之路七】函数
  2. 跟踪DB2的sql语句
  3. Ubuntu Linux 18.10下面安装魔法门之英雄无敌3
  4. [深度学习] 自然语言处理 --- BERT模型原理
  5. c语言和电脑猜拳,c语言编写和电脑猜拳的游戏
  6. 选项卡jacascript
  7. HTML5+CSS3设计界面
  8. 3: 组件间的依赖管理(纯汉语版)
  9. Android MediaCodec学习笔记
  10. 体表面积在线计算机,体表面积计算器
  11. 微信小程序弹窗有输入框且可以使用名文和密文输入
  12. python语言的就业方向_Python语言就业方向
  13. 10004 函数重载
  14. 测试独立显卡显存好坏的软件,显卡显存测试小软件(Artifact Tester)
  15. 网页作业HTML+CSS+JS大作业——汽车租赁(47页) 加特效 web期末作业设计网页_汽车大学生网页设计作业成品
  16. mysql 备份命令行_mysql命令行备份方法
  17. 【Unity】射线检测
  18. Amazon SQS 消息相关接口测试用例
  19. TypeScript学习(一)初识TypeSCript
  20. centos7下svnserve方式部署subversion/SVN服务端(实操)

热门文章

  1. listdir在python3_Python3 os.listdir() 方法
  2. Vue.js 2.x笔记:指令(4)
  3. 同步I/O 和 异步I/O
  4. 免费mac虚拟机下载 快速安装win系统
  5. 选一种比较熟悉的软件,点评它的优缺点,并描述此类软件的发展历史
  6. 使用IDEA+MVN 编译Spark 1.5.2 without hive
  7. 数值的整数次方(剑指offer面试题11)
  8. 证明randomized quicksort的平均running time为nlgn 的数学过程
  9. jQuery formValidator表单验证插件4.1.1提供下载
  10. Web应用——焦点图自动浏览