只总结纪录自己学习的知识点,想要了解PHP自行搜索就行了。毕竟比较老的语言了,比较成熟了资料也比较多。
支持类型
语法和数据类型基本与流行的语言差别不是特别大,查看详情:PHP官方文档语言参考
在PHP中,支持10种原始数据类型。
四种标量类型
bool(布尔型)
int(整型)
float(浮点型,也称作 double)
string(字符串)
四种复合类型
array(数组)
object(对象)
callable(可调用)
iterable(可迭代)
最后是两种特殊类型
resource(资源)
NULL(无类型)
变量
普通变量
PHP 中的变量用一个$后面跟变量名来表示。变量名是区分大小写的。规范参考PSR-1、PSR-1、PSR-12
和其他强类型语言不一致的是普通变量不需要预定义,当然预定义是一个好的习惯。
和大部分语言一致,可以是用 & 引用复制
<?php //定义变量 $a = ‘xxx’; //输出变量 echo $a;//xxx //引用赋值 $b = ‘123’; $c = &$b; var_dump($b === $c); // true?>
系统预定义变量
PHP 提供了一套附加的预定数组,这些数组变量包含了来自 web 服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效。
超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量
$_POST — HTTP POST 变量
$_FILES — HTTP 文件上传变量
$_REQUEST — HTTP Request 变量
$_SESSION — Session 变量
$_ENV — 环境变量
$_COOKIE — HTTP Cookies
$php_errormsg — 前一个错误信息
$http_response_header — HTTP 响应头
$argc — 传递给脚本的参数数目
$argv — 传递给脚本的参数数组
常量
可以使用 const 关键字或 define() 函数两种方法来定义一个常量。
常量和变量有如下不同:
常量前面没有美元符号($);
常量可以不用理会变量的作用域而在任何地方定义和访问;
常量一旦定义就不能被重新定义或者取消定义;
常量只能计算标量值或数组。
系统预定义变量
常用的有
说明常量PHP版本PHP_VERSION运行PHP的操作系统PHP_OS当前平台中对于换行符的定义PHP_EOL当前 PHP 版本支持的最大整型数字PHP_INT_MAX当前 PHP 版本支持的最小整型数字PHP_INT_MIN致命的运行时错误。E_ERROR运行时警告 (非致命错误)。仅给出提示信息E_WARNING编译时语法解析错误E_PARSE表示脚本遇到可能会表现为错误的情况E_NOTICE运行时通知。未来版本中可能无法正常工作的代码给出警告。E_DEPRECATEDE_STRICT 除外的所有错误和警告信息。E_ALL真TRUE假FALSE特殊的 null 值表示一个变量没有值NULL运算符
运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。常见的 ,-,*,/,等和其他语音基本一致。不过要注意优先级问题,优先级最直接的办法是在想要的运算表达式加上括号()
运算符可按照其能接受几个值来分组。
一元运算符只能接受一个值,例如 !(逻辑取反运算符)或 (递增运算符)。
二元运算符可接受两个值,例如熟悉的算术运算符 (加)和 -(减),大多数 PHP 运算符都是这种。
最后是唯一的三元运算符 ? :,可接受三个值;通常就简单称之为“三元运算符”(尽管称之为条件运算符可能更合适)。
PHP运算符文档如下:
运算符优先级
算术运算符
赋值运算符
位运算符
比较运算符
错误控制运算符
执行运算符
递增/递减运算符
逻辑运算符
字符串运算符
数组运算符
类型运算符
流程控制
这个基本与其他语言无异,php也支持
if
else
elseif/else if
流程控制的替代语法
while
do-while
for
foreach
break
continue
switch
match
declare
return
require
include
require_once
include_once
goto
函数
PHP函数无处不在,用function定义。任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和类 定义。
函数的参数
按值传递参数(默认)
通过引用传递参数
默认参数
可变长度参数列表,由 … 语法实现。
命名参数。
命名参数为PHP8新特性。命名参数允许根据参数名而不是参数位置向函数传参。这使得参数的含义自成体系,参数与顺序无关,并允许任意跳过默认值。
<?php// 使用顺序传递参数:array_fill(0, 100, 50);// 使用命名参数:array_fill(start_index: 0, count: 100, value: 50);?>
函数返回值
值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。返回使用 return 函数。如果省略了 return,则返回值为 null。
可变函数PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
<?phpclass Foo{ function Variable() { $name = ‘Bar’; $this->$name(); // This calls the Bar() method } function Bar() { echo “This is Bar”; }}$foo = new Foo();$funcname = “Variable”;$foo->$funcname(); // This calls $foo->Variable()?>
匿名函数匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。
<?php$greet = function($name){ printf(“Hello %s\r\n”, $name);};$greet(‘World’);$greet(‘PHP’);?>
箭头函数
箭头函数是 PHP 7.4 的新语法,是一种更简洁的 匿名函数 写法。匿名函数和箭头函数都是 Closure 类的实现。
箭头函数的基本语法为: fn (argument_list) => expr。
<?php$y = 1;$fn1 = fn($x) => $x $y;// 相当于 using $y by value:$fn2 = function ($x) use ($y) { return $x $y;};var_export($fn1(3));// 箭头函数自动捕捉变量的值,即使在嵌套的情况下$z = 1;$fn = fn($x) => fn($y) => $x * $y $z;// 输出 51var_export($fn(5)(10));?>