当前位置: 首页 > java >正文

php学习笔记(全面且适合新手)

以下是专为 PHP 7.4 初学者设计的全面学习文档,涵盖基础语法、细节语法和进阶语法,结合 PHP 7.4 新特性与实战案例,帮助系统掌握 PHP 开发:

为什么特地做7.4的笔记而不做8的?因为公司用的7.4,哈哈

一、基础语法:构建 PHP 编程基石

1. 变量与数据类型
  • 变量声明:使用 $ 符号声明,无需提前指定类型。
$name = "John"; // 字符串
$age = 30;      // 整数
$salary = 5000.5; // 浮点数
  • 数据类型:标量(int, float, string, bool)、复合(array, object)、特殊(resource, NULL)。

  • 类型强制转换

$num = (int) "123"; // 转换为整数
$str = (string) 456; // 转换为字符串
2. 运算符与表达式
  • 算术运算符:+, -, *, /, %。

  • 比较运算符:==, ===, >, <, <=, >=。

  • 逻辑运算符:&&, ||, !。

  • 三元运算符

$status = $isActive ? "Active" : "Inactive";
3. 流程控制
  • 条件语句
if ($age >= 18) {echo "成年人";
} elseif ($age >= 13) {echo "青少年";
} else {echo "儿童";
}
// for 循环
for ($i = 0; $i < 5; $i++) {echo $i;
}// while 循环
$j = 0;
while ($j < 5) {echo $j++;
}
4. 函数基础
  • 自定义函数
function add($a, $b) {return $a + $b;
}
echo add(3, 5); // 输出 8
$greet = function($name) {echo "Hello, $name!";
};
$greet("Alice"); // 输出 Hello, Alice!

二、细节语法:深入 PHP 7.4 特性

1. 类型声明(PHP 7.4 增强)
  • 标量类型声明
declare(strict_types=1); // 开启严格模式function multiply(int $a, int $b): int {return $a * $b;
}
echo multiply(3, "4"); // 严格模式下报错
  • 联合类型(PHP 7.4 新增):
function formatValue(int|string $value): string {return "Value: " . $value;
}
echo formatValue(123); // 输出 Value: 123
2. 箭头函数(PHP 7.4 新增)
  • 简洁语法
$numbers = [1, 2, 3, 4];
$squared = array_map(fn($n) => $n ** 2, $numbers);
print_r($squared); // 输出 Array([0] => 1, [1] =>4, [2] =>9, [3] =>16)
  • 自动捕获父作用域变量
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3]);
print_r($nums); // 输出 Array([0] =>10, [1] =>20, [2] =>30)
3. 类型属性(PHP 7.4 新增)
  • 类属性类型声明
class User {public int $id;public string $name;protected ?string $email = null;
}$user = new User();
$user->id = 1;       // 合法
$user->name = "Bob"; // 合法
$user->email = "bob@example.com"; // 合法
$user->email = null; // 合法(允许 null)
4. 空合并运算符(??)与空合并赋值运算符(??=)
  • 空值处理
$username = $_GET['user'] ?? "Guest"; // 若 $_GET['user'] 不存在,默认 "Guest"
$this->data['comments'] ??= []; // 若 $this->data['comments'] 为 null,赋值为空数组

三、进阶语法:提升代码质量与效率

1. 面向对象编程(OOP)
  • 类与对象
class Car {public string $model;private int $year;public function __construct(string $model, int $year) {$this->model = $model;$this->year = $year;}public function getInfo(): string {return "{$this->model} ({$this->year})";}
}$car = new Car("Toyota", 2020);
echo $car->getInfo(); // 输出 Toyota (2020)
  • 继承与多态
class ElectricCar extends Car {public function charge(): void {echo "Charging...";}
}
2. 命名空间与自动加载
  • 命名空间声明
namespace App\Controllers;class HomeController {// 控制器逻辑
}
  • 自动加载(Composer)
{"autoload": {"psr-4": {"App\\": "src/"}}
}
3. 异常处理
  • 异常捕获与抛出
try {if (!file_exists("data.txt")) {throw new Exception("文件不存在");}
} catch (Exception $e) {echo "错误:" . $e->getMessage();
}
4. 文件操作与安全性
  • 文件读写
