エンジニア(を目指す)ブログ

エンジニアを目指す学生が書き留めるメモ

PHP_MEMO_テンプレートエンジンSmartyの使い方メモ


1. テンプレートエンジンの役割

  • PHPファイルにはHTMLを埋め込むことが出来る
    • デザインとロジックが一つのファイルに
  • 実際の開発ではデザインはデザイナーが、ロジックはプログラマーが担当
    • 分業しづらく、見通しも悪い
  • テンプレートエンジンを用いてHTML部分のテンプレートを作成することで、
    デザインとロジックの分離を行う。

2. Smartyとは


3. 基本的な利用の流れ

(PHP側)
  • smartyオブジェクトの生成

    • $smarty = new Smarty();
  • assignメソッドを用いてテンプレート内で利用する変数と割り当てるデータを指定

    • $smarty->assign("key", "data");
      (key : テンプレート内で使う変数名, data : keyに割り当てるデータ)
    • 連想配列によってまとめて指定することも可
      $smarty->assign(array("key1"=>"data1", "key2"=>"data2"));
  • displayメソッドを用いて、使用するテンプレートファイルを選択し、実行

    • sample.tplの場合 $smarty->display("sample.tpl");
(HTMLテンプレート側)
  • 「.tpl」拡張子のファイルを編集することになる
  • 通常通りHTMLを記述していく
  • PHP側から送られてきた変数を利用する場合
    • {$key}のように記述
    • (例)
      <title>{$key}</title>と記述すると内部では
      <title>data</title>のように処理される

備考

  • 様々なライブラリを提供しているPEARのHTML_QuickFormなどと連携することで テンプレート1枚のみで登録・確認・エラー表示などができる
    • 後日、HTML_QuickFormについてまとめる予定
  • 参考書籍 : 「PHP+MySQLマスターブック」| 永田順伸

  • やっぱりはみ出す目次の黒丸

PHP_MEMO_リクエストメソッドの利用メモ


1. リクエストメソッドとは

  • リクエスト(要求)のメソッド(手法)
  • WebブラウザからWebサーバにデータを送信する方法
  • GETかPOSTがメイン
    • GET : データの取得を目的とする場合向け(例 : 検索)
      • データ制限あり
      • URLに追加する形を取る(テキストのみ)
    • POST : データの登録を目的とする場合向け(例 : アカウント登録)
      • 大規模なデータも送信可能
      • INPUTタグなどで指定すれば、画像をはじめとするファイルも送信できる

2. PHPでの利用

(GET)
  1. (送信側) URLの最後に ?key=dataと追加する
    (例) <A href = "http://localhost/search.php?word=php">検索</A>

  2. (受信側) グローバル変数$_GET["key"]から取得する
    (例)search.php

       <?php  
         $keyword = $_GET["word"];
         searchDatabase($keyword);
       ?>
    
  3. マルチバイト文字を使用する際には注意!

    • URLにはマルチバイト文字は使用できない
    • PHPファイル内であればPHPタグ内で$key = rawurlencode("data");エンコード後に、
      <A href = "http://localhost/search.php?key=<?=$key?>">と指定すると良い
(POST)
  1. (送信側) formタグ内で必要なフォームを設置する
    (例)

      <form name = "form" method = "post" action = "AccountRegist.php">
        名前 : <BR>
        <input type = "text" name = "name"><BR>
    
        <input type = "submit" value = "登 録">
      </form>
    
  2. (受信側) グローバル変数$_POST["key"]から取得する
    (例)AccountRegist.php

      <?php  
        print "確認 <BR>";
        print "お名前 : ".$_POST["name"];
      ?>
    

備考

  • グローバル変数$_REQUEST["key"]について

    • GETやPOSTに関わらず送信されたデータを格納する変数
    • どちらのメソッドでデータが送信されるのかが分からない場合や、複数のページから異なるメソッドでデータが送信されてくる場合には有用かもしれない(要調査)
  • はみ出す目次の黒丸をどうにかしたい


はじめに

 はじめまして、kaiです。

 本ブログは「エンジニア(を目指す)ブログ」と題して、プログラミングやその周辺の技術について投稿していきたいと思います。と言ってもまだまだ基本的な部分を抑えきれていない初学者になりますので、投稿主の備忘録や学習の記録をアウトプットすることが中心となると思いますが、ご覧いただければ幸いです。