徐锦洪 发表于 2025-1-13 07:20:50

20道PHP常见面试题

以下是20道常见的PHP面试题及其答案,涵盖底子知识、面向对象、数据库、会话管理等内容:
1. PHP 的重要特点是什么?

答案:
PHP 是一种服务器端脚本语言,重要特点有:


[*]嵌入 HTML,开辟简单
[*]跨平台支持
[*]丰富的内置函数库
[*]支持多种数据库(如 MySQL、PostgreSQL)
[*]强大的开源社区支持
2. PHP 中有哪些数据类型?

答案:
PHP 提供以下 8 种重要数据类型:

[*]整型(Integer)
[*]浮点型(Float/Double)
[*]字符串(String)
[*]布尔型(Boolean)
[*]数组(Array)
[*]对象(Object)
[*]资源(Resource)
[*]NULL
3. PHP 中的 $ 和 $$ 有什么区别?

答案:


[*]$ 表现普通变量。比方:$var = "hello";
[*]$$ 表现变量的变量。比方: $var = "hello";
$hello = "world";
echo $$var; // 输出:world

4. PHP 中的 include 和 require 有什么区别?

答案:


[*]include:包含文件时,如果文件不存在,会发出告诫,代码继续实行。
[*]require:包含文件时,如果文件不存在,会抛出致命错误,代码停止实行。
5. 什么是 PHP 中的超全局变量?列举一些常用的超全局变量。

答案:
超全局变量是 PHP 中内置的变量,在全部作用域中都可以利用。常用超全局变量包括:


[*]$_GET
[*]$_POST
[*]$_REQUEST
[*]$_SESSION
[*]$_COOKIE
[*]$_FILES
[*]$_SERVER
6. 如何获取当前脚本的文件名?

答案:
利用 $_SERVER['PHP_SELF'] 获取当前脚本的文件名:
echo $_SERVER['PHP_SELF']; // 输出:当前脚本路径
7. PHP 中的常量如何界说?

答案:
常量利用 define 界说,且界说后不可更改:
define("SITE_NAME", "MyWebsite");
echo SITE_NAME; // 输出:MyWebsite
从 PHP 7 开始,也可以利用 const 界说常量。
8. 什么是 PHP 的定名空间?

答案:
定名空间用于解决类、函数、常量名辩论的问题。利用 namespace 界说:
namespace MyNamespace;

class MyClass {
    public function sayHello() {
      return "Hello!";
    }
}

$obj = new \MyNamespace\MyClass();
echo $obj->sayHello();
9. PHP 中的面向对象有哪些特性?

答案:

[*]封装(Encapsulation)
[*]继承(Inheritance)
[*]多态(Polymorphism)
10. 什么是 PHP 的把戏方法?列举几个常见的把戏方法。

答案:
把戏方法是以双下划线 __ 开头的特别方法,常用于特定功能。常见的把戏方法包括:


[*]__construct():构造函数
[*]__destruct():析构函数
[*]__get() / __set():获取或设置不可访问的属性
[*]__call() / __callStatic():调用不存在的方法
[*]__toString():将对象转换为字符串时调用
示例:
class MyClass {
    public function __toString() {
      return "This is MyClass object.";
    }
}

$obj = new MyClass();
echo $obj; // 输出:This is MyClass object.
11. PHP 中如何连接 MySQL 数据库?

答案:
利用 MySQLi 或 PDO:
// MySQLi
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// PDO
try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}
12. 如何防止 SQL 注入?

答案:
通过利用准备语句和参数化查询:
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(":username", $username);
$stmt->execute();
13. 什么是会话(Session)?如何在 PHP 中利用?

答案:
会话是一种在服务器端存储用户数据的方式,通常用于用户身份验证。
利用 session_start() 开启会话:
session_start();
$_SESSION['username'] = "JohnDoe";
echo $_SESSION['username']; // 输出:JohnDoe
14. 什么是 PHP 的 cookie?如何设置 cookie?

答案:
Cookie 是存储在客户端的小型数据,用于用户身份识别。
利用 setcookie 设置:
setcookie("username", "JohnDoe", time() + 3600, "/");
echo $_COOKIE['username']; // 输出:JohnDoe
15. PHP 中的变量作用域有哪些?

答案:

[*]全局作用域:函数外部界说的变量。
[*]局部作用域:函数内部界说的变量。
[*]静态作用域:利用 static 声明的变量,跨函数调用长期化。
[*]超全局变量:如 $_POST、$_GET。
16. 什么是匿名函数?如何利用?

答案:
匿名函数是没著名字的函数,可以作为变量赋值或参数传递:
$greet = function($name) {
    return "Hello, $name!";
};
echo $greet("John"); // 输出:Hello, John!
17. 如何在 PHP 中实现文件上传?

答案:
通过 $_FILES 全局变量处理处罚:
if ($_FILES['file']['error'] == 0) {
    move_uploaded_file($_FILES['file']['tmp_name'], "uploads/" . $_FILES['file']['name']);
    echo "File uploaded successfully!";
}
18. 什么是 Composer?它的作用是什么?

答案:
Composer 是 PHP 的依赖管理工具,用于管理项目标第三方库。
利用 composer.json 界说依赖,通过 composer install 安装依赖。
19. 如何处理处罚 PHP 的错误和异常?

答案:
通过 try-catch 捕获异常:
try {
    throw new Exception("Something went wrong");
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
20. 什么是 PHP 中的 trait?

答案:
trait 是一种代码复用机制,允许类共享方法。
trait Logger {
    public function log($message) {
      echo $message;
    }
}

class MyClass {
    use Logger;
}

$obj = new MyClass();
$obj->log("This is a log message."); // 输出:This is a log message.
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 20道PHP常见面试题