2012年12月13日木曜日

Zend Frameworkでつくるソーシャルゲーム 第4回 Zend_Application_Resource_Db

毎度どうも佐藤です。

Zend Frameworkでつくるソーシャルゲーム第4回まできました。

ブログで書いたシリーズ物では最長ではないでしょうか(爆)

今回はZend FrameworkからDBを利用できるようにします。
ここみたら終わりますが→利用できるリソース-Zend Manual
それはそれという事にして始めましょうか。

まずは設定ファイルをiniからymlに変更します。

(個人的にiniよりymlが好きなので)

NetBeansから編集していきますよ!

iniをいじる前にindex.phpを変更します。(別にどっちからでもいいんですが)

23行目あたりのZend_Applicationをインスタンス化しているところにiniファイルを指定しているところがあるのでそこをymlに変えます。
//public/index.php
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.yml'
);


index.phpはこれで終わりです。CTRL+Sで保存しておきましょう。

次は「application/configs/application.ini」を編集します。

まずはapplication.iniを右クリックして拡張子をymlに変更します。

それから当然中身も書き換えなければならないのでyml風に書き換えます。
CTRL+Hとかうまく使ってささっと書き換えてください。
これを
;application/configs/application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1



こんな感じにします。
#application/configs/application.yml
production:
  phpSettings:
    display_startup_errors: false
    display_errors: false
  includePaths:
    library: APPLICATION_PATH/../library
  bootstrap:
    path: APPLICATION_PATH/Bootstrap.php
    class: "Bootstrap"
  appnamespace: "Application"
  resources:
    frontController:
      controllerDirectory: APPLICATION_PATH/controllers
      params:
        displayExceptions: false

staging:
  _extends: production

testing:
  _extends: production
  phpSettings:
    display_startup_errors: true
    display_errors: true

development:
  _extends: production
  phpSettings:
    display_startup_errors: true
    display_errors: true
  resources:
    frontController:
      params:
        displayExceptions: true



参考
Zend_Config_Yaml

書き換えが正常にできたか確認

これでまずは実行してみてください

余分なスペースとかインデントにタブ使ったりするとエラーがでたりします。
:の前にスペースはいってたらダメで5分ハマリました。
前回と同じくWelcome to the Zend Framework!が見えてればミスはないと思われます。
もしエラーがでてたらZendServerのMonitor→LogsとかからPHPエラーログあたりを見て原因をさぐり修正してください。
多分今のところスペルミスとか、無駄なスペースが・・・とかインデントが・・・とかよくあるケアレスミスだと思います。

DBの設定をymlに記入

表示できたらresourceのところにdbの設定を追記します。
※今動作しているlocalのサーバはこのブログの通りならdevelopmentですが、developmentはproductionの設定を継承しているのでどちらの箇所でも大丈夫です。

resources:
    db:
      adapter: Pdo_Mysql
      params:
        dbname: dragonfantasy
        username: dragon
        password: fantasy
        host: localhost


とかいう具合に。
追記したらまた実行して書き方にミスが無いか確認します。

コントローラからDBを呼び出す

正常なら「application/controllers/IndexController.php」を編集します。
indexAction()でDBからデータを取り出してみます。
public function indexAction()
    {
        $db = $this->getInvokeArg('bootstrap')->getPluginResource('db')->getDbAdapter();
        $db->query('set names utf8');
        $res = $db->fetchRow('select id,name from dfaccount where id=1');
        Zend_Debug::dump($res);
    }


