分ヘルパーとはCakePHPにはビューの処理を効率化するための「ヘルパー」と呼ばれる機構があります。ビューの一部を部品化して再利用するだけであれば「エレメント」を使用する方法あります。エレメントは本連載の第8回で使用しています。ヘルパーを使う機会ヘルパーを作る機会は,絶対数的には少ないです。いうのも,ビューの効率化はエレメントで事足りることが多いからです。第8回では使用していませんが,renderElementメソッドには引数を渡すこともできるので,関数呼び出しのように引数を付けてエレメントを使用することが可能です。エレメントはベタのphpファイルなので,とてもシンプルでデザイナーフレンドリーなことも強みです。それでもヘルパーの作り方を学ぶことは良いことです。その理由は,ビュー内での複雑な計算や,コードの重複がいくつも発生するときなどにヘルパーが適しているからです。ヘルパーの本体はPHPのクラスであり,メソッドなどを自由に作れるので,効率的に記述できます。エレメントの場合,classやfunctionを作ることは想定されていないため,順次実行的にしか記述できません。有志が公開している便利なヘルパーを使用する際,ヘルパーの作り方を知っていれば,マニュアル以上の理解を得ることができます。本記事ではCakePHP1.1系でのヘルパーの作り方を解説します。設置場所ヘルパーは通常,1ヘルパー1ファイルで記述します。ファイルはapp/views/helpers/ディレクトリ内に設置します。helpersディレクトリがなければ,自分で作成してかまいません。app/views/helpers/ディレクトリ内にはヘルパーファイルのみが格納されます。クラス名・ファイル名の命名規則ヘルパーは1つのクラスとして定義します。クラス名は「ヘルパー名のCamelCase(単語の頭文字が大文字)+Helper」です。ファイル名はヘルパー名を小文字で,単語をアンダースコアで区切り,拡張子をphpとします。「GihyoCommon」ヘルパーは,以下のようになります。GihyoCommonHelperクラスapp/views/helpers/gihyo_common.phpクラス定義GihyoCommonヘルパーのクラス定義は以下のようになります。CakePHPコアで定義されたHelperクラスを継承します。{}このクラスに自由にプロパティやメソッドを作成してビューから呼び出すことができます。URLを返す機能を実装してみます。AUTO_OUTPUT定数の設定よって,出力するか,文字列で返すかが決まるメソッドです。出力するか返り値にするかは動作としてはまったく別物です。返り値にしておくと,値を使って何かをしたいときに対応し易いです。出力にしておくと,echo文などが不要になるので記述が少なく済みます。どちらが良いかは,状況やお好み次第でしょう。AUTO_OUTPUT定数はfalseで,返り値になる前提で解説します。このGihyoCommonヘルパーを使用する場合のコントローラの例が以下になります。}}ヘルパーの使用において直接的に関係するのは以下の1行です。array('GihyoCommon');この行で,GihyoCommonヘルパーを使用することを定義しています。使用したいヘルパーがあるとき,コントローラの$helpersプロパティにヘルパー名の文字列を配列で定義します。次に,GihyoCommonヘルパーのgetIndexUrlメソッドを使用するビューの例です。?>ビュー内では,ヘルパークラスのインスタンスが,ヘルパー名の頭文字が小文字の変数名で定義されています。コントローラやモデルとは異なった規則なので注意が必要です。ヘルパー内から別のヘルパーを使用したいときはヘルパーからは別のヘルパーをそのまま使用することができません。最初から定義されているhtmlヘルパーも使用できません。ヘルパー内から別のヘルパーを使用するには,準備が必要です。以下のように,ヘルパークラス内で$helpersプロパティに使用したい他のヘルパーを定義してください。$thisの中にインスタンスが定義されます。定義されたインスタンスはビューの中で定義されているものと同じですので,ビューと同じように使用できます。ヘルパーの基本的な知識は以上です。うまく使えばビューのコード量や複雑さを軽減することができますので,ぜひチャレンジしてみてください。個人ブログは「akiyan.com」。『PHPライブラリ&サンプル実践活用[厳選100]』,Kindleストア・楽天Koboにて販売開始。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。