📜  php estrutura basica - PHP (1)

📅  最后修改于: 2023-12-03 15:03:34.913000             🧑  作者: Mango

PHP基础框架

PHP是一种常用的脚本语言,在网络开发中广泛应用。本文将介绍如何基于PHP构建一个基础框架。

环境要求

我们需要在Web服务器上安装PHP,建议使用版本7.0及以上。同时需要安装一个数据库服务,如MySQL或MariaDB。

目录结构

为了实现一个整洁、可维护的架构,我们将使用MVC(模型-视图-控制器)模式,按以下结构组织文件:

├── app
│   ├── controllers
│   ├── models
│   └── views
├── core
│   ├── bootstrap.php
│   ├── Controller.php
│   ├── Model.php
│   └── View.php
├── public
│   ├── css
│   ├── js
│   ├── images
│   └── index.php
└── .htaccess

在此结构中,我们将应用程序分为控制器、模型和视图三个文件夹。核心文件夹包含核心文件并分离其中所需的类。公共文件夹是Web服务器公开的可访问文件夹,包含样式、脚本和服务器入口文件。.htaccess文件用于URL重写。

入口文件

Web服务器的入口文件是public/index.php,所有请求都将指向它:

<?php

require __DIR__ . '/../core/bootstrap.php';

$controller = new Controller();

bootstrap.php文件引入核心文件并定义了自动加载函数:

<?php

spl_autoload_register(function ($class) {
    require_once __DIR__ . '/' . $class . '.php';
});
控制器

控制器处理请求并调用相应的模型和视图。在app/controllers文件夹中,我们定义一个基本Controller类:

<?php

class Controller
{
    protected $model;

    public function __construct()
    {
        $this->model = new Model();
        $this->view = new View();
    }

    public function index()
    {
        $data = $this->model->getData();
        $this->view->render('index', $data);
    }
}

控制器的默认方法是index()。此方法调用模型的方法获取数据,并将其传递给视图进行呈现。

模型

模型处理数据源。在app/models文件夹中,我们定义一个基本的Model类:

<?php

class Model
{
    public function getData()
    {
        return [
            'title' => 'PHP Basic Framework',
            'content' => 'This is the basic framework for PHP.',
        ];
    }
}

该示例模型返回一些固定数据。

视图

视图负责呈现应用程序的界面。在app/views文件夹中,我们定义一个基本的View类。

<?php

class View
{
    public function render($viewName, $data = [])
    {
        extract($data);
        require __DIR__ . "/$viewName.php";
    }
}

该示例视图需要一个视图文件和任何必要的数据。视图文件应该被保存在app/views文件夹中。视图可以在PHP标记(<?php ?>)中使用HTML和任何必要的类。

URL重写

为了更好地体验Web应用程序,需要使用URL重写。我们可以使用Apache的.htaccess文件进行重写:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

此设置将URL中的指向请求转发到public/index.php文件。URL中的所有内容都将作为查询参数传递给该文件。

结论

通过使用MVC模式和清晰的目录结构,我们已经创建了一个基础框架。密切关注需要的业务逻辑和视图,并在Controller类中编写必要的方法即可。这个框架可以作为一个项目的基础来扩展。