Apache+PHP7.4.X+Smarty 4.X hello world

# 概要
今日はSmartyを利用して簡単なWEBページを作成したいと思います。
しばらくはこれと遊ぶことになりますので、色々勉強したいと思います。

# 開発環境
Raspberry PIにApacheとPHPがインストールされている前提です。
今回使うバージョンは以下の通りです。

~~~bash
# Apacheのバージョン確認です。
pi@raspberrypi:~ $ apachectl -v
Server version: Apache/2.4.54 (Raspbian)
Server built:   2022-06-09T04:26:43

# PHPのバージョン確認です。
pi@raspberrypi:~ $ php -v
PHP 7.4.30 (cli) (built: Jul  7 2022 15:51:43) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies
pi@raspberrypi:~ $
~~~

# Smarty Libraryダウンロード
下記のGithubから最新バージョンをダウンロードします。
https://github.com/smarty-php/smarty

~~~bash
# Root権限が必要ですので、sudo権限でディレクトリを作成します。
pi@raspberrypi:/var/www/html $ sudo mkdir web

# 作成したディレクトリに書き込み権限を付与します。
pi@raspberrypi:/var/www/html $ sudo chmod 777 web

# 作成したディレクトリに移動します。
pi@raspberrypi:/var/www/html $ cd web

# Smarty LibraryをGithubからダウンロードするコマンドを実行します。
pi@raspberrypi:/var/www/html/web $ git clone https://github.com/smarty-php/smarty.git
Cloning into 'smarty'...
remote: Enumerating objects: 39349, done.
remote: Counting objects: 100% (1130/1130), done.
remote: Compressing objects: 100% (630/630), done.
remote: Total 39349 (delta 542), reused 944 (delta 478), pack-reused 38219
Receiving objects: 100% (39349/39349), 14.24 MiB | 4.19 MiB/s, done.
Resolving deltas: 100% (30053/30053), done.

# GithubからダウンロードされたSmartyディレクトリです。
pi@raspberrypi:/var/www/html/web $ ls
smarty

# テンプレートキャッシュディレクトリを作成
pi@raspberrypi:/var/www/html/web $ mkdir smarty/templates_c

# テンプレートディレクトリを作成
pi@raspberrypi:/var/www/html/web $ mkdir tpl

# テンプレートキャッシュディレクトリに書き込み権限を付与
pi@raspberrypi:/var/www/html/web $ chmod 777 smarty/templates_c
~~~~

# ソース
次はロジックのソースコード（コントローラ）を作成して保存します。

~~~php
pi@raspberrypi:/var/www/html/web $ cat test.php
<?php
# Smarty Libraryパスを定義
define('SMARTY_DIR', '/var/www/html/web/smarty/libs/');
# Smarty Library Classを読み込み
# require_once は、既に取り込まれたファイルは2回目以降は取り込まない（1度だけ取り込む）
require_once(SMARTY_DIR . 'Smarty.class.php');

# Smarty Library Classのインスタンス作成
$smarty = new Smarty();

# テンプレートファイルのパスを設定
$smarty->template_dir = "/var/www/html/web/tpl/";

# テンプレートのキャッシュフォルダを設定
$smarty->compile_dir = "/var/www/html/web/smarty/templates_c/";

# URLアドレスから指定されたパラメータ「name」からパラメータを取得し、変数に設定
$name = $_GET['name'];

# テンプレートの「name」オブジェクトに変数$name」の値を設定
$smarty->assign("name", $name);

# 指定されたテンプレートに「name」をバインドした後、画面レイアウトを表示
$smarty->display("hello.tpl");
?>
~~~

次はテンプレートのレイアウトファイルを作成して保存します。

~~~html
pi@raspberrypi:/var/www/html/web $ cat tpl/hello.tpl
<!DOCTYPE html>
<html lang="ja">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hello World!</title>
</head>
<body>
このページは Template です。<p />
<blockquote>
    <h2>こんにちは {$name}!</h2>
</blockquote>
<p />
<hr />
</body>
</html>
pi@raspberrypi:/var/www/html/web $
~~~

# ブラウザから確認
次のURLで表示される内容を確認します。

http://「raspberry pi ipaddress」/web/test.php?name="tesT"

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/638d6c18-1889-9cf3-3983-a0e5d40d14e3.png)

#参考
PHP: Smarty の使い方
https://qiita.com/ekzemplaro/items/76532354c6483964d6bb

Apacheのバージョン確認方法
https://centos.bungu-do.jp/archives/6

require、require_once - ファイルの取り込み
https://webkaru.net/php/require-once/

# 最後に
10年前にGoogleとFacebookのログイン認証APIを利用したログイン統合システムを作成したときに利用したテンプレートエンジンでした。
当時はフレームワークを決めても学習する時間がほとんどなかったので、これを使って短い期間で完了できました。
色々ありましたね。そのプロジェクト！！！
次はこのSmartyを利用してWEBページを作成してみたいと思います。
今日はここまで！！！ありがとうございます。

※ソースコードのタグを他のユーザから教えて頂いて今回はちゃんと使えるようになりました。ありがとうございました。
例)
~ ~ ~ bash  
~ ~ ~ php
~ ~ ~ html
★スペースは不要です。表記のため入れました。