安装
- windows: 使用集成环境, 如: wampserver 和 phpenv 等等
- macOS: 直接
brew install php@8.1或者其他版本 - linux: 要么使用包管理器
sudo apt install php, 要么使用 docker, 或者编译安装(容易出错)
hello world
- 新建目录:
mkdir php-demo - 新建文件:
touch index.php - 输入如下代码:
- 启动服务器:
php -S localhost:8000 - 打开浏览器验证, 访问:
http://localhost:8000
php
<?php
/*
注意点:
0. 注意文件开头必须以 <?php 开始, 文件结尾的 ?> 是可选的
1. 每行代码必须以 ; 结尾, C-Like 语言的传统不能丢
2. echo 不是一个函数, 而是语言的关键字, 是语法结构
3. 虽然可以强行带上括号执行, 但是这样就会限制 echo 的参数必须只能有一个
3.1) echo "hello", "world"
3.2) echo("hello", "world") // 错误用法, 带上括号就只能有一个参数
*/
echo "hello world";
?>注释
与大多数 C-Like 语言一模一样
php
<?php
// 这是单行注释
# 这也是单行注释(历史包袱之一, 推荐统一使用 //)
/*
这是多行注释
这是多行注释
这是多行注释
*/变量与常量
php
<?php
// 变量: 定义变量必须以 $ 符号修饰变量名, 而且只能以
// 英文字母/下划线 开头, 不能以数字开头如 $123 不行
$num = 10;
// 输出变量的值
echo $num;
// 常量: 使用这两种方式都可以, 低版本请使用第二种方式
const IS_DEBUG_MODE = false;
define("DB_DSN", "sqlite:///mydb.db");
// 输出常量信息: 用 echo 无法输出
echo DB_DSN;
var_dump(IS_DEBUG_MODE);
// IS_DEBUG_MODE = true; // 修改常量, 会报错:
// Parse error: syntax error, unexpected token "=" in xxx/index.php- var_dump 函数: 输出变量的值及其数据类型
预定义全局变量
[注意]
PHP 会预定义一些全局变量, 来获取/设置一些信息, 这些变量在任意一个脚本中都是可用的
| 变量 | 用途 | 典型内容 |
|---|---|---|
$_SERVER | 服务器和执行环境信息 | 服务器软件、请求方法、脚本路径、客户端IP等 |
$_GET | HTTP GET 请求参数 | URL查询字符串中的参数(?name=value) |
$_POST | HTTP POST 请求参数 | 表单通过POST方法提交的数据 |
$_REQUEST | 综合请求参数 | 默认包含$_GET、$_POST和$_COOKIE的组合 |
$_SESSION | 会话数据存储 | 跨页面请求保存的用户会话数据 |
$_COOKIE | HTTP Cookies | 客户端发送的Cookie数据 |
$_FILES | 文件上传信息 | 通过HTTP POST上传的文件信息(名称、类型、大小、临时路径等) |
$_ENV | 环境变量 | 服务器环境变量(如PATH、HOME等) |
$GLOBALS | 全局变量引用 | 包含所有全局作用域中变量的数组 |
php
<?php
echo "<pre>";
// 获取当前运行脚本的 server 的一些信息
var_dump($_SERVER);
echo "</pre>";
// 为什么要输出: <pre></pre> 标签?
// 因为, 需要在 html 中查看效果, html 中的换行/空格等
// 空白字符默认会被浏览器忽略, 所以需要加 <pre></pre> 方便查看效果预定义全局常量
[注意]
常量与变量不同, 常量一旦定义就不能更改, 且不需要使用$符号前缀, 这些常量也是在整个脚本中都可直接使用, 不需要特殊作用域声明
| 常量 | 用途 | 示例值 |
|---|---|---|
PHP_VERSION | PHP版本号 | "8.2.0" |
PHP_OS | 操作系统 | "Linux", "WINNT", "Darwin" |
PHP_EOL | 换行符 | "\n" (Unix), "\r\n" (Windows) |
DIRECTORY_SEPARATOR | 目录分隔符 | "/" (Unix), "\" (Windows) |
PATH_SEPARATOR | 路径分隔符 | ":" (Unix), ";" (Windows) |
__FILE__ | 当前文件完整路径 | "/var/www/index.php" |
__LINE__ | 当前行号 | 42 |
__DIR__ | 当前目录路径 | "/var/www" |
PHP_INT_MAX | 最大整数值 | 9223372036854775807 |
PHP_INT_SIZE | 整数大小(字节) | 8 |
M_PI | 圆周率 | 3.14159265358979323846 |
注意:常量与变量不同,常量一旦定义就不能更改,且不需要使用$符号前缀。这些常量在整个脚本中都可直接使用,不需要特殊作用域声明。
php
<?php
var_dump(__DIR__); // string(28) "/Users/secret/codes/php-demo"关键字 与 保留字
在定义变量和常量, 应该避免使用这些关键字和保留字
变量的命名规范
- 必须以 $ 开头, 不能以数字开头, 可以以下划线开头
- 不能包含特殊字符, 如
$#@%等 - 变量/常量名不应该是 关键字和保留字
- 大小写敏感
php
<?php
$abc = 1; // 可以的
$_abc = 1; // 可以的
$abc_123; // 可以的
// $123 = 1; // 会报错, 不能以 数字开头
// $abc_@ = 1; // 会报错, @ 会被当作错误抑制符
// $abc_% = 1; // 会报错, % 会被当作 取余运算
// $abc_$ = 1; // 会报错, $ 会被当作 变量开头
// $abc_# = 1; // 会报错, # 会注释后面的内容, 那么这行就没有 ; 结尾了