どうでしょうか?DBから正常にデータを取り出せましたか!?
できなかった方は画面やlogファイルに書かれたエラーメッセージを元にがんばってみてください!
最後眠くなって来てたので何か書き間違えたかもしれないけれど・・・(ぇ
何か突っ込みどころがあれば気軽にコメントください。

Zend Frameworkでつくるソーシャルゲーム-第3回 DBの設定

二日目に続きました。おめでとう俺。

Zend Frameworkでつくるソーシャルゲーム

第3回はDBの設定です。


MySQLのユーザの作成とテスト用テーブルの作成までやります。

まずはユーザの作成です。

MySQL Workbenchを起動します。
ZendServerと一緒にMySQLがインストールしてあれば、既にworkbenchの方でコネクションが設定されていると思います。
rootでパスワードなしで接続可能な状態になっているはずです。
ローカルでしか動かしてないうちはあまり問題無いとは思いますが、念のためrootにパスワードを設定し、さらに開発で使うユーザを作成します。
ServerAdministrationからLocal_MySQL_Zendserver51とかそんなのをダブルクリックして接続します。
Users and PrivilegesからAdd Accountでユーザを追加します。
設定例

まずLoginタブ

Login Name:dragon
Limit Connectivity to Hosts Matching:localhost
password:fantasy

次にAdministrative Rolesタブ

DBManagerにチェックいれる
Applyボタンを押して完了

開発用DBの作成

ユーザーの追加が完了したらそのServerAdministrationのタブを閉じて、New Connectionから先ほど作ったユーザーで接続しましょう。
接続したら左上の左から3番目のアイコンをクリックして(Create a new schema in the connected server)開発用のDBを作りましょう。
name:dragonfantasy
collation:utf8-utf8_general_ci
Apply
Apply
Finish!

テーブルの作成

ついでにテスト用にテーブルを作っておきます。
できあがったDBのアイコンをダブルクリックしてTablesのところを右クリック→Create table
table name:dfaccount
collation:utf8-utf8_general_ci
engine:InnoDB
Columns
id int PK NN AI
name varchar(45) NN
という感じで適当に。

テスト用データの挿入

テーブルが作成できたらテーブルを右クリックしてedit table dataからテスト用データをいれておきます。
nameだけいれてapplyすればOKです。
idはAIにチェックを入れ忘れてなければ自動ではいります。

とりあえずMySQL側の準備はこれで完了です。
意外と長くなったので続きは第4回にします。

2012年12月11日火曜日

Zend Frameworkでつくるソーシャルゲーム-第2回 プロジェクトの作成


第2回 Zend Frameworkのプロジェクトの作成


連載第2回ですが、書いているのは同じ日です。
今回はプロジェクトを作成してブラウザでインデックスページを見るところまでです。


まずはZendFrameworkを入手しましょう。


あ、ちなみに私の開発環境はWindowsXPでございます。
その他環境の方は適宜脳内変換をお願いします。
何かお気づきの点などありましたら気軽にコメントください。

はい、ではこちらからZend Server CE (PHP 5.3)をダウンロードしてインストールします。

インストールする時にApacheとMySQLも一緒にいれましょう。
Apacheはデフォルトで入るっぽいですが、MySQLはデフォルトでは入らないっぽいのでチェックボックスにチェックいれてください。

インストールが完了したらNetBeansを起動します。

起動したら新規プロジェクトを作成します。

ファイル→新規プロジェクト→PHPアプリケーション(新規作成)で次へ
プロジェクト名は半角英字で適当に。
ソースフォルダはcドライブ直下とかで日本語パスは避けておきましょう。

  • プロジェクト名:DoragonFantasy
  • ソースフォルダ:c:\dev\DragonFantasy
  • PHPのバージョン:5.3
  • デフォルトエンコーディング:UTF-8
  • NetBeansのメタデータを別のディレクトリに配置にチェックいれて「c:\dev\DragonFantasyBeans」

とかいう具合で次へ

  • ローカルWEBサイト
  • http://dragonfantasy.local/
次へ

最後にZend PHP Web Frameworkにチェックいれて完了です。

すると、あら不思議!プロジェクトファイルができあがっているではありませんか!!
いやー便利ですね。このブログ書いたおかげで今知りました。
NetBeansさんはプロジェクトの作成までやってくれるんですね。
いたれりつくせりだわー知らなかったー。

それではこれを実行してみましょう。
と言いたいところですが、まだ設定が2つほど終わっていません。

一つ目はApacheの設定です。

WIN+Eでエクスプローラを起動します。
ZendServerのインストールフォルダの中のetc\sites.dフォルダを開いてエディタで「vhost_doragonfantasy.local.conf」というファイルを作成します。
(vhost_という文字で始まるところがミソです)
(デフォルトでのパスはC:\Program Files\Zend\ZendServer\etc\sites.dになるはず)
NetBeansに一旦戻りdocsのREADME.txtを開き
<VirtualHost *:80>から</VirtualHost>までをコピーして先ほどのファイルに貼り付けます。
ServerName .localServerName dragonfantasy.localになおして保存します。
保存したらタスクトレイの再生ボタンがついたようなApacheのアイコンをクリックしてRestartしてください。

そして二つ目、hostsファイルを書き換えます。

エクスプローラでC:\WINDOWS\system32\drivers\etcを開き、hostsファイルを開きます。
127.0.0.1       localhost
と書いてある部分がありますね?
そこに「 dragonfantasy.local」を書き足して
127.0.0.1 localhost dragonfantasy.local
と変更して保存します。
これで設定が完了したのでNetBeansに戻り実行してみましょう。
F6を押すか、実行→プロジェクトを実行で実行します。
ブラウザが起動してZend Server Test Pageという文字が見えたあなた!おそらくApacheの再起動を忘れています!!
Welcome to the Zend Framework!という文字が見えたあなた!
おめでとうございます!正常にプロジェクトを作成し、設定を終えることができたようです!

それでは今回はここまで!
次回はDBへの接続です! 

Zend Frameworkで作るソーシャルゲーム-第1回 準備編

Zend Frameworkで作るソーシャルゲーム

と題して連載予定のこの記事は一体どこまで続くでしょう。
今までシリーズ物は完成したことがありません。
とりあえず今日は第1回 準備編です。
まずは私が使っているツールを紹介します。

すべてのツールに共通することですが、背景色が変更できるものは灰色にする。
白だと目が痛くなるから。

NetBeans

まぁ何かしらIDEは使った方が効率がいいと思うんですよ。
何しろスペルミスが減りまくるし、スペルミスが減るからね。
アレ結構気づかないでハマるじゃん?(汗
まぁあと色々便利なんでとりあえず使う。
別にNetBeansにこだわっているわけではないです。
eclipse?とかまともに使ったこと無いです。

EmEditor

まともなエディタならなんでもいいと思うけど、自分が使いやすいやつでね。ちなみに使用しているのは無料版ではないです。無料版でも十分使えると思いますが。teraPadとか秀丸とかでもいいんじゃないですか。

MySQL WorkBench

SQLがわかるなら便利だと思う。

TortoiseSVN

基本的にはNetBeansだけでも概ね問題ないと思います。

Poderosa

タブがいいんだ。きっと。

FTPとかブラウザ

FTPは基本的にNetBeansで済ませる。必要ならFileZilla
ブラウザは基本Firefox時々Chromeだけど、何向けの何を開発するかによるよね。
あとコピペツールとしてtomoclip使うかもしれない。
むしろ開発じゃない部分でよく使うかもしれない。