PHP基础核心知识
1. 基本语法
<?php // 起始标签
echo "Hello World!"; // 输出语句
$variable = "值"; // 变量声明
?> <!-- 结束标签 -->
2. 数据类型
类型 | 示例 | 说明 |
---|---|---|
String | $str = "PHP" | 字符串 |
Integer | $num = 42 | 整型 |
Float | $pi = 3.14 | 浮点型 |
Boolean | $flag = true | 布尔值 |
Array | $arr = [1, 2] | 数组 |
Object | $obj = new Class() | 对象 |
NULL | $x = null | 空值 |
3. 流程控制
// 条件语句
if ($age > 18) {
echo "成年人";
} elseif ($age > 13) {
echo "青少年";
} else {
echo "儿童";
}
// 循环结构
for ($i = 0; $i < 5; $i++) {
echo $i;
}
foreach ($colors as $color) {
echo $color;
}
4. 函数定义
function sum(int $a, int $b): int {
return $a + $b;
}
echo sum(5, 3); // 输出8
5. 数组操作
// 索引数组
$fruits = ["Apple", "Banana"];
// 关联数组
$person = [
"name" => "John",
"age" => 30
];
// 多维数组
$matrix = [
[1, 2],
[3, 4]
];
6. 超全局变量
变量 | 描述 |
---|---|
$_GET | 获取URL参数 |
$_POST | 接收表单数据 |
$_SESSION | 会话变量 |
$_COOKIE | 客户端Cookies |
$_SERVER | 服务器信息 |
$_FILES | 文件上传数据 |
7. 表单处理
<!-- HTML表单 -->
<form method="POST" action="process.php">
<input type="text" name="username">
<input type="submit">
</form>
// process.php
$name = $_POST['username'];
echo "欢迎, $name!";
8. 文件操作
// 写入文件
file_put_contents("log.txt", "记录内容");
// 读取文件
$content = file_get_contents("log.txt");
// 文件上传
move_uploaded_file($_FILES['file']['tmp_name'], "uploads/".$_FILES['file']['name']);
9. 数据库连接 (MySQLi)
$conn = new mysqli("localhost", "user", "pass", "db");
// 查询数据
$result = $conn->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
echo $row['username'];
}
// 插入数据
$conn->query("INSERT INTO users (email) VALUES ('test@example.com')");
$conn->close(); // 关闭连接
10. 错误处理
try {
// 可能出错的代码
$file = fopen("missing.txt", "r");
} catch (Exception $e) {
// 异常处理
echo "错误: " . $e->getMessage();
}
// 自定义错误处理
set_error_handler(function($errno, $errstr) {
echo "<b>错误:</b> [$errno] $errstr";
});
11. 面向对象编程
class Car {
// 属性
public $model;
// 构造函数
public function __construct($model) {
$this->model = $model;
}
// 方法
public function getModel(): string {
return "车型: " . $this->model;
}
}
// 实例化对象
$myCar = new Car("Tesla");
echo $myCar->getModel();
最佳实践建议:
- 始终对用户输入进行验证和过滤
- 使用预处理语句防止SQL注入
- 错误报告设置(开发环境):
ini_set('display_errors', 1); error_reporting(E_ALL);
- 生产环境关闭错误显示
- 使用Composer管理依赖
- 遵循PSR编码规范
学习资源:
掌握这些基础后,可进一步学习:
- 命名空间(Namespace)
- 自动加载(Autoloading)
- 依赖注入
- RESTful API开发
- 主流框架(Laravel/Symfony)
PHP基础核心知识
1. 基本语法
<?php // 起始标签
echo "Hello World!"; // 输出语句
$variable = "值"; // 变量声明
?> <!-- 结束标签 -->
2. 数据类型
类型 | 示例 | 说明 |
---|---|---|
String | $str = "PHP" | 字符串 |
Integer | $num = 42 | 整型 |
Float | $pi = 3.14 | 浮点型 |
Boolean | $flag = true | 布尔值 |
Array | $arr = [1, 2] | 数组 |
Object | $obj = new Class() | 对象 |
NULL | $x = null | 空值 |
3. 流程控制
// 条件语句
if ($age > 18) {
echo "成年人";
} elseif ($age > 13) {
echo "青少年";
} else {
echo "儿童";
}
// 循环结构
for ($i = 0; $i < 5; $i++) {
echo $i;
}
foreach ($colors as $color) {
echo $color;
}
4. 函数定义
function sum(int $a, int $b): int {
return $a + $b;
}
echo sum(5, 3); // 输出8
5. 数组操作
// 索引数组
$fruits = ["Apple", "Banana"];
// 关联数组
$person = [
"name" => "John",
"age" => 30
];
// 多维数组
$matrix = [
[1, 2],
[3, 4]
];
6. 超全局变量
变量 | 描述 |
---|---|
$_GET | 获取URL参数 |
$_POST | 接收表单数据 |
$_SESSION | 会话变量 |
$_COOKIE | 客户端Cookies |
$_SERVER | 服务器信息 |
$_FILES | 文件上传数据 |
7. 表单处理
<!-- HTML表单 -->
<form method="POST" action="process.php">
<input type="text" name="username">
<input type="submit">
</form>
// process.php
$name = $_POST['username'];
echo "欢迎, $name!";
8. 文件操作
// 写入文件
file_put_contents("log.txt", "记录内容");
// 读取文件
$content = file_get_contents("log.txt");
// 文件上传
move_uploaded_file($_FILES['file']['tmp_name'], "uploads/".$_FILES['file']['name']);
9. 数据库连接 (MySQLi)
$conn = new mysqli("localhost", "user", "pass", "db");
// 查询数据
$result = $conn->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
echo $row['username'];
}
// 插入数据
$conn->query("INSERT INTO users (email) VALUES ('test@example.com')");
$conn->close(); // 关闭连接
10. 错误处理
try {
// 可能出错的代码
$file = fopen("missing.txt", "r");
} catch (Exception $e) {
// 异常处理
echo "错误: " . $e->getMessage();
}
// 自定义错误处理
set_error_handler(function($errno, $errstr) {
echo "<b>错误:</b> [$errno] $errstr";
});
11. 面向对象编程
class Car {
// 属性
public $model;
// 构造函数
public function __construct($model) {
$this->model = $model;
}
// 方法
public function getModel(): string {
return "车型: " . $this->model;
}
}
// 实例化对象
$myCar = new Car("Tesla");
echo $myCar->getModel();
12. 面向对象编程(OOP)深入
类与对象的高级特性:
// 抽象类示例
abstract class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
abstract public function makeSound();
}
// 接口示例
interface Flyable {
public function fly();
}
// 继承与实现
class Bird extends Animal implements Flyable {
public function makeSound() {
return "Chirp!";
}
public function fly() {
return $this->name . " is flying!";
}
}
// 静态方法与属性
class Counter {
public static $count = 0;
public static function increment() {
self::$count++;
}
}
// 使用
$parrot = new Bird("Polly");
echo $parrot->fly(); // Polly is flying!
Counter::increment();
魔术方法应用:
class Product {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return $this->data[$name] ?? null;
}
public function __toString() {
return json_encode($this->data);
}
}
$product = new Product();
$product->name = "Laptop";
echo $product; // {"name":"Laptop"}
13. 命名空间与自动加载
现代代码组织方式:
// 文件: src/Utils/Validator.php
namespace App\Utils;
class Validator {
public static function email($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
}
// 文件: index.php
require 'vendor/autoload.php'; // Composer自动加载
use App\Utils\Validator;
if (Validator::email('test@example.com')) {
echo "Valid email";
}
14. 错误与异常处理
分层错误处理:
// 自定义异常类
class DatabaseException extends \Exception {
public function logError() {
error_log("DB Error: {$this->getMessage()}");
}
}
try {
// 数据库操作
if (!$db->connect()) {
throw new DatabaseException("Connection failed");
}
} catch (DatabaseException $e) {
$e->logError();
echo "Database error occurred";
} catch (\Exception $e) {
echo "General error: " . $e->getMessage();
} finally {
echo "Operation attempted";
}
15. 现代数据库操作(PDO)
安全数据库交互:
// 创建连接
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', 'pass', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// 预处理语句防止SQL注入
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
// 事务处理
try {
$pdo->beginTransaction();
$pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
$pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
echo "Transaction failed: " . $e->getMessage();
}
16. 文件与流处理
高效文件操作:
// 大文件读取(迭代器)
function readLargeFile($file) {
$handle = fopen($file, 'r');
while (!feof($handle)) {
yield trim(fgets($handle));
}
fclose($handle);
}
foreach (readLargeFile('huge.log') as $line) {
// 处理每行
}
// 文件上传处理
$uploadDir = __DIR__ . '/uploads/';
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$filename = uniqid() . '_' . basename($_FILES['file']['name']);
$dest = $uploadDir . $filename;
if (move_uploaded_file($_FILES['file']['tmp_name'], $dest)) {
echo "File uploaded successfully";
}
}
17. 安全编程实践
关键安全措施:
// 1. 输入验证
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT, [
'options' => ['min_range' => 18, 'max_range' => 65]
]);
// 2. 输出转义
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
// 3. 密码处理
$hash = password_hash($password, PASSWORD_ARGON2ID);
if (password_verify($inputPassword, $hash)) {
// 登录成功
}
// 4. CSRF防护
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
die("Invalid CSRF token");
}
}
18. PHP与Web API开发
RESTful API示例:
header('Content-Type: application/json');
$response = [
'status' => 'error',
'message' => ''
];
try {
$method = $_SERVER['REQUEST_METHOD'];
$resource = explode('/', trim($_SERVER['PATH_INFO'], '/'));
switch ($method) {
case 'GET':
// 获取资源逻辑
$response['status'] = 'success';
$response['data'] = ['id' => 1, 'name' => 'Example'];
break;
case 'POST':
// 创建资源逻辑
$input = json_decode(file_get_contents('php://input'), true);
// 验证和保存数据
$response['status'] = 'success';
$response['message'] = 'Resource created';
http_response_code(201);
break;
default:
http_response_code(405);
$response['message'] = 'Method not allowed';
}
} catch (Exception $e) {
http_response_code(500);
$response['message'] = $e->getMessage();
}
echo json_encode($response);
19. 性能优化技巧
高效PHP编程:
// 1. 使用内置函数
$array = [1, 2, 3];
$sum = array_sum($array); // 比循环更快
// 2. 避免在循环中重复计算
$count = count($array);
for ($i = 0; $i < $count; $i++) { ... }
// 3. 使用输出缓冲
ob_start();
// 复杂输出操作...
$output = ob_get_clean();
// 4. 选择高效数据结构
$set = new SplObjectStorage(); // 优于数组用于对象集合
// 5. 启用OPcache (php.ini)
opcache.enable=1
opcache.memory_consumption=128
20. Composer包管理
现代PHP开发核心:
// composer.json 示例
{
"name": "my/app",
"require": {
"monolog/monolog": "^2.0",
"guzzlehttp/guzzle": "^7.0"
},
"autoload": {
"psr-4": {
"MyApp\\": "src/"
}
},
"scripts": {
"test": "phpunit"
}
}
常用命令:
composer install # 安装依赖
composer update # 更新依赖
composer dump-autoload # 更新自动加载
composer require package # 添加新包
21. 测试驱动开发
PHPUnit示例:
// tests/CalculatorTest.php
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase {
public function testAdd() {
$calc = new Calculator();
$this->assertEquals(5, $calc->add(2, 3));
}
}
// src/Calculator.php
class Calculator {
public function add($a, $b) {
return $a + $b;
}
}
运行测试:
./vendor/bin/phpunit tests
22. 异步编程(ReactPHP)
非阻塞I/O示例:
require 'vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
// 定时器
$loop->addPeriodicTimer(1, function () {
echo "Tick\n";
});
// HTTP服务器
$server = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
return new React\Http\Message\Response(
200,
['Content-Type' => 'text/plain'],
"Hello World!\n"
);
});
$socket = new React\Socket\SocketServer('127.0.0.1:8080', [], $loop);
$server->listen($socket);
echo "Server running at http://127.0.0.1:8080\n";
$loop->run();
23. 扩展PHP功能
自定义扩展开发:
// hello.c
#include "php.h"
PHP_FUNCTION(hello_world) {
php_printf("Hello World!\n");
}
static zend_function_entry hello_functions[] = {
PHP_FE(hello_world, NULL)
PHP_FE_END
};
zend_module_entry hello_module_entry = {
STANDARD_MODULE_HEADER,
"hello",
hello_functions,
NULL, NULL, NULL, NULL, NULL,
"1.0.0",
STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(hello)
编译安装后:
hello_world(); // 输出 "Hello World!"
最佳实践建议:
- 始终对用户输入进行验证和过滤
- 使用预处理语句防止SQL注入
- 错误报告设置(开发环境):
ini_set('display_errors', 1); error_reporting(E_ALL);
- 生产环境关闭错误显示
- 使用Composer管理依赖
- 遵循PSR编码规范
进阶学习路径:
- 设计模式:单例、工厂、观察者、策略等
- 框架学习:Laravel、Symfony内部机制
- 性能分析:Xdebug、Blackfire使用
- 微服务架构:Swoole、RoadRunner
- 领域驱动设计:DDD在PHP中的实践
- PHP内部机制:Zend引擎、OPcache原理
学习资源:
掌握这些基础后,可进一步学习:
- 命名空间(Namespace)
- 自动加载(Autoloading)
- 依赖注入
- RESTful API开发
- 主流框架(Laravel/Symfony)
掌握这些知识后,你将能够构建高性能、可维护的企业级PHP应用,并深入理解语言内部机制。