Skip to content

安装

  • windows: 使用集成环境, 如: wampserverphpenv 等等
  • macOS: 直接 brew install php@8.1 或者其他版本
  • linux: 要么使用包管理器 sudo apt install php, 要么使用 docker, 或者编译安装(容易出错)

hello world

  1. 新建目录: mkdir php-demo
  2. 新建文件: touch index.php
  3. 输入如下代码:
  4. 启动服务器: php -S localhost:8000
  5. 打开浏览器验证, 访问: 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

预定义全局变量

[注意]

PHP 会预定义一些全局变量, 来获取/设置一些信息, 这些变量在任意一个脚本中都是可用的

变量用途典型内容
$_SERVER服务器和执行环境信息服务器软件、请求方法、脚本路径、客户端IP等
$_GETHTTP GET 请求参数URL查询字符串中的参数(?name=value)
$_POSTHTTP POST 请求参数表单通过POST方法提交的数据
$_REQUEST综合请求参数默认包含$_GET$_POST$_COOKIE的组合
$_SESSION会话数据存储跨页面请求保存的用户会话数据
$_COOKIEHTTP 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_VERSIONPHP版本号"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"

关键字 与 保留字

在官方文档上叫: 关键词解析器记号

在定义变量和常量, 应该避免使用这些关键字和保留字

变量的命名规范

  1. 必须以 $ 开头, 不能以数字开头, 可以以下划线开头
  2. 不能包含特殊字符, 如 $#@%
  3. 变量/常量名不应该是 关键字和保留字
  4. 大小写敏感
php
<?php

$abc = 1; // 可以的
$_abc = 1; // 可以的
$abc_123; // 可以的

// $123 = 1; // 会报错, 不能以 数字开头
// $abc_@ = 1; // 会报错, @ 会被当作错误抑制符
// $abc_% = 1; // 会报错, % 会被当作 取余运算
// $abc_$ = 1; // 会报错, $ 会被当作 变量开头
// $abc_# = 1; // 会报错, # 会注释后面的内容, 那么这行就没有 ; 结尾了

Released under the MIT License.