2015.3.14
0からはじめるPHP#24【MySQLで作るコメントフォーム#3-bake-】
やべえよ3月ももう半ばだよ・・・・・・
ということで、さすがに焦りはじめたのでプログラミングをぼちぼち。
先日アプリ作りたいとかいう話をした直後に戻ってくんのかよって感じですが、ろんぐさんは意思が弱いのです。
伊達に留年してません。(何)
まぁある程度はモチベーションに合わせた方が良かったりするんですよたぶん。
英語話せるようになってアメリカ住めたら面白そうだなみたいな理由で英語の勉強を始めたんですが、これがとても楽しくてですね。割と自主的に英語の勉強をしてるんですよここ最近。何回か話してますけど。
高校時代に英語アレルギーを発症していた人間とは思えないなぁと我ながら思ったりします。興味は原動力になるのです。それと同じ話です。やる気のない時に何かやろうとしても無駄なのですよ。
と、
うまい感じに言い訳もしたところで本題に入ります。
もう一ヶ月前の話になりますが
前回CakePHPという
フレームワークを用いてプログラムを書こう、という話になりました。
時間さえかければ巨大なシステムや、データベースとの連携も可能なスキルを身につけましたが、そんなもの一からコーディングするのは大変です。
バグの温床です。
100行のソースコードを書くのと1行の致命的バグの修正が大体同じぐらいの時間がかかると思っているのですが、そんなもの多発するシステムを1から作るなんてやってられません。
ということで、既にできあがってるシステムを改造して使うフレームワークという技術を使うことになったのでした。
で、これで何をするかですね。まずは
コメントフォームの管理画面を作りたいと思っています。
具体的な機能としては、送られてきたコメントのデータベース検索ですね。投稿日時順に並び替えるとか、年月や投稿者で絞り込むとか、そういったクエリを投げられるようにしたいなと。
あとは僕が使っていて便利だなと思われるような機能の追加ですね。コメントのコピペ機能とかをjavascriptなんかで差し込めば作れます。これはおそらく簡単です。
実際、これぐらいなら手打ちで作ったほうが早いんじゃないかって気もしますが、ページネーションとかその辺の仕組みを考えるのがめんどくさそうだなぁとか思ったりします。
ただ、将来的にはもう少し規模の大きいデータベースを扱いたいので、簡単なものでフレームワークに慣れたいなと。
さて、cakePHPには
bakeという機能がありましてね。
cakeにちなんで、焼くという意味のbakeですね。これで生地を作って焼くようにプログラムを作っていくわけです。
これを使えば、動作に必要なモデル・ビュー・コントローラーという3つのプログラムを生成することができるのです。これがシステムの基盤になります。
具体的な使い方は色んなとこに解説が載ってるのでそちらを参照してもらえればと思うのですが、このbake・・・・・・
Windows環境だとパスを通さないと使えないんですよ。
MacやLinuxだとどうなのかは知りません。
コマンドプロンプトを起動して、以下の命令を送ります。
cd C:\xampp\php
C:\xampp\php >SET PATH=%PATH%;%CD%
|
これでxamppのphpにパスが通ります。この値が何を意味してるのかはよく分かりませんが、これでphpがどのフォルダにいても実行できます。
phpはサーバーありきのファイルなのでそのままだと実行できず、そのサーバーであるxamppに送ることを明示しとかないといけないってことなんですかね?別に調べたワケじゃないのでたぶんもっと違う理由で使えないんでしょうけど・・・・・・
で、これだけだとまだ動きません。
実行する側のbakeにもパスを通す必要があります。
|
C:\...\console>SET PATH=%PATH%;%CD%
|
で、こうした後に
カレントディレクトリを「app」フォルダに移動した後に・・・・・・
と入力すると、bakeプログラムが動くわけです。
こんなんが出力されたら成功です。
新しいもの作る度にこれやんのか・・・・・・って感じなんで、もう少しいい方法があるのかも知れません。ただ、一番簡単なのがこの方法だと思うので・・・・・・たぶん・・・・・・。
ちなみに、僕の環境がおかしいのかも知れませんが
コマンドプロンプト起動する度にcakePHP側はパスを通さなければなりません。
一体どういうことなんでしょう。僕にはよくわかりません。SET PATHって環境変数に代入してるワケじゃないのか・・・・・・?
これでモデル、コントローラー、ビューの順番に作っていきます。具体的な作り方は色んなサイトで説明されてますし、そんなハマるようなとこじゃないので省略です。
ビューはコントローラーが作られてないと生成できないので最後に。
で、最後に
app/Config/core.phpの200行目付近のセキュリティソルトとサイファーシードを変えときましょう。デフォルトのまま使うのは危険なので。
別にこの値は好きに設定できるんですが
ランダム生成してくれるサイトもあるのでこちらを利用しても良いでしょう。めんどくさいので。
設定が終わりましたら
localhost/(cakePHPのフォルダ名)/(データベース名)sにアクセスしてみましょう。最後のsを忘れずに。
こちらにアクセスすると、index()メソッドが呼び出されて、こんな感じの画面が自動生成されるわけです。便利ですね。
で、これをそのまま管理画面として使おうと思えば使えるわけです。
例えば左側の画面のActions欄に
New Commentというボタンがあるのですが、それをクリックするとaddメソッドが呼び出されますし・・・・・・
それぞれのタプル(行)の右側にはView,Edit,Deleteという欄がありますが、これらを選択すると、またそれぞれのメソッドが呼び出されます。
cakePHPの基本的な使い方としては
bakeでこのような基盤を作り、これを改造していくという使い方をするようです。
これらの機能を手打ちで作るのはなかなかに大変ですが、土台だけでも作ってくれるのはとてもありがたいです。あと、セキュリティ対策とかも勝手にやってくれますからね。こーいうのはプロに任せた方が安心です。
まぁ、適切な運用をしなければそれも無駄になってしまうんですけどね。結局は勉強しなくてはならないんですが・・・・・・。
このままでももちろん使えるのですが、それだと面白味がないので、ここからどのようにして作っていくのかってのを今後の連載では追っていきたいなと思います。
例えばaddやdeleteなんかは基本的には使わないので画面から消してしまいましょう。一応念のためにメソッドだけは残しときますけど・・・・・・。でもphpMyadminで事足りるんですけどね。
あと、ちょこまかした追加機能と、あとデフォルトのままのビューだとつまらないので、もっとシンプルにスタイルシートを書き換えましょう。
今まで使っていたコメントフォームのログページはこんな感じになります。とりあえずこれに似せて作ろうかなぁなんて思ってます。
多分foreach文かなんかで簡単につくれます。ページネーションはよくわかんないですけど多分なんとかなりそうです。
めんどくさそうなのはクエリを投げる検索ですかね?あ、面白そうだから名前の横にコメント投稿回数とか載せても面白そうですかね。でもテーブルとして保存しないでデータベースからいちいち計算してると処理が重くなりそうなのでやめた方がいいかな・・・・・・。
などと色々考えながら作っていきましょう。