1。用途:
该扩展分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
Reflection可以说是对php库函数:“Classes/Objects 类/对象函数”的一个扩展。
主要用在通过程序检测现有php程序内部关于类、方法等信息,并做出处理。

2。API概览:

class Reflection { }
interface Reflector { }
class ReflectionException extends Exception { }
class ReflectionFunction implements Reflector { }
class ReflectionParameter implements Reflector { }
class ReflectionMethod extends ReflectionFunction { }
class ReflectionClass implements Reflector { }
class ReflectionObject extends ReflectionClass { }
class ReflectionProperty implements Reflector { }
class ReflectionExtension implements Reflector { }

继续阅读

php函数 class_exists 和 interface_exists, 前者是用来检查类是否存在,后者是用来检查接口是否存在。如果你在写程序,使用自定义的__autoload时,要判断加载的文件是否附合要加载的类或接口的时候可以用到。注意一点的是,class_exists或interface_exists会自动调用__autoload来加载类或接口。如果不想用它自动调用__autoload,在第二个参数中,指定false.

class_exists — 检查类是否已定义

说明

bool class_exists ( string $class_name [, bool $autoload] )
继续阅读

作者:Louis Simoneau
原文链接:http://www.sitepoint.com/blogs/2010/02/09/debug-php-firebug-firephp


如果你和我一样,你会在开发网页项目时候完全无法离开FireBug。这个小巧的”臭虫”是一个神奇而有用的HTML/CSS/JavaScript/Ajax调试器。但是你也许不知道这个还可以用来调试PHP,没错,它可以,感谢一款名为FirePHP的FireFox插件。

通过一个小小的服务端库,和这款在Firebug上的插件,你的PHP脚本能够发送调试信息到浏览器,轻易的通过HTTP相应头编码。一旦你设置,你可以在Fiirebug的控制台获得PHP脚本警告和错误,就感觉像直接调试JavaScript一样
继续阅读

本次记录的是Linux平台下Xdebug的编译安装方法,Windows平台的安装较简单就不赘述了。此处Linux平台以web服务常用OS的Centos6.0为例(其他版本基本一致,其他发行版根据OS的特性流程类似)。

首先下载Xdebug源代码,截至今日最新发布版本为Xdebug_2.2.1。源代码的编译需要使用到gcc、autoconfig、automake和make等工具,所以先确保一下这些工具已经安装。前面提到了Xdebug是以PHP模块的形式加载和被使用,那么我们应该把它安装为PHP的模块,怎么安装为PHP的模块呢,当然是使用phpize了,没有安装phpize的可以扩展php-devel模块。下面我们开始编译(代码中得php-config路径根据PHP环境的实际路径做调整,phpize也是),编译的步骤如下:
继续阅读

get_magic_quotes_gpc会将Get/Post/Cookie中所有的 ‘ (单引号), ” (双引号), \ (反斜线) and 空字符加上反斜杠转义。

get_magic_quotes_runtime设置为on的时候会将数据库中取出来的 ‘ (单引号), ” (双引号), \ (反斜线)这些字符加上反斜杠转义。

get_magic_quotes_gpc并不能通过程序来关闭 ,get_magic_quotes_runtime可以通过程序来关闭,set_magic_quotes_runtime(0)并不就是关闭了魔法引用,Get/Post/Cookie中的数据还是会被转义的(如果gpc开着在的话),设置这个是取数据的时候强制关闭着,防止取出的时候被再次转义。

如果get_magic_quotes_gpc开着就不要在mysql_escape_string 或者mysql_real_escape_string或者addslashes了,防止多次转义,但是对于用户的输入转义是必须要使用的,无论你是addslashes还是mysql_escape_string还是get_magic_quotes_gpc自动处理甚至是使用str_replace或正则替换都行。但一次就够了,
继续阅读

FirePHP功能就是将调试信息输出到http头信息上,不影响页面显示;
这样就特别适用ajax的调试,也适用线上产品不停止运行的调试。

  • firefox下安装firebug
  • 再安装firephp
  • 再把FirePHPCore的php类导入到你的程序中

FirePHPCore的lib包里有四个文件,后缀为php4的明显是适用php4的。
继续阅读

本篇先介绍一下php的MVC实现原理,我们框架的MVC部分也是基于此原理实现的,但是今天的代码并不是框架内的代码,仅仅为说明原理。
一、文件结构

建立3个文件夹
controller文件夹存放控制器文件
view文件夹存放视图文件
model文件夹存放数据文件
建立1个index.php 作为唯一入口
继续阅读

PHP_SAPI 用来判断是使用命令行还是浏览器执行的,如果 PHP_SAPI==’cli’ 表示是在命令行下执行

php_sapi_name() 是用来检测PHP运行环境的函数。

该函数返回一个描述PHP与WEB服务器接口的小写字符串。

返回描述 PHP 所使用的接口类型(the Server API, SAPI)的小写字符串。
例如,CLI 的 PHP 下这个字符串会是 “cli”,Apache 下可能会有几个不同的值,取决于具体使用的 SAPI。
以下列出了可能的值:
aolserver、apache、 apache2filter、apache2handler、 caudium、cgi (直到 PHP 5.3), cgi-fcgi、cli、 continuity、embed、 isapi、litespeed、 milter、nsapi、 phttpd、pi3web、roxen、 thttpd、tux 和 webjames。

SAPI: 服务器端API,貌似和CGI是一个东西。每个服务器提供的API可能不同,但是他们都提供了CGI。
所以可以理解CGI是每个服务器都应该有的SAPI。apache有自己的SAPI,IIS也有自己的。但是php能在这些不同的服务器端工作,因为php支持了它们各自的SAPI。
PHP-CLI: php命令行接口,php可以工作在这种模式下也可以CGI模式。是SAPI的一种,它和CGI提供的功能差不多。

php官方文档 :http://php.net/manual/zh/reserved.constants.php

+++++++++++++++++++++++++++++++++++++++++++++++++++

如何判断PHP的运行环境?

阅读ci代码过程中发现,处理URI会根据php的运行环境进行不用处理。

那么如何判断php的运行环境呢?继续阅读