PHP 框架大全

PHP 框架大全

PHP作为最流行的服务器端脚本语言之一,拥有丰富多样的开发框架。本文将全面介绍主流PHP框架,帮助开发者选择合适的工具。

一、主流PHP框架概览

1. Laravel

当前版本: 10.x
GitHub星标: 75k+

核心特性
  • 优雅的语法: expressive and beautiful syntax

  • ORM:Eloquent ORM提供直观的数据库操作

  • 模板引擎:Blade模板引擎

  • 队列系统:强大的任务调度和队列管理

  • 生态系统:拥有Vue.js、React等前端集成方案

代码示例

php

<?php
// 路由定义
Route::get('/users', [UserController::class, 'index']);

// 控制器
class UserController extends Controller
{
    public function index()
    {
        return User::all()->map(function ($user) {
            return [
                'id' => $user->id,
                'name' => $user->name,
                'email' => $user->email
            ];
        });
    }
}

// Eloquent模型
class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
}

2. Symfony

当前版本: 6.x
GitHub星标: 28k+

核心特性
  • 组件化架构:可单独使用各个组件

  • 企业级支持:适合大型复杂项目

  • 高度可配置:灵活的配置系统

  • Bundle系统:模块化扩展机制

代码示例

php

<?php
// 控制器
class UserController extends AbstractController
{
    #[Route('/users', name: 'user_list')]
    public function index(UserRepository $userRepository): Response
    {
        $users = $userRepository->findAll();
        
        return $this->render('user/index.html.twig', [
            'users' => $users,
        ]);
    }
}

// 服务定义
class UserService
{
    public function __construct(
        private UserRepository $userRepository,
        private LoggerInterface $logger
    ) {}
    
    public function createUser(array $data): User
    {
        $user = new User();
        $user->setName($data['name']);
        $user->setEmail($data['email']);
        
        $this->userRepository->save($user, true);
        $this->logger->info('User created: ' . $user->getEmail());
        
        return $user;
    }
}

3. CodeIgniter

当前版本: 4.x
GitHub星标: 18k+

核心特性
  • 轻量级:核心系统非常小巧

  • 简单易学:学习曲线平缓

  • 性能优秀:执行效率高

  • 零配置:几乎不需要配置即可使用

代码示例

php

<?php
// 控制器
class UserController extends BaseController
{
    public function index()
    {
        $userModel = new UserModel();
        $data['users'] = $userModel->findAll();
        
        return view('users/list', $data);
    }
    
    public function create()
    {
        helper(['form']);
        
        if ($this->request->getMethod() === 'POST') {
            $rules = [
                'name' => 'required|min_length[3]',
                'email' => 'required|valid_email'
            ];
            
            if ($this->validate($rules)) {
                $userModel = new UserModel();
                $userModel->save([
                    'name' => $this->request->getVar('name'),
                    'email' => $this->request->getVar('email')
                ]);
                
                return redirect()->to('/users');
            }
        }
        
        return view('users/create');
    }
}

4. Yii 2

当前版本: 2.2.x
GitHub星标: 14k+

核心特性
  • 高性能:比其他框架更快

  • 安全特性:内置安全机制

  • Gii代码生成器:快速生成代码

  • RESTful API支持:强大的API开发支持

代码示例

php

<?php
// 控制器
class UserController extends Controller
{
    public function behaviors()
    {
        return [
            'a***ess' => [
                'class' => A***essControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }
    
    public function actionIndex()
    {
        $searchModel = new UserSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        
        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
}

// 模型
class User extends ActiveRecord
{
    public function rules()
    {
        return [
            [['name', 'email'], 'required'],
            ['email', 'email'],
            ['status', 'default', 'value' => self::STATUS_ACTIVE],
        ];
    }
    
    public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
            if ($this->isNewRecord) {
                $this->auth_key = Yii::$app->security->generateRandomString();
            }
            return true;
        }
        return false;
    }
}

5. Phalcon

当前版本: 5.x
GitHub星标: 11k+

核心特性
  • C扩展框架:以C语言编写,性能极高

  • 低资源消耗:内存占用小

  • 全栈框架:提供完整的功能组件

  • 独特的架构:不同于传统PHP框架

代码示例
<?php
// 控制器
class UserController extends Controller
{
    public function indexAction()
    {
        $users = Users::find();
        
        $this->view->users = $users;
    }
    
    public function createAction()
    {
        if ($this->request->isPost()) {
            $user = new Users();
            $user->name = $this->request->getPost('name');
            $user->email = $this->request->getPost('email');
            
            if ($user->save() === false) {
                $messages = $user->getMessages();
                foreach ($messages as $message) {
                    $this->flash->error($message->getMessage());
                }
            } else {
                $this->flash->su***ess('User created su***essfully');
                return $this->response->redirect('users');
            }
        }
    }
}

// 模型
class Users extends Model
{
    public $id;
    public $name;
    public $email;
    public $created_at;
    
    public function initialize()
    {
        $this->setSource('users');
    }
    
    public function beforeCreate()
    {
        $this->created_at = date('Y-m-d H:i:s');
    }
}

6. Slim

当前版本: 4.x
GitHub星标: 11k+

核心特性
  • 微框架:专注于API开发

