ホームページ >バックエンド開発 >PHPの問題 >PHPフォーラムの開発手順の詳細な説明

PHPフォーラムの開発手順の詳細な説明

PHPz
PHPzオリジナル
2023-04-04 10:41:34848ブラウズ

PHP は、Web サイト開発で広く使用されている人気のあるサーバーサイド スクリプト言語です。その中でもフォーラムは古典的なアプリケーションシナリオであるため、PHP をベースとしたフォーラムシステムの開発は非常に有意義な作業です。この記事では、開発者がすぐに始められるように、php フォーラム開発の手順を紹介します。

  1. データベース モデルの設計

優れたフォーラムには、投稿、返信、ユーザーなどの機能が必要です。したがって、実装をサポートするデータベース モデルを設計する必要があります。これらの機能の。単純なモデル設計は次のとおりです。

  • User テーブル: id (主キー)、ユーザー名、パスワード、電子メール、created_at
  • Post テーブル: id (主キー)、user_id (外部キー)、タイトル、コンテンツ、created_at、updated_at
  • #応答テーブル: id (主キー)、user_id (外部キー)、post_id (外部キー)、content、created_at、updated_at

そのうち、ユーザー テーブルは基本的なユーザー情報を保存し、投稿と返信テーブルを関連付ける関連フィールドがあります。投稿テーブルは、タイトル、コンテンツ、作成者、その他の情報を含むトピック投稿を保存するために使用され、返信テーブルは使用されます。返信内容を保存します。返信した人、返信の内容、返信のトピック投稿などの情報が含まれます。

  1. データベース スクリプトの作成

データベース モデルを設計した後、対応するテーブル構造を作成する必要があります。 MySQL データベースでは、SQL ステートメントを使用してテーブル構造を作成できます。

便宜上、まず phpMyAdmin で forum という名前のデータベースを作成し、その中に 3 つのテーブルを作成します。具体的な 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;
  • Post テーブル:
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;
  • Replyテーブル:
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"
  }
}

ここでは、ルーティング管理に 2 つの依存関係ライブラリ、slim と、illuminate/database を使用します。およびデータベース呼び出し。このうちslimはRESTfulインターフェースを簡単に実装できる軽量なphpフレームワークで、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();

コードでは、スリム フレームワークを使用してルーティング リクエストを処理し、illuminate/database を使用してデータベースを処理します。

  1. フロントエンド コードの記述

サーバー側のコードが完了したら、フロントエンド ページのコードも記述する必要があります。ここでは、ブートストラップ フレームワークを使用してこれを実現できます。具体的なコードは次のとおりです。

<!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 と入力してフォーラムにアクセスします。ホームページ。

これで、PHP をベースとしたフォーラム システムの開発が完了しました。このプロセスでは、大多数の開発者の役に立つことを願って、データベース モデルの設計、データベース スクリプトの作成、PHP コードの作成、フロントエンド ページの設計の完全なプロセスを紹介しました。

以上がPHPフォーラムの開発手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。