Asset クラス

Asset クラスは、アセット (js, css, img) を収集し、グループ化し、表示するために役立つメソッドをまとめたクラスです。

使用方法

アセットは 2 通りの方法で使用できます。Asset クラスの静的な使用と、 Asset::forge() または Asset::instance() が返す Asset オブジェクトです。このセクションでは、静的な使用を紹介します。 静的な使用は、 設定 で指定した設定を使用したデフォルトインスタンスなら、必ず動作します。

注意: css, js, img メソッドは、グループに追加する場合には現在のインスタンスを返します。 この挙動になるのは、引数にグループを指定して呼び出した場合、または、auto_renderfalse で、 引数にグループを指定しないで(または null を指定して)呼び出した場合です。

Asset オブジェクトの使い方や、Asset::instance() 、 Asset::forge() は 高度な使用法 セクションで解説します。

add_path($path, $type = null)

add_path メソッドは、グローバルアセット検索パス配列の最上位にパスを追加します。 $type が指定されていたら、パスを追加するのはそのタイプの検索パス配列の最上位になります。

静的 はい
パラメータ
パラメータ デフォルト 説明
$path 必須 アセットパス検索配列に追加されるパス (asset URLからの相対パスで、末尾の / は必要)。
$type
null
フォルダを追加する場合は、追加先のタイプを渡します。Asset クラスはプリセットのタイプとして 'img', 'css', 'js' を持っています。 もしプリセットされていないタイプが渡された場合、そのタイプ用に検索パス配列が新たに作成されます。 同じパスを複数のタイプに追加したい場合は、それらのタイプを 1 つの配列にして渡します。
返り値 現在のインスタンスを返します
/*
 * これらのパスは、使用しようとしているコンテンツの種類に応じて、
 * 設定ファイルで定義された名前のサブフォルダを持っている必要があります。
 */
Asset::add_path('resources/template_1/');
Asset::add_path('resources/template_2/');

/*
 * 全ての asset タイプに対してグローバルなパスを追加します。
 * 次に img 、css の各タイプに個々のパスを追加します。
 */
Asset::add_path('assets/global/', array('css', 'js', 'img'));
Asset::add_path('assets/icons/', 'img');
Asset::add_path('assets/images/', 'img');
Asset::add_path('assets/css/', 'css');

/*
 * 新しくアセットタイプを作成します
 */
Asset::add_path('assets/docs/', 'pdf');

/*
 * メソッドチェーン呼び出しもできます
 */
Asset::add_path('resources/templates/dark/')
	->add_path('resources/templates/light')
	->add_path('resources/templates/brown');

css($stylesheets = array(), $attr = array(), $group = NULL, $raw = false)

css メソッドは、css を名前付きグループに追加する、デフォルトグループに追加する、css タグを返すのいずれかを行います。

静的 はい
パラメータ
パラメータ デフォルト 説明
$stylesheets 必須 スタイルシートファイル名の配列/文字列。これはグループに追加されるか、タグまたはインライン CSS の文字列として返されます。
$attr
array()
css ファイルに適用される属性の配列
$group
null
css をカテゴリ化するグループ名。null が指定されたら css タグを返します。
$raw
false
true が指定された場合、結果の css タグは href 属性でファイルを指定する代わりに、css ファイルの中身を直接 HTML に展開したものになります。
返り値 生成されたアセット文字列。グループが指定された場合は現在のインスタンス。
// グループが null でない場合は、ファイルをグループに追加して '' を返す
Asset::css(array('header.css', 'footer.css'), array(), 'layout', false);

/* 返り値
 * <link href="../assets/css/inline.css" rel="stylesheet" />
 * 設定ファイルの auto_render が true の場合。
 * それ以外は、アセットは後でレンダリングするためにデフォルトグループに追加されます。
 */
echo Asset::css('inline.css');

/* 以下を返します
 * <style>
 * .bold_class { font-weight: bold }
 * #header {height: 50px}
 * </style>
 */
echo Asset::css('inline.css', array(), null, true);

/* 以下を返します
 * <style>
 * .bold_class { font-weight: bold }
 * #header {height: 50px}
 * </style>
 */
Asset::css(".bold_class { font-weight: bold }\n#header {height: 50px}", array(), 'inline', true);
echo Asset::render('inline');

/* 上記と同じ動作 */
echo Asset::css(".bold_class { font-weight: bold }\n#header {height: 50px}", array(), null, true);

find_file($file, $type, $folder = '')

find_file メソッドは、指定されたタイプの全ての検索フォルダから目的のファイルの場所を返します。

静的 はい
パラメータ
パラメータ デフォルト 説明
$file 必須 探そうとしているファイル名
$type 必須 探すアセットのタイプ (css, js, img)
$folder
''
それぞれの検索フォルダに追加されるサブフォルダの名前
返り値 そのファイルのパス、見つからなかった場合は false
// css ファイルを探す
$path = Asset::find_file('layout.css', 'css');

// icon 画像を探す (アイコンは icons というサブフォルダにある)
$path = Asset::find_file('icon.png', 'img','icons/');

img($images = array(), $attr = array(), $group = NULL)

img メソッドは、画像を名前付きグループに追加する、デフォルトグループに追加する、img タグを返すのいずれかを行います。

