ありがとう。また会おう。

ゆるいかんじで。かたのちからぬいて。やってます。

はてダにあった記事をはてブロに移行しました

なんかしばらく見ないうちに、はてブロも正式サービスになって

しかもはてダのリンクがはてなTOPから隠されちまったので

この際なのでえいやっと移行してしまいました。

まぁ大した記事数でもないし。

これからもう少し真面目にブログにもいろいろ投稿していくようにしよう。

xdebug の各種設定がどのコンテキストで変更できるかを調べる

NetBeans + xdebug + Chromexdebug拡張という環境がなかなか良い感じです。
この環境さえ構築できれば、もうvar_dump()要らず\(^o^)/

で、この環境を作る上でひとつハマったことがあったのでメモ。

最初、xdebugでリモートデバッグできるようにini_set()でスクリプトから設定変更*1してみたものの、うんともすんとも言わず。

で、そういえば、xdebugの設定って、それぞれどのコンテキストで指定できるんだっけ?と思い当たり。
公式サイトのドキュメントを当たってみるも、それらしき記述は無し。。。
結構詳しく書いてあるんですけどね、xdebugのドキュメント。英語だけど。

で、結局行き着いたのが、ソースコード

おおむね、PHP_INI_ALL が多いんですが、いくつかの設定値は異なるものがあります。

PHP_INI_SYSTEM|PHP_INI_PERDIR のもの

PHP_INI_SYSTEM のもの

リモートデバッグで僕がはまったのはxdebug.remote_enable でした。
まあ、実現する機能のことを考えたらそりゃそうか、という結論だったわけですが。

*1:正確には、Zend_Applicationを使ってるので、設定自体はZendのiniファイルに書いてますが、実質ini_set()で定義してるのと同じ

Zend_Controllerを(モジュールを使わずに)階層化する

あけましておめでとうございます。
この記事は、「Zend Framework 日めくり Calendar 2012」 (http://atnd.org/events/23579) 2日目の記事です。
前日はsasezaki(@)さんの「Zend Framework その7年 (前編)」でした。

いきなり初日とはうってかわって、思い切り実用的な話に持って行きます。
※以下の記事は、Zend Framework Ver1系の話です。

さて、Zend Framework(以下ZF)でアプリを開発していると
だんだんコントローラが増えてきて、どうにかしたいなぁと思ったことありませんか?
そんな時、ZFのお作法的には
「モジュール機構を使え」
・・・とあるのですが
(参考:モジュラーディレクトリ構造の規約の使用 - Zend_Controller - Zend Framework)
このモジュール機構、ある程度機能がMVC単位で切り離せるならいいのですが
特にModelが綺麗に切り離せることがあまりなく
ちょっと無理があるかなぁ・・・と思うことがあったりします。
(まぁZFはディレクトリ構成を比較的自由に組めるので
モジュール機構を使いつつ、モデルは1箇所に固めて共通で使う
・・・ってこともできますが)

で、そんな大げさなことじゃなくて、もっと単純に
「controllerディレクトリにサブディレクトリ掘れればいいのに」
と思うことありませんか?
実はこれ、ZFのオンラインマニュアルには(たぶん)書いてないんですが、できます!
(書籍だと、「ZendFramework徹底入門」にはちらっとだけ書いてあります)
(前段にも書いたとおり、モジュール機構を使わない前提の場合です)

ディレクトリ名・ファイル名はこんな感じにします。

application/controllers/Hoge/FugaPuuController.php

クラス名は

<?php
class Hoge_FugaPuuController extends Zend_Controller_Action
{
    //(アクションメソッド等を記述)
}

とします。
サブディレクトリに当たる部分はアンダーバー"_ "で区切ります

Viewのパスは、たとえばindexアクションなら

application/views/scripts/hoge/fuga-puu/index.phtml

になります。

そして1つ注意が必要なのが、アクセスするURL。
アクセスするURLは以下のようになります。*1

http://www.example.com/hoge_fuga-puu/index

「hoge/fuga-puu/index」ではありませんので注意が必要です。
「単語の区切りはハイフン"-"、ディレクトリ構造はアンダーバー"_"」で区切ることになります。
この例では、ディレクトリ名「hoge」が1単語でしたが、複数単語になる場合も同じくハイフン区切り
(ファイル名とクラス名はUpperCamelCase)になります。

・・・でもこれ、ちょっとカッコ悪いですよね。
ということで、気になる方は、Routerで定義しちゃうといいと思います。

ZFマニュアルのRouterの項、「RewriteRouter での Zend_Config の使用法
のように、Zend_Config_Ini 形式で書くなら

routes.archive.route = "hoge/fuga-puu/index"
routes.archive.defaults.controller = hoge_fuga-puu

とします。
ちなみに、Zend_Controller_Request_Abstract::getControllerName()で得られる
コントローラ名も、こちらの「hoge_fuga-puu」になります。

これをうまく使えば、日々機能拡張のたびに増えるコントローラを
あまり手数をかけずに整理できると思います。


Zend Framework 日めくり Calendar 2012」、明日は@さん
・・・でいいのかな
・・・です!(言い切っちゃったw)
 

*1:スーパープレ記法の中でURLリンクを無効にする書き方がわからん。。。

謹賀新年2012

あけましておめでとうございます。
本年もよろしくお願いいたします。

振り返ると、昨年はあまりアウトプットも、勉強会参加もできなかったなぁ・・・という思いが。
特に震災直後は一刻イベント減りましたしね。

今年はもう少しこのあたり強化して、特にアウトプットに関しては
できるだけまめにやっていけたらと思っています。
すでに、明日は「Zend Framework 日めくり Calendar 2012」の記事を準備しています。
Zend Frameworkネタはいろいろ書きためているので
日めくりイベントが終わってからも、ちょいちょい書いていこうと思います。
ちなみにこの日めくりイベント、参加者枠まだあいておりますので、ネタをお持ちの方はぜひご参加ください!

2012年

年が明けた。

今年もよろしくです。

 

さてさて・・・このブログどうしようか、未だに方針たたずw

JavaScriptが使えるっていうんで期待してたんだが

どうやらそんなに何でもってわけではなさそう。

つか、はてなのコードハイライトはイマイチなので

SyntaxHighlighter使いたいなぁ・・・とか思ってたのだが

こちらでも使えなさそう、あるいは使うのにかなり手間がかかりそうな気がする。

さてさて、どうしたものか。。。

PHP Apocalypse に参加した

気がついたら前回更新から半年経ってる・・・
もっとまめに書く癖をつけないとなぁ。。。

さて。昨日は「PHP Apocalypse」に参加しました。
Apocalypse・・・ヨハネの黙示録ですね。
あとは「世の終末」とか「大災害」とかなんかおどろおどろしいですが。
英辞郎調べ)

