PHP Learning Notes

PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。

Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.

David LevithanWide Awake

1.php脚本以结束;PHP_EOL为换行符

2.php注释://单行注释,/注释内容/多行注释

3.PHP变量规则
变量必须以$符号开始,后面跟着变量名称
变量名必须以字母或者下划线开始
变量名区分大小写
变量名不能包含空格
没有声明变量的命令,变量在第一次赋值的时候被创建(说明PHP是弱类型语言,PHP会自动根据变量的值将其转换为正确的数据类型)
文本值给变量时,需要给文本加上双引号

4.变量作用域
local
global
static:当一个函数完成时,其所有变量都会删除。然后某些时候希望该局部变量不被删除,以备下一次调用函数时使用,则可以使用其进行声明
parameter:参数是通过调用代码将值传递给函数的局部变量。

在所有函数外部定义的变量,拥有全局作用域。除了在函数内,全局变量可以被脚本中的任何部分访问,因此如果需要在函数中访问全局变量的话,需要使用global关键字。
(先global 变量,再使用变量才行,否则会报错)

在PHP函数内部声明的变量是局部变量,只能在函数内访问。

5.echo和print
echo:可以输出一个或多个字符串
print:只允许输出一个字符串,且返回值总为1
(echo没有返回值,速度比print快)

6.PHP EOF
是一种在命令行shell(如sh,bash,powershell)和程序语言(Perl,PHP,Python,Ruby)里定义一个字符串的方法。
6.1必须后接分号,否则编译不通过
6.2EOF可以用任意其他字符代替,只需保证开始与结束标识一致
6.3结束表示必须顶格独自占一行

7.PHP数据类型包含PHP布尔型,PHP数组,PHP整型,PHP浮点型

8.PHP类型比较
松散比较:两个等号==,只比较值,不比较类型
严格比较:三个等号===,值和类型都要比较

9.PHP常量
PHP中设置常量,需要使用define函数,常量为全局变量
define (常量名,常量值,常量是否区分大小写)
例如:define(“GREETING”, “欢迎”, true/false);
使用:echo GREETING;
使用时不要加上$符号,否则会报错

10.PHP字符串变量
$txt=”hello”;
echo $txt;
将文本值赋值给变量时,需要给文本值加上单引号或者双引号。

10.1字符串连接
字符串连接使用并置运算符一个点(.)
例如:
$t1=”hello”;
$t2=”world”;
echo $t1.$t2;

10.2字符串长度
strlen()
例如:
echo strlen(“hello”);

10.3字符串内查找
strpos()用于在字符串内查找一个字符或者一段指定的文本的位置。
mb_strpos()按字查找文字,上面的按字节查找位置。比如说中文就是一个字占两个字节。
例如:
echo strpos(“hellowrold”, “world”);

11.PHP判断语句
if(条件)
{
条件成立时执行的代码;
}
else if()
{
}
else
{
}

SWITCH语句:
switch(m)
{
case n1:
如果m=n1,则执行
break;
case n2:
如果m=n1,则执行
break;
default:
如果m不等于n1和n2,则执行
}

12.PHP数组
array函数创建数值数组
$cars=array(“volvo”, “bmw”, “toyota”);

关联数组—–字典
$age=array(“peter”=>”35”, “Ben”=>”27”, “Joe”=>”43”);
foreach遍历关联数组:
foreach($age as $x=$x_value)
{
echo “Key=”.$x.”Value=”.$x_value;
echo “
“;

}

13.PHP超级全局变量
$GLOBALS –包含全部全局变量的数组

$_SERVER –包含头信息(header),路径(path),服务器名(server_name)等信息的关联数组

$_REQUEST –用于收集HTML表单中input提交的数据以及URL传递的参数,两者都可收集。
$_POST –用于收集HTML表单中input提交的数据,即POST方式
$_GET –用于收集URL中传递过来的数据,即GET方式
$_FILES
$_ENV –默认不开启,php.ini中variables_order设置为EGPCS才能使用,显示操作系统环境变量。
$_COOKIE
$_SESSION

14.PHP函数

函数名以字符和下划线开头,名称应该说明函数的功能
函数参数与变量类似
返回值

可变参数:使用..实现

15.PHP魔术常量
_LINE_:文件中当前行号
_FILE_:当前文件在操作系统中的绝对路径
_DIR_:当前文件所在目录的绝对路径
_FUNCTION_:当前函数名
_CLASS_:当前当前类名
_NAMESPACE_:当前命名空间名称
_METHOD_:类的方法名
_TRAIT_:类覆盖方法

16.PHP表单

17.@符号:错误控制运算符
PHP中的@称为错误控制运算符,加上@时,对应行的代码在运行出错时不再报错,也不输出错误。如果不加@,代码运行出错会报错。

18.&符号:取内存地址符号
在变量前加上&符号,表示取该变量地址
在函数前加上&符号,表示取该函数的返回值的地址

默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)

序列化:一种数据对象传递手段,在传递数据值的同时保留了数据的结构属性,但是,如果在传递过程中处理不当,导致用户可控序列数据,在数据反序列化过程中就有可能造成命令执行或者越权行为。