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

PHP函数、面向对象、内置函数库与Web交互(第二篇)

前言

在掌握了PHP基础语法、流程控制与数组之后,我们进入实战篇。本篇将系统讲解PHP开发的四大核心技能:函数、面向对象编程、常用内置函数库Web交互。这些是构建动态网站的关键,学完你就能独立开发功能完整的Web应用。


目录

前言

一、 函数:代码复用的核心

1.1 定义与调用

1.2 参数传递

1.3 返回值

二、 面向对象编程(OOP)

2.1 类与对象

2.2 构造函数

2.3 访问修饰符

三、 内置函数库

3.1 字符串函数

3.2 数组函数

3.3 数学函数

3.4 日期时间函数

四、 Web交互

4.1 GET方式接收数据

4.2 POST方式接收数据

4.3 文件上传

4.4 Session与Cookie

五、 文件管理

5.1 文件读写

5.2 文件信息

5.3 目录操作

结尾


一、 函数:代码复用的核心

1.1 定义与调用

语法function 函数名(参数){ 函数体; return 返回值; }

function add($a, $b) { return $a + $b; } echo add(3, 5); // 输出:8

1.2 参数传递

  • 按值传递:默认方式,函数内修改不影响外部变量

  • 按引用传递:参数前加&,函数内修改会影响外部变量

function addOne(&$num) { $num += 1; } $x = 5; addOne($x); echo $x; // 输出:6

1.3 返回值

  • 使用return返回结果

  • 执行到return时函数终止

function isAdult($age) { if ($age >= 18) { return true; } return false; }

二、 面向对象编程(OOP)

2.1 类与对象

是对象的蓝图,对象是类的实例。

class Student { // 属性 public $name; public $age; // 方法 public function introduce() { echo "我叫{$this->name},{$this->age}岁"; } } $stu = new Student(); $stu->name = "张三"; $stu->age = 20; $stu->introduce();

2.2 构造函数

对象创建时自动执行,用于初始化。

class Person { public function __construct($name) { echo "创建了:$name"; } } $p = new Person("李四"); // 自动执行

2.3 访问修饰符

  • public:公有的,任何地方可访问

  • private:私有的,仅类内部可访问

  • protected:受保护的,类内部和子类可访问


三、 内置函数库

3.1 字符串函数

$str = "Hello World"; echo strlen($str); // 长度:11 echo strpos($str, "World"); // 查找位置:6 echo str_replace("World", "PHP", $str); // 替换 $arr = explode(" ", $str); // 分割为数组 echo implode("-", $arr); // 数组连接为字符串

3.2 数组函数

$arr = [3, 1, 4, 2]; sort($arr); // 排序:[1,2,3,4] array_push($arr, 5); // 末尾添加 array_pop($arr); // 末尾移除 echo in_array(3, $arr); // 检查是否存在 echo count($arr); // 元素个数

3.3 数学函数

echo abs(-5.5); // 绝对值:5.5 echo ceil(4.3); // 向上取整:5 echo floor(4.7); // 向下取整:4 echo rand(1, 100); // 1-100随机数 echo max(1,5,3); // 最大值:5

3.4 日期时间函数

date_default_timezone_set('Asia/Shanghai'); // 设置时区 echo date('Y-m-d H:i:s'); // 当前时间:2026-01-15 14:30:00 echo time(); // 当前时间戳 echo strtotime("next Monday"); // 下周一时间戳

四、 Web交互

4.1 GET方式接收数据

数据通过URL传递,用$_GET接收。

<!-- 表单 --> <form action="process.php" method="get"> <input type="text" name="username"> <input type="submit" value="提交"> </form> <!-- URL:process.php?username=输入的值 -->
// process.php $name = $_GET['username'] ?? '访客'; echo "你好," . htmlspecialchars($name);

4.2 POST方式接收数据

数据在请求体中,用$_POST接收,更安全。

<form action="login.php" method="post"> 用户名:<input type="text" name="user"> 密码:<input type="password" name="pwd"> <input type="submit" value="登录"> </form>
// login.php $user = $_POST['user'] ?? ''; $pwd = $_POST['pwd'] ?? ''; if($user && $pwd) { // 处理登录逻辑 }

4.3 文件上传

表单需设置enctype="multipart/form-data"

if($_FILES['file']['error'] == 0) { $tmp_name = $_FILES['file']['tmp_name']; $new_name = "uploads/" . $_FILES['file']['name']; move_uploaded_file($tmp_name, $new_name); echo "上传成功"; }

4.4 Session与Cookie

Session:服务器端存储

session_start(); $_SESSION['user'] = '张三'; // 设置 echo $_SESSION['user']; // 读取 session_destroy(); // 销毁

Cookie:客户端存储

setcookie("user", "李四", time()+3600); // 设置,1小时过期 echo $_COOKIE['user']; // 读取 setcookie("user", "", time()-3600); // 删除

五、 文件管理

5.1 文件读写

// 写入文件 file_put_contents("test.txt", "Hello PHP"); // 读取文件 $content = file_get_contents("test.txt"); echo $content; // 追加写入 file_put_contents("log.txt", "新日志\n", FILE_APPEND);

5.2 文件信息

$file = "test.txt"; if(file_exists($file)) { echo "大小:" . filesize($file) . "字节"; echo "修改时间:" . date("Y-m-d", filemtime($file)); }

5.3 目录操作

mkdir("new_folder"); // 创建目录 rmdir("empty_folder"); // 删除空目录 $files = scandir("."); // 列出目录内容 foreach($files as $file) { if($file != "." && $file != "..") { echo $file . "<br>"; } }

结尾

至此,PHP的核心实战技能已全部讲解完毕。从函数封装、面向对象,到内置函数库的使用,再到Web交互和文件管理,这些都是开发动态网站的必备知识。

建议立即动手实践:尝试搭建一个留言板或简易博客,综合运用这些技术。遇到问题多查阅PHP官方文档(下图),这是最好的学习资料。编程之路,贵在坚持。祝你编码愉快,早日成为PHP高手!

http://www.jsqmd.com/news/509552/

相关文章:

  • Qwen3-TTS-Tokenizer-12Hz效果展示:不同方言(粤语/四川话)token重建准确率对比
  • OpenClaw旅行规划:Qwen3-32B自动生成行程安排
  • GitHub开源项目日报 · 2026年3月19日 · AI编程工具与机器人仿真受关注
  • Unity引擎架构:看不见的智慧城市
  • 车载嵌入式显示驱动框架DOS技术解析
  • Comsol新手必看:TPMS_Diamond多孔结构吸声仿真全流程解析(附模型文件)
  • 保姆级教程十四:ZYNQ变身边缘AI相机!手把手教你搭建Web视频流(手机浏览器看FPGA实时画面)
  • Chinese-Word-Vectors:中文NLP的预训练词向量解决方案
  • 自动驾驶开发者必看:BDD100K vs Nuscenes数据集对比与选型指南
  • Kotaemon效果实测:用它搭建的文档问答助手有多智能?
  • 实时口罩检测-通用版:基于CNN的口罩识别效果展示与性能对比
  • 终极指南:如何用Blender创建惊艳的3D分子模型
  • ChatGLM-6B行业解决方案:银行理财问答机器人构建
  • Swin2SR在社交媒体中的应用:用户生成内容质量提升
  • 终极NGA论坛优化指南:5步打造你的专属高效摸鱼神器
  • 基于REX-UniNLU的智能代码搜索:GitHub仓库分析
  • DiffAttack实战:如何用Stable Diffusion生成无法察觉的对抗样本(附完整代码)
  • 企业级分布式系统运维全栈指南
  • Pixel Dimension Fissioner开源镜像部署:免环境配置的16-bit冒险工坊
  • OpenClaw健康监测:Qwen3-32B分析智能手表数据
  • Mos:重新定义macOS鼠标滚动体验的效率工具
  • CoPaw辅助法律科技:合同条款审查与法律文书摘要生成
  • Phi-4-reasoning-vision-15B零基础上手:从打开网页到产出专业分析报告
  • c001apk现代化Android应用架构深度解析:纯净版酷安客户端完整实现
  • NavMeshPlus:探索Unity 2D智能寻路技术的实战案例
  • FlowState Lab异常检测应用:从系统日志中智能发现故障线索
  • 使用StructBERT分析GitHub项目评论情感倾向
  • [COI 2007] Patrik 音乐会的等待(洛谷-P1823)
  • 基于MATLAB/Simulink的UPFC仿真探索
  • 基于Doris构建实时数仓:架构设计与最佳实践