// 读取文件
$content = file_get_contents("data.txt");// 写入文件
file_put_contents("log.txt", "日志信息\n", FILE_APPEND);
  • 安全防护
// 输入过滤
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);// 输出转义
echo htmlspecialchars($username);
5. 数据库操作(MySQLi 预处理语句)
  • 连接数据库
$mysqli = new mysqli("localhost", "user", "pass", "db");
if ($mysqli->connect_error) {die("连接失败:" . $mysqli->connect_error);
}
  • 预处理语句
$stmt = $mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$name = "Alice";
$email = "alice@example.com";
$stmt->execute();

四、PHP 7.4 新特性深度解析

1. 箭头函数的应用场景
  • 数组处理
$users = [["name" => "John", "age" => 30],["name" => "Jane", "age" => 25]
];$names = array_map(fn($user) => $user['name'], $users);
print_r($names); // 输出 Array([0] => John, [1] => Jane)
2. 类型属性的注意事项
  • 默认值设置
class Product {public float $price = 0.0; // 非空类型需设置默认值public ?string $description = null; // 允许 null
}
3. 协变返回与逆变参数(PHP 7.4 新增)
  • 协变返回
interface Animal {public function makeSound(): string;
}class Dog implements Animal {public function makeSound(): string {return "Woof!";}
}class Cat implements Animal {public function makeSound(): string {return "Meow!";}
}function getAnimal(): Animal {return new Dog(); // 协变返回更具体的类型
}

五、学习资源推荐

  1. 官方文档:PHP 官方手册

  2. 在线教程:PHP 中文网、W3Schools

  3. 书籍:《PHP 和 MySQL Web 开发》、《PHP: The Right Way》

  4. 实战项目:GitHub PHP 项目

六、学习路线建议

  1. 阶段一(基础):掌握变量、运算符、流程控制、函数。

  2. 阶段二(进阶):学习面向对象、命名空间、异常处理。

  3. 阶段三(实战):结合数据库操作、文件处理、安全性开发完整项目。

  4. 阶段四(优化):深入 PHP 7.4 新特性,提升代码效率与可维护性。

http://www.xdnf.cn/news/3005.html

相关文章:

  • Android的Imageview的src属性,如果设置width和height,但是图片本身很小,那么图片会自动缩放到Imageview一样的大小吗
  • GEE进行Theil-Sen Median斜率估计和Mann-Kendall检验
  • RK3568下背光控制 软件与调试技巧
  • 使用 TypeScript 开发并发布一个 npm 包(完整指南)
  • 小刚说C语言刷题——1032分糖果
  • 守护天空安全的科技利剑鼎讯信通(ACNN)的创新实践
  • Flume启动报错
  • MIT6.S081 - Lab11 networking(网络栈)
  • 阿里千问Qwen3技术解析与部署指南 :混合推理架构突破性优势与对DeepSeek R1的全面超越
  • Scrapy框架之CrawlSpider爬虫 实战 详解
  • 23种设计模式-行为型模式之解释器模式(Java版本)
  • Leetcode 3529. Count Cells in Overlapping Horizontal and Vertical Substrings
  • 关于汇编语言与程序设计——子程序设计
  • Android WIFI体系
  • Vue基础(一) 基础用法
  • 【Delphi】简化数据库读写(Helper)
  • Canvas基础篇:绘制矩形
  • 废品回收小程序:全链路数字化解决方案,赋能绿色未来
  • SDC命令详解:使用get_nets命令进行查询
  • windows如何使用cmd命令翻转屏幕
  • 多源数据整合与数据虚拟化:构建灵活、高效的数据架构
  • RPG2.设置角色摄像机
  • js day9
  • 按键精灵安卓ios辅助工具脚本:实用的文件插件(lua开源)
  • 解决ktransformers v0.3 docker镜像中 operator torchvision::nms does not exist 问题
  • Redis入门到实战——基础篇
  • JavaSE第12篇:接口interface
  • Shopify网上商店GraphQL Admin接口查询实战
  • keep-alive具体使用方法
  • 我心中的现代前端大厦