以下是 PHP 后端开发的语法基础:
一、变量与数据类型
1. 变量声明
- 使用 $ 符号后跟变量名进行声明,例如 $variable_name 。
- 变量命名遵循一定规则,通常以字母或下划线开头,后面可以跟字母、数字和下划线。
2. 数据类型
- 标量类型:
- integer (整数):例如 $num = 10; 。
- float (浮点数): $pi = 3.14; 。
- string (字符串):可以用单引号或双引号括起来,如 $str = 'Hello, PHP!'; 或 "This is a string." 。
- boolean (布尔值): true 或 false ,例如 $is_valid = true; 。
- 复合类型:
- array (数组):可以存储多个值,例如 $arr = [1, 2, 3]; 或 $arr = array('apple', 'banana', 'orange'); 。
- object (对象):通过类创建对象。
- 特殊类型:
- null :表示变量没有值。
二、常量
使用 define() 函数定义常量,例如:
define('PI', 3.14);
echo PI;
三、运算符
1. 算术运算符: + 、 - 、 * 、 / 、 % 等。
2. 比较运算符: == (等于)、 != (不等于)、 < 、 > 、 <= 、 >= 等。
3. 逻辑运算符: && (与)、 || (或)、 ! (非)。
4. 赋值运算符: = 、 += 、 -= 、 *= 、 /= 等。
四、控制结构
1. 条件语句
- if...else :
$num = 10;
if ($num > 5) {
echo "Number is greater than 5.";
} else {
echo "Number is less than or equal to 5.";
}
- switch :
$color = "red";
switch ($color) {
case "red":
echo "It's red.";
break;
case "blue":
echo "It's blue.";
break;
default:
echo "Unknown color.";
}
2. 循环语句
- for :
for ($i = 0; $i < 5; $i++) {
echo $i. " ";
}
- while :
$j = 0;
while ($j < 3) {
echo $j. " ";
$j++;
}
- do...while :
$k = 0;
do {
echo $k. " ";
$k++;
} while ($k < 2);
五、函数
1. 定义函数
- 使用 function 关键字定义函数,例如:
function add($a, $b) {
return $a + $b;
}
2. 调用函数
- 通过函数名和参数来调用函数,如 $result = add(3, 4); 。
六、数组操作
1. 数组定义
- 索引数组: $arr = [1, 2, 3]; 。
- 关联数组: $arr = ['name' => 'John', 'age' => 30]; 。
2. 数组遍历
- for 循环:
$arr = [1, 2, 3];
for ($i = 0; $i < count($arr); $i++) {
echo $arr[$i]. " ";
}
- foreach 循环:
$arr = ['name' => 'John', 'age' => 30];
foreach ($arr as $key => $value) {
echo $key. ": ". $value. " ";
}
七、字符串操作
1. 字符串连接
- 使用 . 进行字符串连接,例如 $str1 = "Hello"; $str2 = "World"; $result = $str1. " ". $str2; 。
2. 字符串函数
- strlen() :获取字符串长度。
- substr() :截取字符串。
- str_replace() :替换字符串中的某些字符。
八、文件操作
1. 读取文件
- file_get_contents() :读取整个文件内容。
- fopen() 、 fread() 、 fclose() :以传统方式打开、读取和关闭文件。
2. 写入文件
- file_put_contents() :写入内容到文件。
- fopen() 、 fwrite() 、 fclose() :以传统方式打开、写入和关闭文件。
以下是一个用 PHP 实现的三层架构示例:
一、数据库连接类(数据访问层)
创建一个数据库连接类 Database.php ,用于处理与数据库的交互。
class Database
{
private $connection;
public function __construct()
{
$host = "localhost";
$username = "your_username";
$password = "your_password";
$database = "your_database";
$this->connection = new mysqli($host, $username, $password, $database);
if ($this->connection->connect_error) {
die("Connection failed: ". $this->connection->connect_error);
}
}
public function query($sql)
{
return $this->connection->query($sql);
}
public function close()
{
$this->connection->close();
}
}
二、业务逻辑层(业务逻辑层)
创建一个业务逻辑类 UserService.php ,处理用户相关的业务逻辑。
class UserService
{
private $db;
public function __construct()
{
$this->db = new Database();
}
public function getUserById($userId)
{
$sql = "SELECT * FROM users WHERE id = $userId";
$result = $this->db->query($sql);
if ($result->num_rows > 0) {
return $result->fetch_assoc();
} else {
return null;
}
}
public function addUser($userData)
{
$sql = "INSERT INTO users (name, email) VALUES ('{$userData['name']}', '{$userData['email']}')";
return $this->db->query($sql);
}
}
三、控制器层(表示层)
创建一个控制器类 UserController.php ,接收用户请求并调用业务逻辑层处理。
class UserController
{
private $userService;
public function __construct()
{
$this->userService = new UserService();
}
public function getUser($userId)
{
$user = $this->userService->getUserById($userId);
if ($user) {
echo "User found: ". json_encode($user);
} else {
echo "User not found.";
}
}
public function createUser($userData)
{
if ($this->userService->addUser($userData)) {
echo "User created successfully.";
} else {
echo "Failed to create user.";
}
}
}
四、使用示例
以下是使用上述三层架构的示例:
// 创建用户控制器实例
$userController = new UserController();
// 获取用户
$userController->getUser(1);
// 创建用户
$newUser = [
'name' => 'New User',
'email' => 'newuser@example.com'
];
$userController->createUser($newUser);
// 关闭数据库连接
$userController->userService->db->close();
在这个示例中,数据库连接类负责与数据库交互,业务逻辑类处理具体的业务逻辑,控制器类接收用户请求并调用业务逻辑层进行处理。这种三层架构有助于提高代码的可维护性和可扩展性。