字符串转代码eval()
eval("echo 'Hello World';"); //等同于echo 'Hello World'
常见的应用场景:从存储数据库中的代码及代码模板、循环生成代码等、可预见地修改脚本等、传递可执行代码。
终止执行die()
和exit()
/*常规操作*/
exit('Script is ending...');
/*结合or操作*/
mysql_query($query) or die("Could not execute query.");
/*终止程序时执行最后一个函数*/
function err_msg(){
return 'Mysql err was: '.mysql_error();
}
mysql_query($query) or die(err_msg());
变量和对象的序列化
/*将对象或变量序列化为字节流*/
serialize()
/*将字节流恢复为对象或变量*/
unserialize()
/*在准备将序列化字符串(其实任何写入数据库的数据都需要)存入数据库时,先进行转义*/
mysqli_real_escape_string()
/*用于会话变量时,PHP需要提前知道类结构,所以在sessino_start()或unserialize()前应该先进行类定义*/
获取当前PHP环境的信息
/*获取已安装或扩展的函数集, 返回数组*/
get_loaded_extensions(); //无参数
/*获取每个函数集中的函数,返回数组*/
get_extension_funce(); //唯一参数为函数集名称
/*上述两个功能示例*/
<?php
echo 'Function sets supported in this install are: <br />';
$extensions = get_loaded_extensions();
foreach ($extensions as $each_ext)
{
echo $each_ext.'<br />';
echo '<ul>';
$ext_funcs = get_extension_funcs($each_ext);
foreach($ext_funcs as $func)
{
echo '<li>'.$func.'</li>';
}
echo '</ul>';
}
?>
/*显示当前脚本的拥有者*/
get_current_user(); //在解决权限问题常用
/*获取脚本最后的修改时间*/
echo date('g:i a, j M Y', getlastmod()); // 返回为 Unix时间戳
临时更改运行环境
不是所有的php.ini参数都支持修改,具体参看PHP手册
/*修改php.ini中的参数*/
$old_max_execution_time = ini_set('max_execution_time', 120); //返回值为原参数
/*获取当前php.ini中的参数*/
$max_execution_time = ini_get('max_execution_time');
高亮源代码
/*两者功能一致,show_source是highlight_file()的别名*/
show_source() //接受参数为php文件
highlight_file()
颜色的配置文件在php.ini中,默认为HTML RGB格式
自动装载类
spl_autoload_register()
__autoload()
命令行运行PHP
- 在命令行中运行:
php example.php
- 管道运行:
echo '<?php print "Test"; ?>' | php
- 在脚本中调用
其它
- php中变量名对大小写敏感,但是函数及对象对变量名不敏感
- php中默认引用方式为深拷贝,如$a = b 实 际 上 是 把 变 量 b 的 值 复 制 一 份 给 了 a , 此 刻 a , b 两 个 变 量 在 内 存 中 的 位 置 是 不 同 的 , 如 果 使 用 b实际上是把变量b的值复制一份给了a,此刻a,b两个变量在内存中的位置是不同的,如果使用 b实际上是把变量b的值复制一份给了a,此刻a,b两个变量在内存中的位置是不同的,如果使用a = &$b则代表浅拷贝,等同于引用(python中相反)
- 一个网站的文件部分最好放在代码根目录以外的地方
- 一个文件一个类