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
- 使用 Homebrew 安装 PHP 和 Apache:
- 在 Linux 上安装:
- 使用包管理器安装 PHP 和 Apache:
sudo apt-get update sudo apt-get install apache2 php libapache2-mod-php
- 使用包管理器安装 PHP 和 Apache:
创建第一个 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
- 使用
mysqli
或PDO
连接和操作 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 应用程序,并进一步探索更复杂的功能和创意。