まぁPHPも普及期は・・・2000年代前半くらいですかね?
それから概ね10年弱が経過して
その間、RubyRuby on Railsがブレイクしてトレンドを作ったり
PythonGoogle App Engineを背景に根強く人気を広げたりして
ここ数年PHPは、新規の書籍発行数をみても、ちょっと一時期の勢いはないのかな・・・
とか思っていたりもしたのですが
でも、こういうイベントに100人近く集まるということは
それ自体がまだまだ健在である証拠ではないでしょうか。

どなたかの発表にもありましたが
PHPはどこまでいっても「現実主義」的な言語なのかなと思います。
確かに、言語構造としてはRubyPythonの方が綺麗なのかもしれない。
でも、PHPで動く環境を用意することの容易さ、手軽さが
Word Pressのような大きなプロダクトを生んだわけですし。
RedminePHP移植プロジェクト「CandyCane」もまた
Redmineの導入の難しさをPHPであれば越えられるという恒例ではないかなと。

余談ですが、今私が働いている会社では
不幸にも?役割分担がきっちりしていまして
サーバのroot権限が必要な作業はインフラ担当部署にしかなく
プログラマは自由にソフトウェアをインストールできないのです。
そういう環境では特に、Wordpress、CandyCane、PukiWikiのような
「置くだけで動く」ソフトというのはとても大事なのです。

あ。
なんかイベントの趣旨とか当日の状況とかをちゃんと説明してないですね(笑)
まぁ簡単に言えばPHP界隈の方々の忘年イベントです(爆)
夕方からはピザ&アルコールで徐々に砕けた感じに。
それにしてもほんとに豪華な面々で
この場でテロでも発生しよう物なら、日本のPHP界が大打撃なくらいにw

発表内容は・・・まぁきっと誰かがまとめてくれてますw
PHP Apocalypse」でググれということで(汗
PHPのテクニカルな話よりは
もうすこし概念的な話というか、どう捉えるか、という話が多かったですね。
@さん、@さんの話とか
ほんとに胸熱で、よかったです。

あと「ワールドカフェ」というの、初体験だったんですが、面白かったです。
普通の勉強会とかだと、発言しにくかったり
コミュニケーション取りづらかったり感じてしまうときもあるんですが
こういう呼び水的なものがあると、自然と会話が出てくるのでいいですね。

最後に、会場を提供していただいたGREE
主催者の@さん、本当にありがとうございました!