Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Schritte zur Entwicklung des PHP-Forums

Detaillierte Erläuterung der Schritte zur Entwicklung des PHP-Forums

PHPz
PHPzOriginal
2023-04-04 10:41:34826Durchsuche

PHP ist eine beliebte serverseitige Skriptsprache, die häufig in der Website-Entwicklung verwendet wird. Unter diesen ist das Forum ein klassisches Anwendungsszenario, daher ist die Entwicklung eines Forensystems auf Basis von PHP eine sehr sinnvolle Aufgabe. In diesem Artikel werden die Schritte der PHP-Forum-Entwicklung vorgestellt, um Entwicklern einen schnellen Einstieg zu erleichtern.

  1. Datenbankmodell entwerfen

Ein gutes Forum sollte über Funktionen wie Beiträge, Antworten, Benutzer usw. verfügen. Daher müssen wir ein Datenbankmodell entwerfen, um die Implementierung dieser Funktionen zu unterstützen. Ein einfacher Modellentwurf sieht wie folgt aus:

  • Benutzertabelle: ID (Primärschlüssel), Benutzername, Passwort, E-Mail, erstellt_at
  • Beitragstabelle: ID (Primärschlüssel), Benutzer_ID (Fremdschlüssel), Titel, Inhalt, erstellt_at, aktualisiert_at
  • Antworttabelle: ID (Primärschlüssel), Benutzer_ID (Fremdschlüssel), Post_ID (Fremdschlüssel), Inhalt, erstellt_at, aktualisiert_at

Unter diesen speichert die Benutzertabelle grundlegende Benutzerinformationen und verfügt über ein zugehöriges Feld zum Zuordnen von Beiträgen und Antwortentabelle; die Beitragstabelle wird zum Speichern von Themenbeiträgen verwendet, die Informationen wie Titel, Inhalt, Autor usw. enthält; die Antworttabelle wird zum Speichern von Antwortinhalten verwendet, die Informationen wie den Befragten, den Antwortinhalt usw. enthalten. und auf Themenbeiträge geantwortet.

  1. Datenbankskripte schreiben

Nachdem wir das Datenbankmodell entworfen haben, müssen wir die entsprechende Tabellenstruktur erstellen. In der MySQL-Datenbank können Sie SQL-Anweisungen verwenden, um Tabellenstrukturen zu erstellen.

Der Einfachheit halber können wir zunächst eine Datenbank mit dem Namen forum in phpMyAdmin erstellen und dann darin drei Tabellen erstellen. Die spezifischen SQL-Anweisungen lauten wie folgt: forum 的数据库,然后在其中创建三张表。具体的 sql 语句如下:

  • 用户表:
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 帖子表:
CREATE TABLE `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 回帖表:
CREATE TABLE `replies` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `post_id` int(11) NOT NULL,
  `content` text NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `post_id` (`post_id`),
  CONSTRAINT `replies_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `replies_ibfk_2` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. 编写配置文件

在编写 php 代码之前,我们需要先配置数据库连接信息。这里使用一个简单的配置文件来完成这个任务。具体代码如下:

// config.php

define('DB_HOST', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'forum');

此文件定义了数据库连接所需的信息,其中包括数据库主机地址、用户名和密码、以及数据库名称。

  1. 编写 php 代码

在编写 php 代码之前,我们需要先安装必需的依赖库。这里我们使用 composer 来完成依赖库的安装,具体流程如下:

  • 在终端或命令行中输入 composer init 初始化一个新的 composer 项目;
  • 编辑 composer.json 文件,加入如下依赖项:
{
  "require": {
    "slim/slim": "^4.5",
    "illuminate/database": "^8.0"
  }
}

这里我们使用了 slim 和 illuminate/database 两个依赖库,用于路由管理和数据库调用。其中,slim 是一个轻量级的 php 框架,可以轻松实现 RESTful 接口;illuminate/database 是 Laravel 框架中使用的数据库 ORM 模块,提供了非常丰富的数据库操作方法。

  • 在终端或命令行中执行 composer install 安装依赖项。

完成依赖库的安装后,我们可以开始编写 php 代码了。这里,我们将命名为 index.php,用于处理论坛的各种请求。

<?php

require &#39;vendor/autoload.php&#39;;
require &#39;config.php&#39;;

use Illuminate\Database\Capsule\Manager as Capsule;
use Slim\Factory\AppFactory;
use Slim\Views\PhpRenderer;

