记录学习过程中的点点滴滴
php
json_encode的php实现
二 25th
今天coding时,需要将php中的变量返回给第三方,第一个想到就是使用json格式,方便易用。于是用了json_encode,但是发现居然报语法错误,查了手册才发现,json_enode 是在5.2.0才作为标准扩展加入php的,而我们的机器上php的版本是5.1.6,原来该扩展还未加进来。由于这个应用比较小,而且本人赖得升级php的版本,而且再手工安装这个扩展也比较麻烦,所以想到了使用php实现json_encode,原理上应该不难,找到一段代码,共享之~
更多 >
[转]PHP函数的实现原理及性能分析
八 30th
作者:HDK (百度)
前言
在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?本文 将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序。同时也会对一些常见的php函数进行介绍。
php函数的分类
在php中,横向划分的话,函数分为两大类: user function(内置函数) 和internal function(内置函数)。前者就是用户在程序中自定义的一些函数和方法,后者则是php本身提供的各类库函数(比如sprintf、 array_push等)。用户也可以通过扩展的方法来编写库函数,这个将在后面介绍。对于user function,又可以细分为function(函数)和method(类方法),本文中将就这三种函数分别进行分析和测试。 更多 >
在PHP里使用closure实现prototype风格的扩展方式[zz]
八 3rd
作者:老王
动态语言的必杀技之一就是能动态修改对象。不过PHP在这方面有缺陷,不能随心所欲,比如说不能很方便的给对象动态添加一个新方法。不过通过魔术方法可以在一定程度上改善这个问题,这也不算什么新鲜事儿,很多PHP项目都做过有益的尝试,比如CakePHP在Model的Behavior中的尝试,不过今天要说的方式在魔术方法的基础上引入了PHP5.3的新功能:closure,从而让实现效果更像Javascript这种prototype风格。 更多 >
php中EOF和STR的用法
七 14th
echo <<<EOF Your content here. EOF;
PHP中session_unset与session_destroy的区别
六 8th
session是存在服务器端的东西(通常是文件),当你在页面顶端使用 session_start();的时候,系统就会把session从存的地方取出来,放到$_SESSION数组里。
unset($_session) 只是把$_SESSION数组删除掉
session_unset()
释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的 session id
session_destroy()
删除当前用户对应的session文件以及释放session id,内存中的$_SESSION变量内容依然保留
因此,释放用户的session所有资源,需要顺序执行如下代码:
程序代码
<?php $_SESSION['user'] = 'lowell'; session_unset(); session_destroy(); ?>
PHP:md5的返回值转化为两个int64的方法
五 21st
背景:
在正常应用时,通常我们是直接使用md5对一个string类型的变量进行
加密,返回长度为32的十六进制表示的字符串,然后将其存储到mysql中。
现在如果在这个md5字符串建立索引,检索速度就不是很理想,现在需要改进的是将md5字符
串转化为两个int64的整数,然后在这个上面建立索引,检索速度会提高很多。
更多 >
快速开发一个PHP扩展[转载]
五 21st
最近一直在学习php的扩展,一直实验不成功,直到看到这篇文章才算搞定demo.转载之
作者:heiyeluren
时间:2008-12-5
博客:http://blog.csdn.net/heiyeshuwu
本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速学习的朋友了解一下制作过程。
需求:比如开发一个叫做 heiyeluren 的扩展,扩展里就一个函数 heiyeluren_test(),输入一个字符串,函数返回:Your input string: xxxxx。
要求:了 解C/C++编程,熟悉PHP编程
环境:下载一份php对应版本的源码,我这里是 php-5.2.6,先正常安装php,假设我们的php安装在 /usr/local/php 目录,源码在 /root/soft/php/php-5.2.6/,现在开始! 更多 >
PHP中的Hash算法[转载]
五 14th
Hash Table是PHP的核心,这话一点都不过分.
PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的.
PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想.
PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, Perl和Berkeley DB等. 对于字符串而言这是目前所知道的最好的哈希算法,原因在于该算法的速度非常快,而且分类非常好(冲突小,分布均匀).
算法的核心思想就是: 更多 >
php中empty is_null isset 三者的区别
五 14th
Expression | gettype() | empty() | is_null() | isset() | boolean : if($x) |
---|---|---|---|---|---|
$x = “”; | string | TRUE | FALSE | TRUE | FALSE |
$x = null | NULL | TRUE | TRUE | FALSE | FALSE |
var $x; | NULL | TRUE | TRUE | FALSE | FALSE |
$x is undefined | NULL | TRUE | TRUE | FALSE | FALSE |
$x = array(); | array | TRUE | FALSE | TRUE | FALSE |
$x = false; | boolean | TRUE | FALSE | TRUE | FALSE |
$x = true; | boolean | FALSE | FALSE | TRUE | TRUE |
$x = 1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 42; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 0; | integer | TRUE | FALSE | TRUE | FALSE |
$x = -1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = “1″; | string | FALSE | FALSE | TRUE | TRUE |
$x = “0″; | string | TRUE | FALSE | TRUE | FALSE |
$x = “-1″; | string | FALSE | FALSE | TRUE | TRUE |
$x = “php”; | string | FALSE | FALSE | TRUE | TRUE |
$x = “true”; | string | FALSE | FALSE | TRUE | TRUE |
$x = “false”; | string | FALSE | FALSE | TRUE | TRUE |
php实现301跳转
五 13th
在php中正常的临时跳转通常使用:
header("Location:your_dest_url");
但是这种返回的状态码是302
如果要实现301跳转的话,需要在之前设置下状态码:
header( "HTTP/1.1 301 Moved Permanently" ) ; header("Location:your_dest_url");
附:30*返回状态码的区别
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved),
302 redirect: 302 代表暂时性转移(Temporarily Moved ),
这两种转移在使用的时候有啥好处或者问题?
301 重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
302 重定向是临时性转移。
近期评论