本文目录导读:

我来给你一个规范的PHP项目结构范例,这是目前业界比较推荐的实践方式:
📁 基础项目结构
project-root/
├── app/ # 应用核心代码
│ ├── Controllers/ # 控制器
│ ├── Models/ # 模型
│ ├── Views/ # 视图
│ ├── Middleware/ # 中间件
│ ├── Services/ # 服务层
│ ├── Repositories/ # 数据仓库
│ └── Helpers/ # 辅助函数
│
├── config/ # 配置文件
│ ├── app.php # 应用配置
│ ├── database.php # 数据库配置
│ └── routes.php # 路由配置
│
├── database/ # 数据库相关
│ ├── migrations/ # 迁移文件
│ └── seeds/ # 种子数据
│
├── public/ # Web根目录(唯一对外暴露)
│ ├── index.php # 入口文件
│ ├── assets/ # 静态资源
│ │ ├── css/
│ │ ├── js/
│ │ └── images/
│ └── .htaccess # Apache配置(或nginx配置)
│
├── resources/ # 资源文件
│ ├── views/ # 视图模板
│ ├── lang/ # 语言文件
│ └── assets/ # 未经编译的资源
│
├── routes/ # 路由定义
│ └── web.php # Web路由
│
├── storage/ # 存储文件
│ ├── logs/ # 日志
│ ├── cache/ # 缓存
│ └── uploads/ # 上传文件
│
├── tests/ # 测试文件
│ ├── Unit/ # 单元测试
│ └── Feature/ # 功能测试
│
├── vendor/ # Composer依赖
│
├── .env.example # 环境变量示例
├── .env # 环境变量(不提交到git)
├── composer.json # Composer配置
├── artisan # 命令行工具(Laravel)
└── README.md
📝 代码示例
入口文件 (public/index.php)
<?php // 定义应用的加载器 require_once __DIR__ . '/../vendor/autoload.php'; // 加载环境配置 $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); $dotenv->load(); // 启动应用 $app = new App\Core\Application(); // 注册路由 $app->registerRoutes(); // 运行应用 $app->run();
Composer配置 (composer.json)
{
"name": "yourname/yourproject",
"type": "project",
"require": {
"php": "^8.0",
"monolog/monolog": "^3.0",
"vlucas/phpdotenv": "^5.4"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\": "database/"
}
},
"scripts": {
"test": "phpunit",
"dev": "php -S localhost:8000 -t public"
}
}
MVC示例
Controller (app/Controllers/UserController.php):
<?php
namespace App\Controllers;
use App\Models\User;
use App\Services\UserService;
class UserController
{
private $userService;
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function index()
{
$users = $this->userService->getAllUsers();
return view('users.index', ['users' => $users]);
}
public function show($id)
{
$user = $this->userService->getUserById($id);
return view('users.show', ['user' => $user]);
}
public function store(Request $request)
{
$data = $request->validate();
$this->userService->createUser($data);
return redirect('/users');
}
}
Model (app/Models/User.php):
<?php
namespace App\Models;
use App\Core\Database\Model;
class User extends Model
{
protected $table = 'users';
protected $fillable = [
'name',
'email',
'password'
];
protected $hidden = [
'password'
];
public function posts()
{
return $this->hasMany(Post::class);
}
}
View (resources/views/users/index.php):
<!DOCTYPE html>
<html>
<head>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>邮箱</th>
</tr>
</thead>
<tbody>
<?php foreach ($users as $user): ?>
<tr>
<td><?php echo $user->id; ?></td>
<td><?php echo $user->name; ?></td>
<td><?php echo $user->email; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</body>
</html>
环境配置 (.env.example)
# 应用配置 APP_NAME="Your App" APP_ENV=local APP_DEBUG=true APP_URL=http://localhost # 数据库配置 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=root DB_PASSWORD= # 缓存配置 CACHE_DRIVER=file SESSION_DRIVER=file # 邮件配置 MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=your_email@gmail.com MAIL_PASSWORD=your_password
🔧 项目配置示例
config/database.php
<?php
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'database'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
],
];
🌟 最佳实践建议
- 保持目录结构清晰:每层有明确职责
- 使用Composer管理依赖:便于版本控制
- 遵循PSR-4自动加载:统一命名空间规范
- 环境配置分离:使用
.env文件管理配置 - 入口文件统一:所有请求通过
index.php - 分离业务逻辑:使用Service层处理业务
- 配置缓存:生产环境启用配置缓存
🚀 推荐框架
如果想直接使用现成的框架,推荐:
- Laravel:功能最全,适合大型项目
- Symfony:企业级框架,组件丰富
- ThinkPHP:国内流行,适合快速开发
- Yii2:高性能,适合大型应用
- CodeIgniter:轻量简单,适合小型项目
📌 小项目简单结构
如果项目很小,可以使用简化版:
project/
├── config.php # 配置
├── index.php # 入口
├── controllers/ # 控制器
├── models/ # 模型
├── views/ # 视图
├── helpers/ # 辅助函数
├── assets/ # 静态资源
└── vendor/ # 第三方库
这种结构适合快速开发和中小型项目,清晰直观易于维护。
项目结构最重要的是可读性和可维护性,根据团队习惯和项目规模灵活调整,不必生搬硬套。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播