コンポーネントの基本

コンポーネントとは

Component(コンポーネント)は部品という意味で、Webアプリケーションでは、HTMLやプログラムを共通化したファイルのことを指します。コンポーネント化することで何度も同じコーディングをせず、効率的に開発ができます。

レイアウトとは

Layout(レイアウト)は、メニューやヘッダーなどの共通部分を1ファイルで構成するコンポーネントファイルです。例えばHTMLのheadタグやbodyタグなどのレイアウトファイルを用意することで、各ページはレイアウト部分をコーディングせずに済みます。

<html>
<head>
<title>Shopping</title>
</head>
<body>
  ページごとのコンテンツを表示
</body>
</html>

ディレクトリ作成

今回のプロジェクトはMVC構成で作成していきます。「app/」ディレクトリに「models/」「views/」「controllers/」ディレクトリを作成します。

php_sns/
├── app/
│        ├── controllers/
│        ├── models/
│        └── views/

レイアウト

php_sns/
├── app/
│        └── views/
│                 ├── components/
│                 │        └── head.view.php
│                 └── layouts/
│                           └── app.layout.php
├── regist/
│        ├── confirm.php
│        ├── index.php
│        ├── input.php
│        └── result.php

レイアウトファイル作成

レイアウトファイル「views/layouts/app.view.php」を作成し、includeでViewファイルを表示します。

views/layouts/app.view.php
<!DOCTYPE html>
<html lang="ja">

<?php include 'views/components/head.php' ?>

<body>
    ...
</body>

</html>

headコンポーネント

レイアウトのheadタグを表示するコンポーネント「views/components/head.php」を作成します。

views/components/head.php
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>My Shop</title>
    <link 
    rel="stylesheet" 
    href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
</head>

PHP + MySQL Webサーバプログラミング