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

PHP 语言基础教程学习笔记

PHP 语言基础教程学习笔记

下面是一个全面的 PHP 教程,适合初学者和有一定编程经验的人士。PHP 是一种广泛用于 Web 开发的服务器端脚本语言。

1. 简介
  • 定义:PHP(Hypertext Preprocessor)是一种开源的服务器端脚本语言,主要用于 Web 开发。
  • 用途
    • 动态网页生成。
    • 数据库操作。
    • 会话管理。
    • 文件系统操作。
  • 特点
    • 易于学习和使用。
    • 跨平台支持(Windows、Linux、macOS)。
    • 丰富的扩展库。
    • 内置数据库支持(如 MySQL、PostgreSQL)。
2. 开始使用 PHP
安装 PHP
  • 在 Windows 上安装
    • 下载并安装 XAMPP 或 WAMP,它们都包含了 Apache 服务器、MySQL 数据库和 PHP。
  • 在 macOS 上安装
    • 使用 Homebrew 安装 PHP 和 Apache:
      brew install php
      brew install httpd
      
  • 在 Linux 上安装
    • 使用包管理器安装 PHP 和 Apache:
      sudo apt-get update
      sudo apt-get install apache2 php libapache2-mod-php
      
创建第一个 PHP 文件
  • 在你的 Web 服务器根目录下(例如 htdocs 目录),创建一个名为 index.php 的文件。
  • 编辑 index.php 文件,添加以下内容:
    <?php
    echo "Hello, World!";
    ?>
    
  • 启动你的 Web 服务器(如 XAMPP 控制面板中的 Apache)。
  • 打开浏览器,访问 http://localhost/,你应该会看到“Hello, World!”。
3. PHP 基础语法
注释
  • 单行注释使用 //#
  • 多行注释使用 /* ... */
// 这是单行注释
# 这也是单行注释
/*
这是多行注释
可以跨越多行
*/
变量
  • 变量以 $ 开头。
  • 变量类型是动态的,不需要显式声明类型。
$myString = "Hello, World!";
$myNumber = 42;
$myBoolean = true;
数据类型
  • 基本类型string, integer, float, boolean, null
  • 复合类型array, object
$string = "Hello, World!";
$integer = 42;
$float = 3.14;
$boolean = true;
$null = null;

$array = array("apple", "banana", "cherry");
$associativeArray = array("name" => "Alice", "age" => 30);

class Person {
    public $name;
    public $age;
}

$person = new Person();
$person->name = "Alice";
$person->age = 30;
字符串
  • 使用单引号或双引号定义字符串。
  • 双引号支持变量解析。
$name = "Alice";
echo 'Hello, $name!'; // 输出: Hello, $name!
echo "Hello, $name!"; // 输出: Hello, Alice!
数组
  • 使用 array() 函数或短数组语法 [] 定义数组。
  • 提供多种方法进行操作:count(), in_array(), array_push(), array_pop() 等。
$fruits = array("apple", "banana", "cherry");
$fruits = ["apple", "banana", "cherry"];

echo count($fruits); // 输出: 3
echo in_array("banana", $fruits); // 输出: 1 (true)
array_push($fruits, "date"); // 添加元素
print_r($fruits); // 输出: Array ( [0] => apple [1] => banana [2] => cherry [3] => date )
控制结构
条件语句
  • if...else 语句
$age = 18;

if ($age >= 18) {
    echo "You are an adult.";
} else {
    echo "You are a minor.";
}
  • switch 语句
$day = "Monday";

switch ($day) {
    case "Monday":
        echo "It's Monday";
        break;
    case "Tuesday":
    case "Wednesday":
        echo "It's midweek";
        break;
    default:
        echo "It's the weekend";
}
循环
  • for 循环
for ($i = 0; $i < 5; $i++) {
    echo $i . " "; // 输出: 0 1 2 3 4
}
  • while 循环
$i = 0;
while ($i < 5) {
    echo $i . " "; // 输出: 0 1 2 3 4
    $i++;
}
  • foreach 循环(用于遍历数组)
$fruits = ["apple", "banana", "cherry"];
foreach ($fruits as $fruit) {
    echo $fruit . " "; // 输出: apple banana cherry
}
4. 函数
定义函数
  • 使用 function 关键字定义函数。
function greet($name) {
    return "Hello, $name!";
}

echo greet("Alice"); // 输出: Hello, Alice!
默认参数
  • 函数可以有默认参数值。
function greet($name = "Guest") {
    return "Hello, $name!";
}

echo greet(); // 输出: Hello, Guest!
echo greet("Alice"); // 输出: Hello, Alice!
可变参数
  • 使用 func_get_args() 获取所有传递的参数。
function sum() {
    $args = func_get_args();
    $sum = 0;
    foreach ($args as $arg) {
        $sum += $arg;
    }
    return $sum;
}

