php

Emacsのphp-modeでalignする その2

4年越しですが Emacsのphp-modeでalignする - てつじんにっき で書いていたものの挙動が気になったので修正し、requireして使うよう改良してphp-align.elという名称でgithubにあげてみました。 GitHub - tetsujin/emacs-php-align: Emacs's alignment config…

PHPer.jpでSymfony2のblogチュートリアルを動かすためにやったこと

http://phper.jp/でhttp://docs.symfony.gr.jp/sf2-blog-tutorial/を動してみたので、雑なまとめですが、やった設定の備忘録。最終的に下記のような構成に。 /path/to/approot/ - .phper/ # phper.jp用設定ファイル群 - Symfony/ # blogチュートリアルアプリ…

symfony1.4+Doctrineでbuild-formsで生成されるコードに独自WidgetやValidatorをセットする

開発が進むに連れてフォームで 表示するエラーメッセージを全体的に変更したい 全角英数を半角英数に変換したい その他色々と機能を拡張したい などと、全体的な挙動を変えたいことが多くて、 $ symfony doctrine:build-formsで生成される、lib/form/doctrin…

symfony1.4+Doctrineで配列をカンマ区切りで保存する

最近チェックボックスの項目が大量あるフォームを実装していて、綺麗に正規化して実装するのも大変だなーと思って、valueを「,」区切りで文字列保存することにしたのでメモ。 valueに「,」が入る可能性などは考えてないのであくまでもシンプルに。 config/do…

symfonyのproject:deployがやたらと遅い

最近symfony1.4.9を使っていてproject:deployコマンドがやたら遅くて、rsyncってこんな遅かったかな?と思ったらsfFileSystem::execute()が、出力バッファを読み込む度に0.1秒sleepしている。 lib/task/sfFilesystem.class.php logSection('exec ', $cmd); $…

array_chunkって便利ですよね

php

http://jp.php.net/array_chunk 例: 要素数Nの配列を、テーブルで1行2列ずつ表示したいようなときとか。 コード <table border="1"> <tr> </tr></table>

Exuberant ctagsでphpのconstも拾うようにする

こちらのexuberant ctags 日本語対応版そのままではconstを拾ってくれなかったので、 見よう見まねでpatchを書いてみたのですが、その後に気がつきました。 実はこんな感じで--regex-PHPを引数で渡すだけでよかった。。 $ ctags -R -e --langmap=PHP:.php --…

PHP標準関数のsnippetを作る

寝れないのでご無沙汰エントリ。http://hg.apgwoz.com/yasnippet-php-mode/ ここのを使ってたりしたんですが、どうもカスタマイズしたくなってきて こんな感じで、自分用オレオレPHP標準関数snippetを生成しました。(作ったのは結構前なんですが) オレオレ…

リージョン内のコードを実行

(defun php-eval (beg end) "Run selected region as PHP code" (interactive "r") (let ((code (concat "

無名関数はだめ

最近、Perlの方が良く触れてるので、PECL/perlを少し試してました。 eval('sub { 2 * shift }'); var_dump($func(10)); $ php test.php Fatal error: [perl] Can't convert Perl type (12) to PHP in /home/tetsujin/work/php/perl/test.php on line 3 こう…

行コメントとブロックコメントの使い分け方

php

コメントがネストしてる場合とかではなくて。 エディタのパワーを借りて複数行のコメントアウト(M-x comment-region)すると、 こんな感じで行コメントを複数行にわたって適用してくれるんですが、 途中に終了タグを含んだリテラルとかが混じってると…。 \n"…

ぺちぱずる

php

$ php -r 'print ((print true) + print 2) + (print (print false));'ふだんphpを書いている人でも意外と出力結果を答えられなかった。 いや、わかったところであまり意味はないと思いますけどね。

PHPのソース整形ツール phpStylist

前回のphpCodeBeautifierに続いて、またまたソースを綺麗にするツール。 phpStylist - http://sourceforge.net/projects/phpstylist/2007-06-29 released なので最近ですね。 Webからでもコマンドラインからでも叩けます。noticeが出るわ、 $HTTP_POST_FILES…

phpCodeBeautifierで汚くなる件

Do You PHP? - phpCodeBeautifier - コーディングスタイルを統一する でも紹介*1されているPHPのソースコードを整形するphpCodeBeautifierですが、最近linux版も出たし、マニュアル に書いている内容を見てワクワクして突っ込んだんですが、汚くなる。PEAR標…

arrayのインデント

$foo = array( 'bar' => array( 'baz' => array( 'qux' => array( 'quux' => array( ), ), ), ), ); ネストが深くなると見づらい。(極端な例だけど).emacs (add-hook 'php-mode-user-hook '(lambda () (c-set-offset 'arglist-intro '+) (c-set-offset 'argl…

PHP6入れてみた。

php

先ほどなんとなくPHP6を入れてみた。どんなものか遊んでみようかと。 cvsリポジトリからcheckoutしようかと思ったけどとりあえずは、http://snaps.php.net/ から落として入れてみた。とりあえずconfigureしたらGeneral settingsで checking for location of …

第25回PHP勉強会

php

日曜日は第25回PHP勉強会に参加させていただきました。 会場は椅子が素敵だったオープンドリームさんです。会場提供ありがとうございます。自分がとったメモのせときます。所々間違ってたらごめんなさいです。 君もまたextensionか&簡単なサービスを作って…

Emacsのphp-modeでalignする

追記 2011-08-14 その2でgithubにあげてます。https://github.com/tetsujin/emacs-php-align 前回のエントリでphp-modeではM-x alignが使えなかったので、perlのalignを無理やりphp-modeに当ててみましたが、所々やっぱり不具合があるのでElisp全然わからん…

php-modeで無理やりM-x alignしてみる

元々自分はアラインメントしない人だったんですが、最近、職場でアラインメントされたコードを読んで(phpじゃないけど)、やっぱり読みやすいなーと感じ、郷に入れば郷に従おうということで最近EmacsのM-x align & M-x align-regexpにはまってます。 int foo …

DNUM, EXPONENT_DNUM

で、flexのマクロ定義を見てたら zend_language_scanner.l DNUM ([0-9]*[\.][0-9]+)|([0-9]+[\.][0-9]*) EXPONENT_DNUM (({LNUM}|{DNUM})[eE][+-]?{LNUM}) となっているのを知り、下のような書き方でも動くっていうのを知りました。 まだまだ知らないこと沢…

PHP5, PHP4 関数定義の違いあれこれ

zend_language_parser.y内の関数の引数定義の部分。php5.2.2とphp4.4.7で結構違う。php5.2.2 parameter_list: non_empty_parameter_list | /* empty */ ; non_empty_parameter_list: optional_class_type T_VARIABLE ... | optional_class_type '&' T_VARIAB…

謎の演算子

PHPへのオペレータ追加続き $ php -r '$users ||= "john"; echo $users[0];' johnおお!!!!!! var_dumpで確認 $ php -r '$users ||= "john"; var_dump($users); ' array(1) { [0]=> &string(4) "john" }え。文字列リテラルへの参照ってなに!? 数値を……

勘違いなjohnさん

どこで間違えたらこうなるんだ。w opcodeレベルでの動作の理解がまだまだです。ようやく週末。がんばろー。

[ PHPに独自のオペレータを追加する

一歩進んだ。Y!のPHPエンジニア問題の $users ||= ‘john’; やっぱりgdb便利ですねー。 zend_exedute.c #define _CONST_CODE 0 #define _TMP_CODE 1 #define _VAR_CODE 2 #define _UNUSED_CODE 3 #define _CV_CODE 4 zend_vm_executer.h void zend_init_opcod…

Y!のPHPエンジニア問題の $users ||= ‘john’;

php

Do You PHP はてな - Yahoo!がPHPエンジニアを雇う時に聞く質問 1.配列usersに「john」を追加しないのはどれか? 1. $users[] = ‘john’; 2. array_add($users,’john’); 3. array_push($users,‘john’); 4. $users ||= ‘john’; 捻くれた性格なので、$users ||=…

第24回PHP勉強会

php

http://events.php.gr.jp/event.php/event_show/20 木曜日の夜に行われた勉強会に参加してきました。サイボウズ・ラボさん、発表者の皆さんありがとうございます。 遅くなりましたが、自分なりのまとめ。 君はまたextensionか(PECL_CodeGenでC++するとハマる…

Windowsでのsyslog

php

定数名 Linux Windows LOG_EMERG 0 1 LOG_ALERT 1 1 LOG_CRIT 2 1 LOG_ERR 3 4 LOG_WARNING 4 5 LOG_NOTICE 5 6 LOG_INFO 6 6 LOG_DEBUG 7 6 defineされている値が違う。 Windowsではイベントログでsyslogがエミュレートされる。 PHP マニュアル - syslog

Ethna CacheManager キャッシュが見つからないときとか

Ethnaクラスには下記のようなエラー生成メソッドが定義されている。 &raiseError() - E_USER_ERROR &raiseWarning() - E_USER_WARNING &raiseNotice() - E_USER_NOTICE キャッシュが見つからないとか、ライフタイムが過ぎたという状況でraiseError()を返すけ…

文字列をインクリメント

php

$ php -r '$str = "zzz"; printf("%s\n", ++$str);' aaaaZend/zend_operators.cのincrement_stringを見て知った。ちょっとひねくれたことをやったら怒られた。当然か。 $ php -r '$str = "zzz"; printf("%s\n", ++$str[0]);' PHP Fatal error: Cannot increm…

PHP 標準関数のソースを読んでみる

PHP Extensionの勉強をしよー!と言ったものの書き方を覚える前に、標準関数とかってどうやって書かれてるの?ってのが気になってきたので、PHP 5.2.2のソースを読んでみた。 しかし、まず何処に何のファイルが置かれていて、何処に何が書いているのかわから…