PHP開発をささやかに支援するSublime Text Pluginを作ってみました。
みなさんこんにちは。
ここのところPHPばかり書いている玉木です。PHPは嫌いな人も多いと聞きますが、私は好きですね。プログラムはとりあえず動けばなんでもいいという私に向いています。まあ、PHP嫌いの人ってこういう考え方が許せないんでしょうけど。
さて、そんなにわかPHP好きの私もCakePHPのArray地獄だけはメンタルに来ますね(CakePHP自体はお手軽でいいですね)。あれはああいうものなのでしょうか?何か良い書き方があるのでしょうか?setを使えとか書いてあるけど、あまりピンときませんでした。
PHPのArrayの何が辛いってC#とラムダ式に飼いならされた私には、配列を定義するときに使う=>を見るたびにラムダ式を思い出し「C#(ラムダ)だとこう書けるのに!!!」といちいち思考が停止してしまうことです。
せっかくPHPという新しい彼女と付き合い始めて、「なんとかやっていけそう」と思ってはみたものの、新しい彼女のちょっとした癖が元カノ(C#)と似ていて、その都度いやおうなしに元カノを思い出してしまい、ぼーっとしていると今カノに「ねえ、私の話し聞いてる?」とか言われ、ハッと我に帰る感じでしょうか。
さて、本題です。
PHPでWeb開発をしていると、
- 1)HTMLのFormで値を投げる
- 2)$_GET, $_POSTとかで受け取る(htmlspecialcharsでくくる)
- 3)DBに書き込む(とりあえずPDO)
というのを繰り返しますよね。変数が少ないといいのですが、多くなってくると死にたくなります。さらに、テーブル定義をExcelで作れとかいわれると、やる気は限りなく0です。まあ、これを低減するにはフレームワーク使ってことでしょうけど、それもいちいち大げさですよね。
というわけで、上記のようなワークフローの負荷を低減する(つもりの)Sublime Textのプラグインを作りました。死にたい気分も2割減です。
ここに置きました。
しかし、PHP用のプラグインをPythonで書くという矛盾はなんとも言えませんね。今カノ(PHP)のことを、すごい美人で性格のいいの友人(Ruby)に相談してみるも、相談するうち「この人とつきあったほうがいいのではないか?(付き合ってもらえるかは別)」と思っちゃう感じでしょうか。
さて、簡単な使い方(Readme.mdさえ作ってません。すみません)。
1)プラグインをPackagesフォルダにコピー
ここからダウンロードして、フォルダをtamasubにリネーム。それをPreference->Browse Packagesで表示されるフォルダにコピー。もちろんgit cloneでも可。暇になったらPackage Controllerに対応したいなと(誰かやって)。
2)Excelでテーブル仕様を書く
こんな感じでしょうかね。書いた範囲をコピーします。auto_incrementなどのオプションがある場合は、それもカラムを分けて書きます。ExcelじゃなくてLibre Officeでもいいです。というかTextエディタでスペース区切りでもいいです。
3)Sublime Textのペースト
とりあえずSublime Textにペースト。そして、ペーストしたエリアを選択します。
こんな感じ。このとき、テキストが無い行を選択しないほうがいいです。
4)プラグインのコマンドを呼び出す
コマンドパレット(command + shift + p)を開いて、使用したいコマンドを選びます。"tama"というprefixがついてますので、tamaと打てばいろいろ出てきます。ここでは、「tama set CREATE format」を選択してみましょう。ここでコマンドが出てこない場合は、一度、ペーストしたファイルを保存してみてくださいな。
すると、下のコマンドウインドウ?が開き、table name:を聞いてくるので、例えばTESTと入力します。
エンターを押すと、CREATE TABLE文が生成されます。あとは、これをmysqlコンソールにペーストするだけ。めでたしめでたし。
5)他のコマンドも使ってみる
他のコマンドは、パラメータを列挙するだけで使えます。Excelからパラメータ名のところだけペーストするか、Sublimeでパラメータリストを書きます。
あとは、先ほどと同じ要領でコマンドを実行するだけ。
・Formの生成(これはあまり使い物にならない。hiddenの生成もあります)
・$_GET, $_POSTの受取
・INSERT文の生成(テーブル名入れてね)
とまあ、こんな感じ。他にもありますが、適当に使ってみて下さい。
まあ、プラグインをどうぞというより、プラグインソースをいじっていろいろ自分の環境にあったプラグインに作って下さいということで。というか、同じようなプラグインがもう存在してるのでは?と思ったりもしますが。
ではでは。