一、基础语法
echo
、print
、print_r
和var_dump
的区别?echo
:输出一个或多个字符串,没有返回值。print
:输出一个字符串,返回值为 1。print_r
:打印变量的易读信息,适合数组和对象。var_dump
:输出变量的详细信息,包括类型和值,适合调试。
如何定义常量?常量和变量的区别?
使用
define('CONST_NAME', value)
或const CONST_NAME = value
定义常量。常量一旦定义不能修改,作用域全局;变量可以修改,作用域有限。
==
和===
的区别?==
:只比较值,不比较类型。===
:比较值和类型。
如何获取数组长度?如何遍历数组?
使用
count($array)
获取长度。遍历数组:
foreach ($array as $key => $value) { echo "$key: $value"; }
PHP 中的超全局变量有哪些?
$_GET
、$_POST
、$_REQUEST
、$_SESSION
、$_COOKIE
、$_SERVER
、$_FILES
、$_ENV
。
isset()
和empty()
的区别?isset()
:检查变量是否已声明且不为null
。empty()
:检查变量是否为“空”(如0
、""
、null
、false
等)。
include
和require
的区别?include
:文件不存在时发出警告,脚本继续执行。require
:文件不存在时致命错误,脚本停止执行。
二、面向对象编程(OOP)
如何定义类和实例化对象?
class MyClass {} $obj = new MyClass();
构造函数和析构函数?
构造函数:
__construct()
,对象创建时调用。析构函数:
__destruct()
,对象销毁时调用。
访问修饰符有哪些?
public
:全局可访问。protected
:仅类和子类可访问。private
:仅类内部可访问。
什么是继承?
子类继承父类的属性和方法:
class ParentClass {} class ChildClass extends ParentClass {}
接口和抽象类的区别?
接口:定义方法签名,不能实现方法,支持多继承。
抽象类:可以包含实现的方法,不能实例化。
命名空间的作用?
解决命名冲突,组织代码:
namespace MyProject;
trait
是什么?用于代码复用,可以在类中插入方法:
trait MyTrait { public function myMethod() {} } class MyClass { use MyTrait; }
三、数据库操作
如何连接 MySQL 数据库?
$conn = new mysqli('localhost', 'user', 'password', 'database');
如何防止 SQL 注入?
使用预处理语句:
$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?"); $stmt->bind_param('i', $id);
如何执行 SQL 查询?
$result = $conn->query("SELECT * FROM users"); while ($row = $result->fetch_assoc()) {}
PDO 的优势?
支持多种数据库,预处理语句防止 SQL 注入,面向对象接口。
如何实现 CRUD 操作?
使用
INSERT
、SELECT
、UPDATE
、DELETE
语句。
如何优化数据库查询?
使用索引,避免
SELECT *
,优化查询语句,缓存结果。
四、文件操作
如何读取和写入文件?
$content = file_get_contents('file.txt'); file_put_contents('file.txt', 'Hello World');
如何判断文件是否存在?
if (file_exists('file.txt')) {}
如何上传文件?
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
如何遍历目录?
foreach (scandir('directory') as $file) {}
五、安全性
如何防止 XSS?
使用
htmlspecialchars()
转义输出。
如何防止 CSRF?
使用 CSRF Token 验证。
如何加密密码?
使用
password_hash()
和password_verify()
。
如何防止会话劫持?
使用
session_regenerate_id()
,设置HttpOnly
和Secure
标志。
六、性能优化
如何优化 PHP 代码?
减少数据库查询,使用缓存,优化循环。
什么是 OpCache?
PHP 字节码缓存,减少脚本编译时间。
如何使用缓存?
使用 Memcached 或 Redis 存储常用数据。
七、高级特性
什么是 Composer?
PHP 依赖管理工具。
什么是自动加载?
使用
spl_autoload_register()
或 Composer 的autoload
。
异常处理机制?
try { throw new Exception('Error'); } catch (Exception $e) { echo $e->getMessage(); }
PHP 7 和 PHP 8 的新特性?
PHP 7:性能提升,类型声明,返回类型声明。
PHP 8:JIT 编译器,联合类型,
match
表达式。
八、编程题
判断回文字符串:
function isPalindrome($str) { return $str === strrev($str); }
数组去重:
$uniqueArray = array_unique($array);
单例模式:
class Singleton { private static $instance; private function __construct() {} public static function getInstance() { if (!self::$instance) { self::$instance = new self(); } return self::$instance; } }
查询第 10 到第 20 条记录:
SELECT * FROM table LIMIT 10 OFFSET 9;
统计单词出现次数:
$wordCount = array_count_values(str_word_count($fileContent, 1));
九、综合题
设计 MVC 框架:
Model:处理数据。
View:显示数据。
Controller:处理请求和逻辑。
用户登录和注册:
使用表单提交数据,验证输入,加密密码,存储到数据库。
RESTful API:
使用 HTTP 方法(GET、POST、PUT、DELETE)实现 CRUD 操作。
购物车功能:
使用 Session 或数据库存储购物车数据,实现添加、删除、更新操作。
评论