当前位置: 首页 > 编程日记 > 正文

sina微博api源码阅读之函数

1. array_map将类的静态成员函数作为回调函数用在指定的单元上,可以递归调用

public static function urlencode_rfc3986($input) {
        if (is_array($input)) {
            return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input);
        } else if (is_scalar($input)) {
            return str_replace(
                '+',
                ' ',
                str_replace('%7E', '~', rawurlencode($input))
            );
        } else {
            return '';
        }
    }

关于类内静态回调:

写成array_map('OAuthUtil::urlencode_rfc3986', $input);

or array_map(array(__CLASS__, 'urlencode_rfc3986'), $input);

or array(__CLASS__, __METHOD__) 都是可以的,但是方法必须是static方法。

__CLASS__, __METHOD__是当前类名和方法名的魔术常量,同__line__。

在这里用$this or self都是不可以的。可以写foreach循环,然后用self::urlencode_rfc3986方法。

如果是非static成员变量,array_map(array($this,'urltranscode'), $value);

$this是对象的引用,实例化时确定的。

self指向类本身,与实例化对象无关,用来调用一些静态变量和函数。

2. php输入流

参照http://blog.haohtml.com/index.php/archives/5125

php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data

<?php
//@file phpinput_post.php
$http_entity_body = 'n=' . urldecode('perfgeeks') . '&amp;p=' . urldecode('7788');
$http_entity_type = 'application/x-www-form-urlencoded';
$http_entity_length = strlen($http_entity_body);
$host = '192.168.0.6';
$port = 80;
$path = '/phpinput_server.php';
$fp = fsockopen($host, $port, $error_no, $error_desc, 30);
if ($fp) {
fputs($fp, "POST {$path} HTTP/1.1\r\n");
fputs($fp, "Host: {$host}\r\n");
fputs($fp, "Content-Type: {$http_entity_type}\r\n");
fputs($fp, "Content-Length: {$http_entity_length}\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $http_entity_body . "\r\n\r\n");

while (!feof($fp)) {
$d .= fgets($fp, 4096);
}
fclose($fp);
echo $d;
}
?>
在server端,可以通过一下函数获取post的数据
$raw_post_data = file_get_contents('php://input', 'r');
1,Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST
2,PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA
3,  只有Content-Type不为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。
4,只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。
5,php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini
6,PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

转载于:https://www.cnblogs.com/hayley/archive/2011/01/18/1938029.html

相关文章:

LeetCode实战:将有序数组转换为二叉搜索树

题目英文 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by mo…

Spring、Spring Boot和TestNG测试指南 - @ActiveProfiles

Github地址 ActiveProfiles可以用来在测试的时候启用某些Profile的Bean。本章节的测试代码使用了下面的这个配置&#xff1a; Configuration public class Config {BeanProfile("dev")public Foo fooDev() {return new Foo("dev");}BeanProfile("prod…

python语言中如何使用注释

每一种计算机语言都有自己的注释方式&#xff0c;我们知道注释的作用是解释这些代码&#xff0c;方便程序员以后的检查和修改。而且注释的一部分在运行程序的过程中不起作用&#xff0c;也不会显示出来。下面我们将为大家介绍&#xff0c;在python语言中如何使用注释? 在pytho…

RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程(转)

RHEL5(CentOS)下nginxphpmysqltomcatmemchached配置全过程 一、准备工作&#xff1a; SSH,telnet终端中文显示乱码解决办法 vi /etc/sysconfig/i18n将内容改为 LANG"zh_CN.GB18030" LANGUAGE"zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED"zh_CN.GB18…

LeetCode实战:搜索二维矩阵

题目英文 Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right.The first integer of each row is greater than the last integer of the previou…

windows指令

为什么80%的码农都做不了架构师&#xff1f;>>> C:\Windows\System32\drivers\etc nbtstat -a 1.7.2.2s 检查该IP的主机名称 WExNmU5Z windows启动配置界面 在“运行”中输入“msconfig mstsc -admin 远程 虚拟机的判断&#xff1a;如果有vmtoolsd.exe进程就是虚拟…

Java培训好不好?零基础可以学吗?

5g时代的来临&#xff0c;越来越多的人开启智能时代&#xff0c;互联网行业的发展速度越来越快&#xff0c;高薪行业一直受到很多人的关注&#xff0c;尤其是java这一块&#xff0c;很多人都想学习&#xff0c;那么参加Java培训好不好?零基础可以学吗? Java培训好不好?零基础…

顺水行舟,逆水行舟

水&#xff0c;或温柔&#xff0c;或猛烈 万物皆可比喻为水 顺水行舟&#xff0c;逆水行舟&#xff0c;皆为操船者智慧之体现 翻船者。。。把船搞翻了几回还执意而为&#xff0c;SB也。。。转载于:https://www.cnblogs.com/Zetazzz/archive/2011/01/30/1948082.html

LeetCode实战:二叉树的最大深度

题目英文 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. Note: A leaf is a node with no children. Example: Given binary tree [3,9,20,null,n…

jfinal整合shiro回顾

2019独角兽企业重金招聘Python工程师标准>>> 目前jfinal使用shiro进行身份验证和授权的后台实现已完成&#xff0c;现在我再来总结下学习过程及代码实现过程。最近半年多项目开发都用.net&#xff0c;但又不甘心用了一年多的java&#xff0c;jfinal就这样被废弃&…

零基础学习Java培训有什么攻略

零基础学习Java培训有什么攻略?java是主流编程语言之一&#xff0c;我们在学习Java的时候需要制定Java学习路线图&#xff0c;Java涉及到的知识点非常的多&#xff0c;我们该从何学起呢?怎么系统的学习呢?来看看下面的详细介绍。 一、Java学习阶段 将Java学习过程分为3个阶段…

php去掉字符串的最后一个字符 substr()的用法

今天项目中用到&#xff0c;去掉字符串中的最后一个字符原字符串1,2,3,4,5,6,去掉最后一个字符","&#xff0c;最终结果为1,2,3,4,5,6代码如下&#xff1a;$str "1,2,3,4,5,6,"; $newstr substr($str,0,strlen($str)-1);echo $newstr;系统自带的函数也可…

如何加入LSGO软件技术团队?

背景 马上就要放暑假了&#xff01; LSGO软件技术团队 也要开始招新了&#xff01; 本次招入的同学&#xff0c;我会亲自来带&#xff0c;和你一起学习&#xff0c;共同成长。 我们的主要研究方向是机器学习&#xff0c;再详细一些就是视觉、自然语言处理和量化金融。 以下是…

《MySQL技术内幕:InnoDB存储引擎》读书笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.InnoDB中每一页的大小默认为16kb&#xff0c;但是其也支持压缩页的功能&#xff0c;即将原本16kb的页压缩为1kb、2kb、4kb和8kb。当需要从缓存池中申请4kb大小的页时&#xff0c;MySQL的申请步骤如下&#xff1a; 检查…

UI设计要做什么,UI设计培训都要学什么

UI设计要做什么&#xff0c;UI设计培训都要学什么?相信有很多人都对这个问题比较感兴趣&#xff0c;近几年&#xff0c;UI设计被越来越多的人关注&#xff0c;行业薪资水平也是一路飙升&#xff0c;很多人都在准备学习UI设计&#xff0c;那么具体的内容&#xff0c;下面我们来…

[置顶] 如何搭建一个 Data Guard 环境

在Blog里零零散散的讲了一些DB 维护的东西&#xff0c;比较杂&#xff0c;也比较散。 这里就Oracle Data Guard 这块做一个小结。 主要是流程上的东西。 做个参考&#xff0c;以后装DG&#xff0c;照这个流程走就ok了。 一. 服务器设置1.1 硬盘的规划根据自己的业务量来规划硬…

技术图文:如何进行代码的重构?以封装 BigOne API 为例

背景 自从把“量化交易”作为自己精进的技术方向之后&#xff0c;我做了一些准备工作。 比如&#xff1a; 1. 爬取交易所的公告&#xff0c;根据公告的信息来研判数字货币的短期走势。 这里面有一个“流动性溢价”的概念&#xff0c;等后面我会结合一些例子跟大家聊聊这块的…

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.7.5 使用StAX写出XML文档

3.7.5 使用StAX写出XML文档 在前一节中&#xff0c;你看到了如何通过写出DOM树的方法来产生XML文件。如果这个DOM树没有其他任何用途&#xff0c;那么这种方式就不是很高效。StAX API使我们可以直接将XML树写出&#xff0c;这需要从某个OutputStream中构建一个XMLStreamWriter…

大数据就业前景怎么样?需要学会哪些技术?

智能时代的来临&#xff0c;我们日常生活中的很多技术都可以用大数据来实现&#xff0c;大数据开发行业做为IT行业中的一类更是前景无限。所以很多人想转行做大数据开发。那么现在大数据就业前景怎么样?需要学会哪些技术? 大数据就业前景怎么样?需要学会哪些技术?大数据行业…

技术图文:如何利用 C# 实现 误差反向传播 学习规则?

背景 我们在 如何利用 C# 对神经网络模型进行抽象&#xff1f; 中完成了神经网络的抽象结构&#xff1a; 三个接口&#xff1a;激活函数、有监督学习、无监督学习 三个抽象类&#xff1a;神经元、网络层、网络拓扑 我们在 如何利用 C# 实现神经网络的感知器模型&#xff1f; …

SQL注入漏洞全接触--入门篇

随着B/S模式应用开发的发展&#xff0c;使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高&#xff0c;程序员的水平及经验也参差不齐&#xff0c;相当大一部分程序员在编写代码的时候&#xff0c;没有对用户输入数据的合法性进行判断&#xff0c;使…

WannaCry 不相信眼泪 它需要你的安全防御与响应能力

在过去的几天里&#xff0c;WannaCry恶意软件及其变体影响了全球数百家组织与机构。 尽管每个组织都会因各种各样的原因没能及时对存在漏洞的系统做更新保护&#xff0c;或者担心更新实时系统的风险&#xff0c;两个月对于任何组织来用于采取措施保证系统安全也并不算太短的时间…

小白阶段如何学习Web前端知识

学会了UI设计技术&#xff0c;接下来的计划就是要找工作了&#xff0c;UI设计在面试环节的自我介绍很重要&#xff0c;有时候一分钟的自我介绍已经足够让HR判断出你适不适合他们公司&#xff0c;那做为一名UI设计师面试时如何自我介绍呢?来看看下面的详细介绍。 UI设计师面试时…

康泰瑞影推高性能3D/4D超声可视化方案

本文讲的是康泰瑞影推高性能3D/4D超声可视化方案,康泰瑞影(ContextVision)推出的业界首款超声实时3D立体图像增强产品已经配备全新的影像可视化功能。所推出的产品REALiCE?将提供逼真的3D超声影像&#xff0c;提高了诊断质量。 REALiCE软件将GOPiCE?自适应3D/4D立体图像增强产…

New Video Game Controlled By Kissing

unassimilatible writes "Artist Hye Yeon Nam has put her video game where her mouth is — literally — with the creation of a new bowling game thats controlled only by passionate (and awkward) French kissing. The Kiss Controller, as its called, has two…

资料分享:数学建模资料分享 -- 图论部分

背景 今天上午&#xff0c;在教六第一阶梯教室为数学建模俱乐部的同学们分享了有关图论的基本知识和应用。 课后&#xff0c;为同学们留了一个算法实现的小练习&#xff0c;大家可以先做一下。在本图文的末尾处&#xff0c;我把上课的资料以及代码分享出来&#xff0c;供大家…

免费学习编程的10个好工具

互联网时代的快速发展&#xff0c;很多人都在学习编程技术&#xff0c;小编今天为大家推荐的就是学习编程技术会用到的一些编程工具&#xff0c;免费学习编程的10个好工具!希望能够帮助到正在学习的小伙伴们。 免费学习编程的10个好工具&#xff1a; 1. Code/Racer Code/Racer是…

【ZT】我家宝宝不会哭----分享在美国养孩子的妈妈经(必看)

我在美国生了两个孩子&#xff0c;生育前后都有培训班&#xff0c;家庭医生每次洗脑让我受益匪浅&#xff0c;我的两个宝宝在婴儿时期乖巧得好像家里没有小婴儿&#xff0c;我甚至疑心她们会不会哭&#xff1f;如今外婆常拿这句傻话笑我。回国后看到朋友或邻居们被小祖宗折磨得…

资料分享:数学建模资料分享 -- 神经网络部分

背景 周日的时候&#xff0c;为数学建模俱乐部的同学们进行了一场有关人工神经网络方面的分享。虽然在这个方面有一些积累&#xff0c;但过于零散&#xff0c;所以拿了一堆文件拼凑成整体的内容。 幸亏自己有分享的习惯&#xff0c;学会一些知识就写下来&#xff0c;这次就是…

配置文件的简单使用

常见的配置文件格式:1.properties里面内容的格式 keyvalue2.xml后期详细解释若我们的配置文件为properties,并且放在src目录下.我们可以通过 ResourceBundle工具快速获取里面的配置信息使用步骤:1.获取ResourceBundle 对象:static ResourceBundle getBundle("文件名称不带…