$capsule = new Capsule;
$capsule->addConnection([
    'driver' => 'mysql',
    'host' => DB_HOST,
    'username' => DB_USERNAME,
    'password' => DB_PASSWORD,
    'database' => DB_NAME,
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();

$renderer = new PhpRenderer('templates/');

$app = AppFactory::create();

$app->get('/', function ($request, $response, $args) use ($renderer) {
    $posts = Capsule::table('posts')
        ->select('posts.id', 'posts.title', 'posts.content', 'posts.created_at', 'users.id as user_id', 'users.username')
        ->leftJoin('users', 'posts.user_id', '=', 'users.id')
        ->orderBy('posts.created_at', 'desc')
        ->get();

    return $renderer->render($response, 'index.php', [
        'posts' => $posts
    ]);
});

$app->run();

代码中,我们使用 slim 框架来处理路由请求,并使用 illuminate/database 来处理数据库。

  1. 编写前端代码

在完成服务器端 code 之后,我们还需要编写前端页面代码。这里,我们可以使用 bootstrap 框架来完成。具体代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>论坛首页</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/5.0.0-alpha2/css/bootstrap.min.css">
    <script src="https://cdn.bootcss.com/bootstrap/5.0.0-alpha2/js/bootstrap.bundle.min.js"></script>
</head>
<body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
        <div class="container">
            <a href="#" class="navbar-brand">论坛首页</a>
        </div>
    </nav>

    <div class="container mt-3">
        <table class="table table-hover">
            <thead>
                <tr>
                    <th>#</th>
                    <th>标题</th>
                    <th>作者</th>
                    <th>发布时间</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($posts as $post): ?>
                <tr>
                    <td><?= $post->id ?></td>
                    <td><?= $post->title ?></td>
                    <td><?= $post->username ?></td>
                    <td><?= $post->created_at ?></td>
                    <td>
                        <a href="#" class="btn btn-sm btn-outline-secondary">编辑</a>
                        <a href="#" class="btn btn-sm btn-outline-danger">删除</a>
                    </td>
                </tr>
                <?php endforeach ?>
            </tbody>
        </table>
    </div>
</body>
</html>
  1. 测试论坛的运行情况

在完成 php 和前端代码编写后,我们可以最后测试一下论坛的运行情况了。首先,我们需要在终端或命令行中运行以下命令,启动服务器:

php -S localhost:8080 index.php

然后,在浏览器中输入 http://localhost:8080

Benutzertabelle:

🎜rrreee🎜🎜Beitragstabelle: 🎜🎜rrreee🎜🎜Antworttabelle: 🎜🎜rrreee
    🎜Writing-Konfigurationsdatei🎜🎜🎜Writing. php code Zuvor müssen wir zunächst die Datenbankverbindungsinformationen konfigurieren. Um diese Aufgabe zu erfüllen, wird hier eine einfache Konfigurationsdatei verwendet. Der spezifische Code lautet wie folgt: 🎜rrreee🎜Diese Datei definiert die für die Datenbankverbindung erforderlichen Informationen, einschließlich Datenbank-Hostadresse, Benutzername und Passwort sowie Datenbankname. 🎜
      🎜PHP-Code schreiben🎜🎜🎜Bevor wir PHP-Code schreiben, müssen wir die erforderlichen Abhängigkeitsbibliotheken installieren. Hier verwenden wir Composer, um die Installation abhängiger Bibliotheken abzuschließen: 🎜🎜🎜Geben Sie composer init in das Terminal oder die Befehlszeile ein, um ein neues Composer-Projekt zu initialisieren Fügen Sie in der Datei >composer.json die folgenden Abhängigkeiten hinzu: 🎜🎜rrreee🎜Hier verwenden wir zwei Abhängigkeitsbibliotheken, Slim und Illuminate/Database, für die Routing-Verwaltung und Datenbankaufrufe. Unter diesen ist Slim ein leichtes PHP-Framework, das problemlos RESTful-Schnittstellen implementieren kann; illuminate/database ist das im Laravel-Framework verwendete Datenbank-ORM-Modul, das eine sehr umfangreiche Datenbankbetriebsmethode bietet. 🎜🎜🎜Führen Sie composer install im Terminal oder in der Befehlszeile aus, um Abhängigkeiten zu installieren. 🎜🎜🎜Nach Abschluss der Installation der abhängigen Bibliotheken können wir mit dem Schreiben von PHP-Code beginnen. Hier nennen wir es index.php, das zur Bearbeitung verschiedener Anfragen aus dem Forum verwendet wird. 🎜rrreee🎜Im Code verwenden wir das Slim-Framework, um Routing-Anfragen zu bearbeiten, und illuminate/database, um die Datenbank zu verwalten. 🎜
        🎜Schreiben Sie den Front-End-Code🎜🎜🎜Nachdem wir den serverseitigen Code fertiggestellt haben, müssen wir auch den Front-End-Seitencode schreiben. Hier können wir das Bootstrap-Framework verwenden, um dies zu erreichen. Der spezifische Code lautet wie folgt: 🎜rrreee
          🎜Testen Sie den Betrieb des Forums🎜🎜🎜Nachdem wir das Schreiben von PHP und Front-End-Code abgeschlossen haben, können wir endlich den Betrieb des Forums testen. Zuerst müssen wir den folgenden Befehl im Terminal oder in der Befehlszeile ausführen, um den Server zu starten: 🎜rrreee🎜 Geben Sie dann http://localhost:8080 in den Browser ein, um auf die Startseite des Forums zuzugreifen. 🎜🎜Zu diesem Zeitpunkt haben wir die Entwicklung des Forensystems auf Basis von PHP abgeschlossen. In diesem Prozess haben wir den gesamten Prozess des Datenbankmodelldesigns, des Schreibens von Datenbankskripten, des Schreibens von PHP-Code und des Front-End-Seitendesigns eingeführt, in der Hoffnung, für die Mehrheit der Entwickler hilfreich zu sein. 🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Entwicklung des PHP-Forums. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn