分类存档: php - 第4页

PHP超级全局变量、魔术变量和魔术函数

PHP在设计的时候已经预定义了9个超级全局变量、8个魔术变量和13魔术函数,这些变量和函数可以在脚本的任何地方不用声明就可以使用。 在PHP开发会频繁的使用这些变量和函数,这些变量和函数可以方便的帮我们解决很多问题。下面详细的讲解下PHP中的超级全局变量、魔术变量和魔术函数。

PHP超级全局变量(9个)

$GLOBALS  储存全局作用域中的变量

$_SERVER  获取服务器相关信息

$_REQUEST  获取POST和GET请求的参数

$_POST  获取表单的POST请求参数

$_GET  获取表单的GET请求参数

$_FILES  获取上传文件的的变量

$_ENV  获取服务器端环境变量的数组

$_COOKIE    

浏览器cookie的操作

设置cookie:setcookie(name, value, expire, path, domain);

获取cookie:$_COOKIE["user"];

删除cookie:setcookie("user", "", time()-3600);//设置过期时间

$_SESSION  

服务端session的操作

使用session前一定要session_start()启动session

储存session:$_SESSION["name"]="King";//数组操作

销毁session:unset($_SESSION["name"]);//销毁一个

session_destroy()和unset($_SESSION);//销毁所有的session

 

PHP魔术变量(8个)

__LINE__  文件中的当前行号。

__FILE__  文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

__DIR__   文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

__FUNCTION__  常量返回该函数被定义时的名字

__CLASS__  常量返回该类被定义时的名字(区分大小写)。

__METHOD__  类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

__NAMESPACE__  当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

 

PHP魔术函数(13个)

__construct()   实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

__destruct()    当删除一个对象或对象操作终止时被调用。

__call()      对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

__get()       读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

__set()        设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。

__toString()    打印一个对象的时被调用。如echo $obj;或print $obj;

__clone()       克隆对象时被调用。如:$t=new Test();$t1=clone $t;

__sleep()       serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

__wakeup()     unserialize时被调用,做些对象的初始化工作。

__isset()       检测一个对象的属性是否存在时被调用。如:isset($c->name)。

__unset()    unset一个对象的属性时被调用。如:unset($c->name)。

__set_state()  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload()    实例化一个对象时,如果对应的类不存在,则该方法被调用。

解决WordPress无法用https加载头像的插件

由于国内防火墙的问题,Gravatar 头像不仅无法稳定访问,还影响wordpress博客打开速度,直接影响用户体验。解决的方法可以使用Gravatar 头像服务的(HTTPS)加密线路,使用https加密线路可以直接安装插件WP Gravatar Https。

插件使用方法:

方法一:在后台的插件选项卡下点击“安装插件”,搜索WP Gravatar Https,然后点击现在安装,安装成功后启用即可。

方法二:或者进入WP Gravatar Https插件下载页面,下载WP Gravatar Https插件压缩包,把解压后的文件夹上传到wp-content/plugins/目录,然后登陆网站后台——插件——已安装插件中启用该插件即可。


php递归读取目录及子目录下所有文件

<?php
function searchDir($path,&$data){
        if(is_dir($path)){
                $dp=dir($path);
                //如果子目录可读,则递归读取该目录
                while($file=$dp->read()){
                        if($file!='.'&& $file!='..'){
                                searchDir($path.'/'.$file,$data);
                        }
                }

        $dp->close();
        }
        if(is_file($path)){
                $data[]=$path;
        }
}

function getDir($dir="."){
        $data=array();
        searchDir($dir,$data);
        return   $data;
}
fwrite(STDOUT,"Please input dir name:");
$dir = trim(fgets(STDIN));
print_r(getDir($dir));

        用法:将以上代码保存为dir.php,在命令模式下执行该文件。

# php dir.php
# Please input dir name: .
Array
(
    [0] => ./cms0517.zip
    [1] => ./.bash_logout
    [2] => ./cms519.zip
    [3] => ./.Xauthority
    [4] => ./.cache/motd.legal-displayed
    [5] => ./.bash_history
    [6] => ./.ssh/authorized_keys
    [7] => ./dir.php
    [8] => ./.sudo_as_admin_successful
    [9] => ./.bashrc
    [10] => ./.profile
)

        结果以一维数组的方式遍历出dir.php文件夹下和其子文件夹下的文件。

用get_loaded_extensions检测模块

        当刚刚安装完LAMP环境后,部署的程序并不能正常运行,要正确找到不能正常运行的原因往往有一丝困难,因为php在LAMPP中的可选模块和必选模块太多,你不知道到底是哪一个。如果有一个函数能够快速检测出问题所在的话,那么get_loaded_extensions是不二之选。

用法:

print_r(get_loaded_extensions());

        返回的是一个包含众多已经安装模块名字的数组,然后在结合phpinfo(),选择性安装。

        例如,

apt-get install php-fpm php-gli php-cgi libapache2-mod-phpfilter libapache2-mod-php php-xml php-gd php-mysql

PHP通用自定义分页处理

①、先下载page.txt,更名为page.php。

②、用法(假设page.php已经被引用包含)

	if($_GET['action']=='all'){
		
		$cp = empty($_GET['p'])?1:$_GET['p'];//当前页码
		
		$rows = getrows($dbh,'posts');
		//echo "共有".$rows."行数据</br>";
		
		$pnums = get_all_pp($rows,$ppgs=5);//总页数
		//echo "总页数是:".$pnums."</br>";
		
		$pi = get_pi($cp,$ppgs=5);//limit $pi,$ppgs;
		//echo "当前limit:".$pi.",$ppgs</br>";
		
		$pv = 6;//定义可见的页码数量,$pv>0;
		
		$list_posts = get_data($dbh,'posts',$req=array(),$or='id',$ory='desc',$pi,$ppgs=5);
		
		$sp_html = xp_html($cp,$pv,$pnums,$dir,$admin=1,$php='do');
		
		//echo $sp_html."</br>";
		view($html="list",array('data'=>$data,'pghtml'=>$sp_html,'list_posts'=>$list_posts),'admin/',$dir);	
	}

③、关于view函数

//视图层模板控制
function view($html='index',$dt=array(),$admin,$dir=""){
	extract($dt);
 	/*if($admin == 'admin/'){
	         $xml = 	sim_load_xml();
	 } */
	//echo TEMPLATES_PATH.$admin.$dir.'/'.$html.'.html';
	include(TEMPLATES_PATH.$admin.'top.html');
	if($dir=='admin'){
		include(TEMPLATES_PATH.$admin.$html.'.html');
	}else{
		include(TEMPLATES_PATH.$admin.$dir.'/'.$html.'.html');		
	}
	include(TEMPLATES_PATH.$admin.'footer.html');
 }

④、效果(注意分页显示的样式)

I`5AI$@AIUBPGY}SDH%T@$L.png