読者です 読者をやめる 読者になる 読者になる

かまずにまるのみ。

文鳥とかビールとか

はじめてのBEAR.Skeleton (1)

"はじめての"チュートリアル を見ながら BEAR.Sunday で何か作ってみる。
Sandbox にある Blog アプリケーション的なものがいいだろうか。

f:id:tdakak:20130520165236p:plain
※ ベア吉は BEAR.Sunday のマスコットキャラクターです

自分のスペック

  • Web システム開発を何年かやってる
  • 世の中のフレームワークに関する知識は浅め
  • ソフトウェア工学?何それおいしいの?
  • BEAR のチュートリアルはひととおり見たけどいまいち飲み込めてない
  • でも BEAR や BEAR を構成する技術に興味がある!もっと知りたい!

開発環境

  • Mac OS X (Mountain Lion)
  • PHP は 5.4.10 (php-build + phpenv で構築)
  • PhpStorm 使用
  • PHP のビルトイン Web サーバを利用

つくるもの

  • メモ管理できるアプリケーション
    • GET / POST/ PUT/ DELETE がある
    • お手本としてほぼ同じ要件のアプリ(Blog)が Sandbox にある
  • BEAR.Skeleton を使用


 

準備

BEAR のスケルトンを使ってみる。
koriym/BEAR.Skeleton · GitHub

README.md に書いてあるコマンドを実行すればかんたんに入れられる。
yourAppName のところは今回「Memo」にした。
Composer べんりですね。

BEAR.Skeleton を入れた後、ビルトイン Web サーバを起動。

$ php -S localhost:8088 apps/Memo/public/web.php

ブラウザから localhost:8088 にアクセスしてみる。
↓こんな感じの画面が表示されれば成功。

f:id:tdakak:20130520165247p:plain

 

リソース?

BEAR.Sunday はリソース指向のフレームワーク
WEB+DB Press vol.73 に掲載された「巨人の肩から PHP - BEAR.Sunday で RESTful なシステム開発」にもあるとおり、BEAR.Sunday には以下のようなリソースが用意されている。

  • ページリソース
    • Web ページと直接結びつくもの
  • アプリケーションリソース
    • Web ページと切り離されたシステム内部の機能と結びつくもの

 

ページリソース

/index へのリクエストにはどのリソースがどんな風に使われるのだろうか。
Web ページと結びついているのはページリソース。
ページリソースのファイルは Resource/Page/ 以下にある。

f:id:tdakak:20130520165255p:plain

bear/apps/Memo/Resource/Page/Index.php

<?php
namespace Blog\Resource\Page;

use BEAR\Resource\AbstractObject as Page;
use BEAR\Sunday\Inject\ResourceInject;

/**
 * Index page
 */
class Index extends Page
{
    use ResourceInject;

    public function onGet($name = 'BEAR.Sunday')
    {
        $this['greeting'] = 'Hello ' . $name;
        return $this;
    }
}

bear/apps/Memo/Resource/Page/Index.tpl

{extends file="layout/default.tpl"}
{block name=title}Index{/block}
{block name=page}
    <h1>{$greeting}</h1>
{/block}

Index#onGet や index.tpl を適当に書き換えてブラウザから /index にアクセスしてみると、 Index#onGet が GET リクエストを処理しているのがよく分かると思う。

 

オンラインエディタ

開発モードだとソースコードのオンライン編集が可能。
以下のアイコンをクリックするとエディタが開く。
編集して SAVE し、Web ページをリロードすると変更内容が反映されている。

f:id:tdakak:20130520173840p:plain
f:id:tdakak:20130520173849p:plain

Index#onGet はパラメータとして $name を受け取る。
/index?name=hoge でアクセスすると、 greeting のメッセージが "Hello BEAR.Sunday" から "Hello hoge" へ変わることも確認できる。

Index#onGet で $this に追加した要素は index.tpl で変数として使える。
以下のアイコンでリソースの状態を見ることもできるので、$this に要素を追加したり変更したりして確認してみるとおもしろい。

f:id:tdakak:20130520173836p:plain

 

ドキュメント

ページリソースについては はじめてのWebページ を見ると楽しい。

 

次回へつづく(たぶん)

# 間違いやお気づきの点などありましたら、ツッコミいただけると嬉しいです。
# べあ吉ネタ → id:futurista999 さんありがとうございます。