Skip to content

Support other template engines (View class) #23

@ucym

Description

@ucym

Feature

他のテンプレートエンジンを使えるようにする

Benefit & Scene

  • より短くhtmlを記述できる言語(jade,slim)を利用したい
  • Smartyという既存資産を使いたい(新しい言語を学ぶ必要がない)

Ideal code sample

// lib/app-require.php
require "cl/bs.php";

// ユーザー情報を取得
$resultSet = DB::query('SELECT `name`, `icon` FROM `users` WHERE `id` = ?', [Session::get('user_id')]);
$user = $resultSet->fetch();

// ビューに設定
View::set([
  'user_name'  => $user['user.name'],
  'user_icon'  => $user['user.icon']
]);
``
`
``` php
// index.php
require 'lib/app-require.php';

// $news にお知らせ情報を取得

View::set('news', $news)->output('index.jade');
//- index.jade
doctype html
html
  head
    title #{user_name} | MyPage
 body
    #user-info
      img.userIcon(src=user_icon)
      span.userName= user_name

Public API Spec

class CodeLapse\View

View関連クラスの窓口となるクラス

  • set($name : String|Array, $value = null) : void
    Viewに変数を設定します。
    第1引数に割り当て名、第2引数に割り当てる値を指定します。
    第1引数が配列の場合、添字を第1引数、値を第2引数としてすべての要素に対してsetメソッドを実行します。
    設定された値はエスケープされます。
  • setRaw($name: String|Array, $value = null) :void
    Viewに変数を設定します。
    * 設定された値はエスケープされません。*
  • get($name : String|Array, $default = null) : mixed
  • out($filename : String) : String
    指定されたテンプレートをレンダリングし、表示します。
    ファイル名の拡張子によって使用するエンジンを切り替えます。
    • .jade - jade.php
    • .tpl - smarty
  • fetch($filename) : void
    指定されたテンプレートをレンダリングし、HTMLを返します。
  • setRoot($path) : void
    テンプレートの保存先パスを指定します。
    setRootによって値が設定されない場合はview.templateDir設定を利用します。
  • getDriver($extension: String) : CodeLapse\View\Driver
    指定された拡張子に対応するドライバ(Driverクラスの実装クラスインスタンス)を取得します。

interface CodeLapse\View\Driver

テンプレートエンジンの初期化などを行うクラスのインターフェース

  • __construct()
    テンプレートエンジンを初期化します。
  • getNativeDriver() : Object
    テンプレートエンジンのハンドラを取得します。
    たとえば、Smartyの場合は Smartyオブジェクト返します。
  • render($filePath, $variables) : String
    指定されたファイルをレンダリングして、文字列として返します。
    第1引数にはテンプレートファイルへのフルパス、
    第2引数には割り当てられた変数が渡されます。

class CodeLapse\View\Driver\Jade (implements CodeLapse\View\Driver)

class CodeLapse\View\Driver\Smarty (implements CodeLapse\View\Driver)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions