FuelPHPを使ってみよう 号外 “作ってみた編”

おはす!

どうも、じゅじゅいちです。

さて、FuelPHPシリーズの流れですが、今回は途中経過っぽいことを書いていきます。ここで散文的に書いたことは後ほど項目別にまとめて記事にする所存です(予定は未定)。適度に書いておかないと後で書く気がなくなりますので書き散らします。

FuelPHPについてネットやマニュアルだけで情報を仕入れるのは流石に限度がありましたので、先日私はこの「FuelPHP入門」という書籍を購入いたしました。現在2周ほど読みましたが、FuelPHPの理解の助けになりましたね(ステマ)。

しかし文字通り入門ということで基本的な知識は大変有益ですが、実践には物足りなさがあります。やはりプログラムを知るにはとにかく作ってみることが肝要だと思うのです。そこで以前PHPで作成した「ライブ情報」(2024.12.24削除済み)をリメイクしていこうと思いました。こちらはフレームワークも使っておらず手作り感満載ですね。

FuelPHPでリメイクしたものが「ヲタ活支援サイト」(2024.12.24削除済み)です。ちょっと名前が変わりましたが、ほぼ機能的には一緒です。こちらはまだ未完成なので、今後もちょこちょこと修正していこうと考えています。

さて、実際に画面を見て頂いて苦労話をしたいと思います。

1.トップ画面


トップ画面が今回新たに追加されました。目玉は動画表示ですね。

この動画は登録している動画の中からランダムで選ばれるものです。YouTubeやニコニコ動画を埋め込んでます。また、USTREAM番組などは放送中に優先的に表示されるようになっています。

下の項目はライブがあればライブ情報を表示したり、誕生日のメンバーがいればメッセージが表示されます。

技術的に特段何もない画面ですね。ただ、USTREAMの埋め込みタグのURL部分がやや不明です。ライブ配信していないときに録画配信しているとライブ配信のURLが不明なのでライブ配信まで待つ必要がありますね。もしくは、ソース表示するとhiddenにURLが入っているのでそれを使うとかですかね。以下の形式がライブ配信用のURLと思われます。

http://www.ustream.tv/embed/(数字7桁くらい)

2.ライブ一覧画面

メインとなるライブ一覧画面です。こちらは機能的にはリメイク前と何も変えたところはありません。

ここで一番苦労したところはページネーション、即ち改ページですね。改ページが簡単にできるページネーションクラスがあるのでそちらを利用しました。しかし単純なリスト表示ならいいのですが、検索条件をつけて一覧の表示内容を変える場合は苦労しますね。リメイク前はGETで検索条件を持ちまわっていたのですが、ページネーションはそこまで対応していないのでセッションに検索条件を入れて持ちまわる方法にしました。それに伴いどのタイミングでセッションを破棄すればよいかも悩みどころでしたね。複雑な一覧画面になるとページネーションクラスを使わないで自前でガリガリ書いていった方が早いかもしれません。

あと都道府県選択のところはまったくリメイク前と流用なのです。苦労した割には使われない機能なので皆様一回は使ってください。

3.ライブ詳細情報画面

ライブリストの各タイトルからリンクされているのがこちらのライブ詳細情報画面です。

ただDBから値引っ張ってきているだけですね。敢えてGETでクエリーしているのはURLを貼り付ければこの固有ページに飛べるようにとの配慮です。

4.カレンダー画面

ライブ一覧をカレンダー形式にして表示した画面です。カレンダー表示ロジックは流用です。リンクからライブ詳細情報画面に遷移します。こういう画面ってViewでカレンダー表示の制御をやったほうが良いのかControllerに書いたほうが良いのか悩みました。Controllerに書きましたが。

5.ブログ速報画面

登録してあるブログのRSSを読みに行って表示してます。ライブラリ使っているだけです。こういう公開できるRSSリーダーって案外無いんですよね。意外に便利だと自負しています。

6.お知らせ画面

ここは少し変えたところです。

オリジナルの時にライブ情報以外にも表示させたいなと思い突貫でつけたものでした。情報が不定形なのでテキストファイルを読み込ませる形だったのですが、今回DBから読み込む形にして一覧・詳細画面という構成に変えました。一覧画面でページネーションを使っていますが、検索がないのでそのまま改ページがスムーズに使えます。

7.お知らせ詳細画面

新規画面です。お知らせの詳細を表示させてます。URLを一つだけ表示できます。

8.TIPS

8-1.ereg非推奨

PHP5.3からeregが非推奨になったみたいです。preg_matchに置き換えましょう。

if(ereg(“/”,$return))

if(preg_match(“(/)”,$return))

8-2.サーバーアップ時

fuelphp以下のディレクトリにdocs,fuel,publicがありますが、公開ディレクトリに置くのはpublicのみにした方がセキュリティ的に良いです。docsはドキュメントなのでそもそも上げませんが。

fuelディレクトリは非公開ディレクトリに置きます。

そしてpublicディレクトリのみ公開ディレクトリに置くのですが、非公開ディレクトリに置いたfuel以下のapp,core,packagesのディレクトリを指し示す必要があります。

public/index.phpの以下3点を変更します。

define('APPPATH',realpath(__DIR__.'/../fuel/app/').DIRECTORY_SEPARATOR);
define('PKGPATH',realpath(__DIR__.'/../fuel/packages/').DIRECTORY_SEPARATOR);
define('COREPATH',realpath(__DIR__.'/../fuel/core/').DIRECTORY_SEPARATOR);

このrealpathの中身を
realpath(‘/home/ユーザー/ディレクトリ1/fuel/core/’)
みたいにそれぞれ指定してあげればよいと思います。

8-3.URL指定

post先とかjs,css,imageとかのURLは相対指定はやめたほうがよさげです。js/css指定はAsset::js()/Asset::css()を使います。あとアンカーはHtml::anchor()を使いましょう。

9.おしまいにゃ

というわけで、さらに精進してまいります。

それではまた。

コメント