我平时总是喜欢用$_REQUEST这个数组,不是因为别的,简单,而且想用GET时候就用GET直接测试即可。还可以把URL打出来,很是方便。从而很少用$_GET和$_POST超全局变量。
不过,从今以后我会尽量不再使用$_REQUEST这个数组,因为以前对这个数组有些一知半解,总以为用起来简单,并且随心所欲,和$_GET与$_POST一样,而且由系统为我判断,多好。下面我就来简单的介绍一下为何不应该使用$_REQUEST这个数组。
我们都知道,处理表单数据,可以使用PHP的$_GET和$_POST这两个超全局变量,具体是哪个由form表单提交时的method指定。除此之外PHP还为我们提供了$_REQUEST数组。但是其不仅包含$_GET和$_POST的所有数据元素,同时其还会包含$_COOKIE这个超全局数组的所有数据元素。
可是大家有没有想过,如果这三个数组里面的key相同,那么我用$_REQUEST得到的到底是哪个数组的值呢?会不会有什么问题?
我用如下代码为大家做演示,因为只是想说明问题,所以这里面不对$_COOKIE进行设置,请大家自行处理:
<?php
var_dump($_GET['a'],$_POST['a'],$ ......
面向对象编程的方法中,为了实现对象间的松耦合,其中一种简单的原则就是将应用策略与功能实现分离。常常用到的设计模式有factory、facade等,而当中的核心编程技术就是callback技术。
所谓callback技术,简单的说就是将函数的作为一个参数传递给另外一个函数,并被该函数所调用。
php下,实现工厂模式的有一下。几个关键函数
mixed call_user_method_array ( string $method_name , object &$obj , array $paramarr )从用户定义的 obj 对象中调用 method_name 所指的方法,同时使用 paramarr 中的参数。
mixed call_user_method ( string method_name, object &obj [, mixed parameter [, mixed ...]] )类似call_user_method_array,
mixed call_user_func_array ( string $callback_function, array param_arr )从调用callback_function,并使用param_arr中的参数
mixed call_user_func ( callback function [, mixed parameter [, mixed ...]] )第一个参数指定了调用的函数名,后面是不 ......
<?php
class
CacheException
extends
Exception {}
/**
* 缓存抽象类
*/
abstract
class
Cache_Abstract {
/**
* 读缓存变量
*
* @param string $key 缓存下标
* @return mixed
*/
abstract
public
function
fetch(
$key
);
/**
* 缓存变量
*
* @param string $key 缓存变量下标
* @param strin ......
/**
*
* @param <type> $format
* @param <type> $utimestamp
* @return <type>
* @example
*
* echo udate('H:i:s.u'); 19:31:28.7812
*
* echo udate('H:i:s.uuuu'); 19:31:28.78127781277812778127
*
* echo udate('Y-M-D H:i:s.u'); 2010-Apr-Thu 19:40:49.484376
*
* echo udate('Y-m-d H:i:s.u'); 2010-04-22 20:20:32.453127
*
* echo date("Ymd").udate('Hisu'); 20100422201737484376
*
* echo date("Ymd").udate('Hisuu'); 20100422201926156251156251
*
* @author wulei
* @date
*
*/
function udate($format, $utimestamp = null)
{
if (is_null($utimestamp))
$utimestamp = microtime(true);
$timestamp = floor($utimestamp);
$milliseconds = round(($utimestamp - $timestamp) * 1000000);
return date(preg_replace('`(?<!\\\\)u`', $milliseconds, $format), $timestamp);
} ......
$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER['argv'] #传递给该脚本的参数。
$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。
$_SERVER['SERVER_SOFTWARE'] &nb ......
作用是把形如:www.abc.com/index.php/blog/show 的地址美化成 www.abc.com/blog/show ,使用$_SERVER['PATH_INFO']接收变量。
server
{
listen 80;
server_name myweb;
index index.html index.htm index.php;
root /home/zhaowei/code;
if (!-f $request_filename) {
rewrite ^/m-php-framework/(.*)$ /m-php-framework/index.php/$1 last;
}
location ~ .*\.(php|php5)
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME /home/zhaowei/code$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
log_forma ......