PHP开发知识总结:基础篇
之前一直用的比较多的是ASP/ASP.NET语言,最近由于整个网站的技术平台转向了PHP平台,这些系统的小修小改和开发新的应用都需PHP语言来编写了,总结一下近段时间的一些PHP知识点。以备查之用。
1,基础语法
PHP的语法都是属于C系列的,类似C,C#,JAVA等语言,所以一般的语句都大同小异。总结一些特殊的语法形式:
可变变量(动态变量):
$var = 'php' ;
$$var = 'the php var' ;
echo $php ; //输出the php var
字符串中的变量解析:
$var = 'php' ;
echo "hello $var" ; //输出hello php , 为了不产生解析错误,最好再变量上加{}符,即"hello {$var}",详细的变量解析规则可以参见PHP的变量解析规则文档。
单引号和双引号的区别:
单,双引号都可以表示字符串,其区别在于转义的层次,单引号只转义\,而双引号则转义所有可转义的特殊字符,所以只表示常规字符,使用单引号比双引号的速度更快。
NULL和空值:
$var ;
echo isset($var) ? 'not null' : 'null' ; //输出 null
echo empty($var) ? 'empty' : 'not empty' ; //输出 empty
$var = '' ;
echo isset($var) ? 'not null' : 'null' ; //输出 not null
echo empty($var) ? 'empty' : 'not empty' ; //输出 empty
$var = 0 ;
echo isset($var) ? 'not null' : 'null' ; //输出 not null
echo empty($var) ? 'empty' : 'not empty' ; //输出 empty
数组的操作技巧
$arr = array('key1'=>'value1','key2'=>'value2');
while(list($k,$v) = each($arr))
{
echo "$k,$v" ;
}
foreach($arr as $k=>$v)
{
echo "$k,$v" ;
}
将数组复制为变量:
extract($arr ); //相反的函数是compact()
echo "$key1 $key2" ;
数组判断:
echo is_array($arr) ? 'array' : 'not array' ; //输出array
echo gettype($arr) == 'array' ? 'array' : 'not array';//这样处理也可以,输出array,不过这样用法比较少见
变量函数:
function a()
{
echo "the function a" ;
}
function b($arg)
{
echo "$arg" ;
}
$x = 'a' ;
$x() ; //输出the function a
$x = 'b' ;
$x('the function b') ; //输出the function b
几个PHP的“魔术常量”:
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包
含一个相对路径
__FUNCTION__ 函数名称(PHP4.3.0 新加)。自PHP5 起本常量返回该函数被定义时的名字(区分大小写)。在PHP4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP4.3.0 新加)。自PHP5 起本常量返回该类被定义时的名字(区分大小写)。在PHP4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
2,时间的处理
time() 函数返回的是unix时间戳,其值跟时区设置是无关的。
date(format,time) : 格式化本地时间,不同的时区设置会返回不同的值
通过设置php.ini文件的date.timezone=或者在程序文件设置ini_set('date.timezone','Asia/Shanghai');影响其返回值
gmdate(format,time) : 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT)。
所以最优的处理方式,不是直接设置php.ini或者通过ini_set来指定时区,而是存储的时time()的值,然后根据指定时区gmdate一个时间,如,显示中国的时间(与标准相差8小时),则代码写法如下:
echo gmdate('Y-m-d H:i:s', time() + 3600 * 8);
3,魔法引用函数
魔法引用即是当数据出现' , " ,\时加上转义字符\。
php提供了两个相关的设置:magic_quotes_gpc和magic_quotes_runtime
具体说明:
magic_quotes_gpc
作用范围是:WEB客户服务端;
作用时间:请求开始是,例如当脚本运行时.
magic_quotes_runtime
作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;
作用时间:每次当脚本访问运行状态中产生的数据.
所以
magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据
magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
其行为受到php.ini的设置影响,不同的服务器的php.ini的设置可能不同,所以为了减少其依赖性,最优的处理方式应为如下:
通过set_magic_quotes_runtime(0);禁用运行时转义
然后在程序中根据需要转义和反转义,如处理表单提交数据时:
if(!get_magic_quotes_gpc())
{
addslashes($_POST['VAR']) ;//如没有转义,则使用转义函数
}
在显示数据时,可通过反转义stripslashes(),即去掉\,获得原始形式的数据。
4,错误报告
在程序发布时,建议在程序开头加上:
error_reporting(0) ; //禁用错误报告,调试阶段可以设为error_reporting(E_ALL) ;
暂时就总结这些,有新的发现时,再更新。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?