ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2008-06-30

Carbon Emacsのphp-mode.elとmumamo

かなり以前に「Carbon Emacsでmumamoとphp-modeをうまく連携できない」と叫んでいたが、なんとか解決できた。解決できたと言っても、「やっぱり、僕ってお間抜けね。てへ。」みたいな感じ。結論から言うと、本家のphp-modeを使ってはいたのが原因ぽい。あと、この記事で言及しているCarbon Emacsは2008年春版ね。 Carbon EmacsにはnXhtml modeが最初からインストールされていて、設定までがすんでいる。で、nXhtml modeにはmumamoに適応した、というよりもnXhtml modeに最適化されたphp-modeが入っている。ちなみに、nXml modeに付属しているphp-modeのバージョンは1.4.1-nxhtmlで本家で配布しているバージョンは1.4.0だった。 というわけで、自前の環境にあるphp-mode.elを読み込まずに、nXhtml modeに付属しているphp-mode.elを読み込むようにしたら問題は解決。mumamoも問題なく有効になって、幸せなphp開発環境が手に入りましたとさ。ちなみに、php-mode.elは1.4.0からmumamoなどの複数メジャーモードを1つのバッファで扱える環境を作っておかないと文句を言います。 自分のメモとして現状のphp-mode用の設定を書いときます。 ;; load from ~/site-lisp/php-mode.el ;(load "~/site-lisp/php-mode.el") (autoload 'php-mode "php-mode" "PHP mode" t) ;; phpでのアウトラインモード (outline-mode) (defun php-outline-level () (save-excursion (looking-at outline-regexp) (let ((title (buffer-substring (match-beginning 1) (match-end 1)))) (cond ((equal (substring title 0 2) "") 0) ((equal (substring title 0 6) "public") 1) ((equal (substring title 0 7) "private") 1) ((equal (substring title 0 8) "function") 1) ((equal (substring title 0 5) "class") 1) ((equal (substring title 0 2) "**") 15) (t (length title)))))) ;; PEARコーディング規約 (custom-set-variables '(php-mode-force-pear t)) (add-hook 'php-mode-hook '(lambda () (setq outline-level 'php-outline-level) (setq outline-regexp "^[ \t]*\\(<\\?\\|\\?>\\|public\\|private\\|class\\|function\\|/\\*\\*\\)") (outline-minor-mode t) ))

2007-08-29

そのケーキて美味しいの?

最近、cakephpというphpのフレームワークと戯れている。元々、phpのフレームワークには興味があったのだが、フレームワークを使う理由というのが今ひとつなかった。使う理由はなかったが、自分の中で「フレームワークを使うべきでない理由」というのは存在していた。「フレームワークを使うべきでない理由」というのはフレームワークを使いだすと、フレームワークにべったりになってしまい、結果としてphpプログラミングの本質やフレームワークを使えない環境での仕事ができなくなるのではないかという危惧があった。とくにapache httpdのmod_rewriteを使うようなフレームワークでは、サーバ側でmod_rewriteに対応していなかったり、mod_rewriteを嫌う人間が管理しているサーバなどもあため、この手のフレームワークに手を出すことに躊躇していた。 今回、流行のAjaxで遊んでみる必要が出たため、極力javascriptを書かないですむフレームワークのcakephpを試してみた。cakephpもmod_rewriteを使ったり、独特なコーディングスタイルを取るため、あんまり気はすすまなかったが、ajaxへの対応やMVCモデルでのコーディングを勉強するためにもcakephpを選択してみた。他にはsymphonyやakelosなどのフレームワークがあったが、なんとなくcakephpを選んだというのが実情だ。 結果としては以下の点でcakephpを気に入ってしまった。
  • SQL文を書かなくてすむ
  • データベースのアソシエーションが強力
  • 内部のデータ管理が配列
とくに、配列でデータ管理をしているのが自分的にヒット。元々、自分のコーディングスタイルが配列を多用していたということもあり、cakephpのコーディングスタイルを比較的すんなりと受け入れることができた。あと、インチキオブジェクト指向なところも好き。いまいちオブジェクト指向プログラミングとラブラブになれないので、これを機にまともなオブジェクト指向を勉強しようと思いました。 対して、cakephpへの不満点は以下のとおり。
  • ドキュメントが少ない
  • 時々、意図しないSQL文が発行されている
日本語のドキュメントが少ない気がする。特にcakephpのドキュメント和訳が古い気がする。まぁ、英語のドキュメントやAPIリファレンスを読めばすんじゃうことなんだけどね。あと、データベースのアソシエーションの関係で意図していないSQL文が時々発行されている。とりあえず、unbindModelとかで気付いたところは修正しているけど、コード全体を常に頭に入れて、どのデータが欲しいのかを気にしながらコードを書く必要があるみたい。 とりあえず、今はcakephpには好印象。このケーキは美味しいです。cakephpを理解するためにwebアプリを書いているけど、フレームワークなしで作るよりも時間は短縮できている感じ。機会をみてTipsとかもこのblogに挙げていくようにしよう。

2007-07-30

carbon emacsのnxmlモードが残念な件

前のエントリでmamumo-modeが残念な動きをしているという話.

この前のエントリでは自前でビルドしたEmacsを使うことにしたけど,やっぱり自前ビルドは茨の道だった.とくにインラインの日本語変換が悲しいことになっている.やっぱりCarbon Emcasのインラインパッチて重要だよね.

とはいえ,Carbon Emacsの現状だとphpのコーディングのときにかなり悲しい思いをするのは確か.nxml-modeやnxhtml-modeのうまみが今ひとつ理解できないのもあって,/Applications/Emacs.app/Contents/Resources/site-lisp/nxml/nxhtml/php-mode.elだけを読み込ませることにした.あとのelispは無視する方向で……

とりあえず,.emacsとかに

(load "/Applications/Emacs.app/Contents/Resources/site-lisp/nxml/nxhtml/php-mode.el")
(require 'php-mode)

て書いて急場をしのぐ.がんばってmumamo-modeの最新版とかを入れてもいいんだけどね.今は時間がないのでこれでなんとかする.

nxmlパッケージに含まれているphp-mode.elはバージョンが1.3.0とかになっているけど,あんまり気にしない.つーか,changelogを読んでもあんまり嬉しい追加機能はないみたい.まぁいいや.

2007-07-25

carbon emacsの2007 summerバージョン

先日,Emacsが数年ぶりにバージョンアップし,自分が使っているCarbon Emacsも2007 Summerバージョンで本家のバージョンアップに追従したようだ.このCarbon Emacsはあらかじめ便利なelispプログラムも付属しているので大変重宝して使っていたのだが,nxmlパッケージ(とくにphp-modeとmumamo-mode)がうまく動作していないような気がする.

元々のphp-modeはsourceforgeで配布されているパッケージが入っていたようだが,今回のバージョンからnxmlパッケージに含まれるようになったらしい.このためphp-modeでファイルを編集している時に,TabもしくはC-iでインデントをしようとすると,mumamo-modeていうnxmlパッケージに入っているmmm-modeの新しいやつを使うかい?と聞かれるようになった.

最初はとりあえずyesと答えていたけど,どうやらmumamo-modeの起動に失敗しているっぽい.エラーメッセージを読んだら,autostart.elというファイルが見つからないとぶーたれていた.とりあえず.emacs.elでautostart.elを直接指定して読み込ませるようにしたら,こんどはmumamo-modeを使うぜ,と叫んだ時点でemacsが強制終了するようになった……

Carbon Emacsで提供されているnxmlモードはビミョーに古い気がするけど,新しいバージョンを入れようとまでは思わない.nxmlパッケージの中のnxhtml-modeはかなり気になるモードだけど……

ということで,Emacsはgnu版を落としてきて,自分でビルドしたものを使うようにした.とりあえずはCarbon Emacsの次期バージョンでこの問題が解決したら,Carbon Emacsを使うけど,現状だったら自分でビルドしたemacsを使っていたほうがいいかな.