phpでプログラムを作る際の構成

emile-perron-xrVDYZRGdw4-unsplash.jpg

質問

phpでプログラムを作る際の構成を教えてください。
composerやvender,clientなどほかの言語と違うところが多いように思います。
HTMLファイルも生成していますよね?


解答

とても本質的な疑問です。
PHPは 「Webと一体で発展してきた言語」 なので、

Java や Go、Python(CLI中心)と比べて 構成や責務の分け方が独特 に見えます。


順を追って整理します。


1. 結論を先に

PHPの構成が分かりにくく感じる理由は、次の3点です。

  1. PHPはもともとHTMLを生成するための言語

  2. 言語仕様とフレームワーク文化が強く結びついている

  3. Composer / vendor は「後から入った」仕組み

そのため、

  • PHP = バックエンド + テンプレート + HTTP処理
    が一体化して見えます。


2. PHPプログラムの基本的な考え方

他言語(例:Java / Go)

[クライアント] → HTTP → [アプリケーション] → JSON

伝統的なPHP

[ブラウザ] → HTTP → [PHP] → HTML → [ブラウザ]

つまりPHPは 「HTMLを生成すること」が第一級の目的 でした。

<?phpecho "<h1>Hello</h1>";

この思想が、今でも構成に影響しています。


3. 最小構成(超シンプルなPHP)

project/├─ index.php
<?phpecho "Hello World";
  • Webサーバー(Apache / Nginx + PHP-FPM)が index.php を実行

  • 出力された文字列がそのまま HTTPレスポンス

👉 HTMLファイルを「生成している」というより
PHPの標準出力 = HTTPレスポンス です。


4. HTMLファイルは「生成している」のか?

答え:生成しているが、ファイルとしては作らない

<?php?><!DOCTYPE html><html><body>  <h1><?= htmlspecialchars($title) ?></h1></body></html>
  • PHPが実行される

  • PHPタグ以外は そのまま出力

  • HTMLファイルを保存しているわけではない

👉 HTMLは「結果」 であって 成果物ファイルではない


5. 構成が複雑に見える理由①:Composer / vendor

Composerとは?

  • PHPの 依存関係管理ツール

  • npm / pip / Maven と同じ立ち位置

典型構成

project/├─ composer.json├─ composer.lock├─ vendor/│  └─ autoload.php

vendorディレクトリ

  • 外部ライブラリの実体

  • Git管理しないことが多い

  • require 'vendor/autoload.php'; で読み込む

👉 ここは他言語とほぼ同じです。


6. 構成が複雑に見える理由②:MVC文化

PHPはフレームワーク文化が強く、
MVC(Model / View / Controller) がデファクトです。

Laravel風の典型構成

project/├─ app/│  ├─ Controllers/│  ├─ Models/│  └─ Services/├─ resources/│  └─ views/│     └─ user.blade.php├─ public/│  └─ index.php├─ vendor/├─ composer.json

役割

  • Controller:HTTPリクエスト処理

  • Model:DBアクセス

  • View:HTML生成(テンプレート)


7. 「client」という概念が出てくる理由

PHPではよく以下の分離をします。

[client](ブラウザ)   ↓[PHPサーバー]   ↓[DB / 外部API]

しかし最近は:

  • PHPは APIサーバー

  • フロントエンドは 別言語(React / Vue)

という構成も増えています。

その場合

frontend/  └─ React / Vuebackend/  └─ PHP (JSON only)

👉 HTMLを生成しないPHP も普通になっています。


8. 他言語との「決定的な違い」

観点PHPJava / Go
実行単位HTTPリクエストごとプロセス常駐
主用途Web生成アプリ全般
HTML言語設計に組み込み完全に別
標準構成存在しない比較的固定
フレームワーク依存非常に強い比較的弱い

9. 「正しいPHP構成」は存在する?

結論として:

PHPには「唯一の正解構成」はない

理由:

  • 歴史が長い

  • 小規模スクリプト〜巨大Webアプリまで用途が広い

  • フレームワークごとに思想が違う


10. 現代的・無難な構成(おすすめ)

小〜中規模Webアプリ

project/├─ public/│  └─ index.php├─ src/│  ├─ Controller/│  ├─ Service/│  └─ Model/├─ templates/│  └─ *.php├─ vendor/├─ composer.json

APIサーバーとして使う場合

project/├─ public/│  └─ index.php├─ src/│  └─ Controller/├─ vendor/├─ composer.json

(HTMLは生成しない)


11. まとめ(重要ポイント)

  • PHPは HTML生成を目的に生まれたWeb特化言語

  • HTMLは「生成されるレスポンス」であってファイルではない

  • Composer / vendor は後付けだが今は必須

  • MVC文化が構成を複雑に見せている

  • API専用PHP という現代的使い方も一般的






 



この記事へのコメント