echo sum(1, 2, 3, 4); // 输出: 10
5. 面向对象编程
类和对象
  • 使用 class 关键字定义类。
  • 使用 new 关键字创建对象。
class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function sayHello() {
        return "Hello, my name is " . $this->name;
    }
}

$alice = new Person("Alice", 30);
echo $alice->sayHello(); // 输出: Hello, my name is Alice
继承
  • 使用 extends 关键字实现继承。
class Student extends Person {
    public $grade;

    public function __construct($name, $age, $grade) {
        parent::__construct($name, $age);
        $this->grade = $grade;
    }

    public function sayHello() {
        return "Hello, I'm a student named " . $this->name;
    }
}

$bob = new Student("Bob", 20, "A");
echo $bob->sayHello(); // 输出: Hello, I'm a student named Bob
接口
  • 使用 interface 关键字定义接口。
interface Animal {
    public function makeSound();
}

class Dog implements Animal {
    public function makeSound() {
        return "Woof!";
    }
}

$dog = new Dog();
echo $dog->makeSound(); // 输出: Woof!
6. 文件系统操作
读取文件
  • 使用 file_get_contents 读取文件内容。
$content = file_get_contents("example.txt");
echo $content;
写入文件
  • 使用 file_put_contents 写入文件内容。
$file = "example.txt";
$content = "This is some text.";
file_put_contents($file, $content);
检查文件是否存在
  • 使用 file_exists 检查文件是否存在。
if (file_exists("example.txt")) {
    echo "File exists.";
} else {
    echo "File does not exist.";
}
7. 数据库操作
使用 MySQL
  • 使用 mysqliPDO 连接和操作 MySQL 数据库。
使用 mysqli
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 查询数据
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
使用 PDO
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 查询数据
    $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
    $stmt->execute();

    // 设置结果集为关联数组
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new RecursiveArrayIterator($stmt->fetchAll()) as $k=>$v) {
        echo "ID: " . $v['id'] . " - Name: " . $v['firstname'] . " " . $v['lastname'] . "<br/>";
    }
} catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;
8. 表单处理
获取表单数据
  • 使用 $_POST 获取 POST 方法提交的数据。
  • 使用 $_GET 获取 GET 方法提交的数据。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);

    echo "Name: " . $name . "<br>";
    echo "Email: " . $email . "<br>";
}
验证表单数据
  • 使用 filter_var 进行数据验证。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
    $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);

    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo "Name: " . $name . "<br>";
        echo "Email: " . $email . "<br>";
    } else {
        echo "Invalid email format";
    }
}
9. 会话管理
启动会话
  • 使用 session_start 启动会话。
session_start();

// 设置会话变量
$_SESSION['username'] = "Alice";

// 读取会话变量
echo "Welcome, " . $_SESSION['username'];
销毁会话
  • 使用 session_destroy 销毁会话。
session_start();

// 销毁会话
session_destroy();
echo "Session destroyed.";

总结

以上是一个全面的 PHP 入门教程,涵盖了从基础语法到文件系统操作、数据库操作、表单处理和会话管理的基本步骤。通过这些基础知识,你可以开始编写简单的 PHP 应用程序,并进一步探索更复杂的功能和创意。


http://www.kler.cn/news/329120.html

相关文章:

  • 基于单片机汽车尾灯控制系统
  • 字符串形式返回小数
  • 新高考的五大变化‌‌(AI生成)
  • PHP反序列化6(session反序列化)
  • 确保架构与业务一致性和合规性的成功转型之路:理论与实践的全面解读
  • VR视频怎样进行加密和一机一码的使用?--加密(一)
  • Spring Boot 进阶- Spring Boot日志框架介绍
  • Python面向对象基础:属性动态添加
  • Java 编码系列:并发集合详解与面试题解析
  • C语言_字符函数和字符串函数
  • 网络原理-TCP协议
  • 使用 Docker 制作 YashanDB 镜像:深度解析与实战指南
  • 优秀博客:小程序通信方法在 Vue 3 中的对应技术
  • 分页查询前后端代码
  • 怎么在FTP服务器上配置SSL/TLS?
  • Python知识点:如何使用Spark与PySpark进行分布式数据处理
  • Linux——K8s pod调度
  • 用 API 实现 AI 视频摘要:动手制作属于你的 AI 视频小助手
  • docker的harbor仓库登录问题
  • Linux设备上cifx板卡作为ethercat从站的调试记录
  • 【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-1
  • 计算机网络:计算机网络概述 —— 初识计算机网络
  • 盒子是什么? -- 第四课
  • Meta推出Llama 3.2 AI模型,支持多模态和边缘计算;OpenAI首席技术官穆拉蒂宣布离职
  • 数据链路层 ——MAC
  • 设计模式——责任链模式
  • 螺狮壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
  • AI 对话工具汇总
  • vulnhub-DarkHole 1靶机的测试报告
  • 想知道为什么有DICOM格式,YAML格式,XML格式,JSON格式吗?