  • 轻量级:核心代码精简

  • 中间件支持:强大的中间件系统

  • PSR标准兼容:符合PHP标准规范

代码示例

php

<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();

// 添加路由
$app->get('/users', function (Request $request, Response $response, $args) {
    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $db->query('SELECT * FROM users');
    $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    $payload = json_encode($users);
    $response->getBody()->write($payload);
    
    return $response
        ->withHeader('Content-Type', 'application/json')
        ->withStatus(200);
});

$app->post('/users', function (Request $request, Response $response, $args) {
    $data = $request->getParsedBody();
    
    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $db->prepare('INSERT INTO users (name, email) VALUES (?, ?)');
    $stmt->execute([$data['name'], $data['email']]);
    
    $userId = $db->lastInsertId();
    
    $response->getBody()->write(json_encode([
        'id' => $userId,
        'name' => $data['name'],
        'email' => $data['email']
    ]));
    
    return $response
        ->withHeader('Content-Type', 'application/json')
        ->withStatus(201);
});

$app->run();

二、新兴PHP框架

1. Laminas (原Zend Framework)

当前版本: 3.x
特点: 企业级、组件化、高度可定制

2. CakePHP

当前版本: 4.x
特点: 快速开发、约定优于配置、脚手架

3. Flight

当前版本: 3.x
特点: 极简、可扩展、适合小型项目

4. Aura

特点: 独立的组件库、无依赖、高度解耦

三、框架选择指南

根据项目类型选择

项目类型 推荐框架 理由
企业级应用 Symfony, Laminas 稳定性、扩展性、企业支持
快速开发 Laravel, CakePHP 丰富的功能、活跃的社区
API开发 Slim, Lumen 轻量、高性能、专注API
高性能需求 Phalcon, Yii 执行效率高、资源消耗少
小型项目 CodeIgniter, Flight 简单、轻量、学习成本低

根据团队情况选择

团队情况 推荐框架 理由
新手团队 Laravel, CodeIgniter 文档完善、学习资源丰富
有经验的团队 Symfony, Yii 灵活、可定制性强
大型团队 Symfony, Laminas 标准化、易于协作
小团队/个人 Slim, Flight 简单、快速上手

四、性能对比

以下是主流框架的性能基准测试数据(仅供参考):

框架 请求/秒 内存占用 学习曲线
Phalcon 最高 最低 中等
Slim 很高 很低 简单
Yii 2 中等 中等
Laravel 中等 较高 简单
Symfony 中等 中等 较陡
CodeIgniter 简单

框架名称 主要特点 适用场景
ThinkPHP 国产、中文文档丰富、易于上手、MVC架构 国内中小型项目
Laravel 功能丰富、优雅灵活、强大的依赖注入 中大型项目、需要现代PHP特性的应用
Yii 高性能、纯OOP、适合大型Web应用 大型Web应用、对性能要求较高的项目
Symfony 高度可复用组件、稳定可靠、企业级 企业级项目、需要高度定制和稳定性的应用
CodeIgniter 轻量级、配置简单、学习成本低 小型项目、快速原型开发
Phalcon C扩展框架、高性能-5 对性能有极致要求的项目

🔧 ThinkPHP 核心机制与使用

ThinkPHP作为国内流行的框架,以下是一些关键机制能帮助你更好地理解和使用它:

  1. MVC架构:严格遵循模型-视图-控制器模式,分离业务逻辑、数据和界面。

  2. URL访问与路由:支持多种URL模式,如 PATHINFO模式http://域名/模块/控制器/操作)和兼容模式,可通过U函数生成。

  3. 数据库操作

    • 提供M函数快速实例化基础模型。

    • 强大的连贯操作(链式操作)支持。

  4. 模板引擎:内置模板引擎,支持自定义定界符,可通过display方法渲染模板,assign方法分配变量。

  5. 常用函数

    • C函数:配置的设置与获取。

    • D函数:实例化自定义模型类。

    • S函数:缓存管理。

    • I函数:安全获取系统输入变量。

五、学习资源

官方文档

  • Laravel: https://laravel.***/docs

  • Symfony: https://symfony.***/doc

  • CodeIgniter: https://codeigniter.***/user_guide

  • Yii: https://www.yiiframework.***/doc

社区资源

  • PHP The Right Way: https://phptherightway.***

  • Packagist: https://packagist.org

  • PHP FIG: https://www.php-fig.org

六、总结

选择合适的PHP框架需要考虑多个因素:

  • 项目需求:功能复杂度、性能要求

  • 团队技能:现有技术水平、学习能力

  • 长期维护:社区活跃度、更新频率

  • 生态系统:第三方包、工具支持

无论选择哪个框架,重要的是深入理解其设计理念和最佳实践,这样才能充分发挥框架的优势,构建高质量的PHP应用程序。

建议:对于初学者,建议从Laravel或CodeIgniter开始;对于有经验的开发者,可以根据具体项目需求选择更专业的框架。

转载请说明出处内容投诉
CSS教程网 » PHP 框架大全

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买