静的 はい
パラメータ
パラメータ デフォルト 説明
$images 必須 画像ファイル名の配列/文字列。これはグループに追加されるか、タグとして返されます。
$attr
array()
img タグに適用される属性の配列
$group
null
画像に適用されるグループ名
返り値 生成されたアセット文字列。グループが指定された場合は現在のインスタンス。
/* 以下を返します
 * <img src="../assets/img/logo.png" id="logo">
 * 設定ファイルの auto_render が true の場合。
 * それ以外は、アセットは後でレンダリングするためにデフォルトグループに追加されます。
 */
echo Asset::img('logo.png', array('id' => 'logo'));

Asset::img(array('bob.jpg', 'joe.jpg', 'sally.jpg'), array('class' => 'thumbnail'), 'team_avatars');

js($scripts = array(), $attr = array(), $group = NULL, $raw = false)

js メソッドは、javascript ファイルを名前付きグループに追加する、デフォルトグループに追加する、script タグを返すのいずれかを行います。

静的 はい
パラメータ
パラメータ デフォルト 説明
$scripts 必須 javascript ファイル名の配列/文字列。これはグループに追加されるか、タグまたはインラインの javascript 文字列として返されます。
$attr
array()
javascript ファイルに適用されれる属性の配列
$group
null
javascript ファイルをカテゴリ化するグループ名。null が指定されたら script タグを返します。
$raw
false
true が指定された場合、結果の script タグは src 属性でファイルを指定する代わりに、javascript ファイルの中身を直接 HTML に展開したものになります。
返り値 生成されたアセット文字列。グループが指定された場合は現在のインスタンス。
// $raw が false の場合は '' が返る
Asset::js(array('jquery.js', 'jqueryui.js'), array(), 'jquery', false);

/* 以下を返します
 * <script type="text/javascript">
 * var menu = getElementById('menu');
 * menu.initialize_menu();
 * </script>
 */
echo Asset::js('menu_init.js', array(), null, true);

/* 以下を返します
 * <script type="text/javascript" src="../assets/js/jquery.js"></script>
 * 設定ファイルの auto_render が true の場合。
 * それ以外は、アセットは後でレンダリングするためにデフォルトグループに追加されます。									
 */
echo Asset::js('jquery.js');

/* 以下を返します
 * <script type="text/javascript">
 * var menu = getElementById('menu');
 * menu.initialize_menu();
 * </script>
 */
Asset::js("var menu = getElementById('menu');\nmenu.initialize_menu();", array(), 'inline', true);
echo Asset::render('inline');

/* 上記と同様 */
echo Asset::js("var menu = getElementById('menu');\nmenu.initialize_menu();", array(), null, true);

get_file($file, $type, $folder = '')

get_file メソッドを用いると、アセットファイルの URL を取得することができます。

静的 はい
パラメータ
パラメータ デフォルト 説明
$file 必須 取得したいアセット名
$type 必須 検索するアセットタイプ。'img', 'css', and 'js' がサポートされています。
$folder
''
オプションとして、アセット検索パスに追加するサブフォルダー名を渡すことができます。
返り値 完全な形のアセット URL (base_url が定義されているかどうかに依存します) 。見つからなかった場合は false 。
// 'http://example.org/assets/js/jquery.js' のような形式の何かを返します。
echo Asset::get_file('jquery.js', 'js');

remove_path($path, $type = null)

remove_path メソッドは、渡されたパスをグローバルアセット検索パス配列から削除します。 $type が指定されていたら、そのタイプの検索パスより削除します。

静的 はい
パラメータ
パラメータ デフォルト 説明
$path 必須 アセットパス配列から削除するパス
$type
null
削除されるアセットタイプ。現在のところ 'img', 'css' and 'js' がサポートされています。 複数の検索パス配列から削除したい場合は、それらを 1 つの配列にして渡します。
返り値 現在のインスタンス
/*
 * グローバル検索パスから削除します
 */
Asset::remove_path('resources/template_1/');
Asset::remove_path('resources/template_2/');

/*
 * それぞれのアセットタイプからそれぞれパスを削除します
 */
Asset::remove_path('assets/global/', array('css', 'js', 'img'));
Asset::remove_path('assets/icons/', 'img');
Asset::remove_path('assets/images/', 'img');
Asset::remove_path('assets/css/', 'css');

/*
 * メソッドチェーン呼び出しもできます
 */
Asset::remove_path('resources/templates/dark/')
	->remove_path('resources/templates/light')
	->remove_path('resources/templates/brown');

render($group = null, $raw = false)

render メソッドは、アセットグループを処理してタグを返します。 グループが指定されなかった場合は、デフォルトグループが処理されます。

静的 はい
パラメータ
パラメータ デフォルト 説明
$group
null
処理するグループ名。null の場合はデフォルトグループ。
$raw
false
true の場合は css/js ファイルの中身が組み込まれた形でタグが生成されます。
返り値 string
/* 以下を返します
 * <link href="../assets/css/header.css" rel="stylesheet" />
 * <link href="../assets/css/footer.css" rel="stylesheet" />
 */
echo Asset::render('layout');

// デフォルトグループが処理されます
echo Asset::render();