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

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高手!

Read more

万字讲解内网横向渗透vulnstack(七):红日靶场7实战全流程-CS上线全部Web1/Web2/PC1/PC2/DC

万字讲解内网横向渗透vulnstack(七):红日靶场7实战全流程-CS上线全部Web1/Web2/PC1/PC2/DC

目录 一、渗透环境 1、网络拓扑 2、角色表 3、网络搭建 (1)网络适配器配置 ①修改Web1的网卡配置 ②修改Web2的网卡配置 ③修改PC1的网卡配置 (2)配置网段 ①编辑虚拟网络编辑器 ② vmnet2网卡 ③ vmnet14网卡 二、信息搜集 1、探测存活主机 2、探测端口 三、Redis渗透 1、生成ssh私钥 2、查看生成公钥文件 3、写入Redis服务器 (1) 直接连接未授权Redis (2)写入SSH公钥获取服务器权限 4、ssh连接 5、查看Web1的Nginx配置 四、Laravel渗透(Web2) 1、发现Laravel 2、下载PoC 3、执行PoC上传木马

【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答

【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答

🌹欢迎来到《小5讲堂》🌹 🌹这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹 目录 * 前言 * 警告信息 * DeepSeek解答 * 问题原因 * 解决方案 * 关于 !important * 最终建议写法 * Vue小技巧 * Vue 3 实用代码小技巧 * 1. 组合式 API 技巧 * 2. 组件通信技巧 * 3. 模板技巧 * 4. 性能优化技巧 * 5. 组合式函数技巧 * 6. 生命周期技巧 * 7. 路由技巧 (Vue Router) * 8. 状态管理 (Pinia) 技巧 * 9. 调试技巧 * 文章推荐 前言 翻看了下上一篇写前端文章还是一年前,

Apache SeaTunnel Web 完整使用指南:可视化数据集成平台实战教程

Apache SeaTunnel Web 完整使用指南:可视化数据集成平台实战教程 【免费下载链接】seatunnel-webSeaTunnel is a distributed, high-performance data integration platform for the synchronization and transformation of massive data (offline & real-time). 项目地址: https://gitcode.com/gh_mirrors/se/seatunnel-web Apache SeaTunnel Web 是一款功能强大的分布式数据集成平台可视化管理系统,为大数据工程师提供直观的数据同步与转换任务管理体验。本文将从零开始,带你全面掌握这款可视化数据同步工具的使用方法。 🚀 快速部署与启动 环境准备与项目获取 首先确保系统中已安装 Java 8+、Maven 和 Node.js 等基础环境:

【通过 Vue 实例劫持突破 Web 编辑器的粘贴限制】

【通过 Vue 实例劫持突破 Web 编辑器的粘贴限制】

逆向实战:通过 Vue 实例劫持突破 Web 编辑器的粘贴限制 * 一、AI实践代码编辑器:Vue 实例劫持方案(含分析,可直接跳过至4.1查看方法) * 1. 现象与初探:被禁用的 Ctrl+V * 技术视角的初步审视 * 逆向的逻辑前提 * 2. 逆向分析:寻找逻辑的“命门” * 突破口:利用 I18N 国际化配置追踪 * 核心文件追踪:锁定 `answer-code-editor.js` * 代码逻辑解剖:拦截机制的实现 * 3. 攻克方案:Vue 实例的运行时劫持 * 第一步:获取 Vue 实例的“后门” * 第二步:函数劫持(Monkey Patch) * 第三步:状态机的一致性重构 * 第四步: