PHP
昨日の「NULLへのキャストって……?」ではスルーしたけど、マニュアルの引用部分にあった(binary)も気になった人がいるはず。 型キャスト使用可能なキャストを以下に示します。 (int), (integer) - 整数へのキャスト (bool), (boolean) - 論理値へのキャスト …
PHPの型キャストは(array)とか(object)とか変態的なのがあるけど、最近(unset)なるものが存在することに気づいた。 unset($var)のことではない。(unset)$varだ。 型キャスト使用可能なキャストを以下に示します。 (int), (integer) - 整数へのキャスト (bool…
なんか未だに「PHP自体がテンプレートエンジンなのになんでSmartyとか使うの?」みたいに考えている人がいるようなのでちょっと。 といっても、言いたいことはSymfony開発者でありTwigの現在の開発者*1でもあるFabien氏がこれでもかってぐらいに語っているの…
SSDに入れ替えたタイミングでOSもMountain Lionにアップデートしてみた。 XcodeとCommandline Toolsを入れてHomebrewで各種入れ直すところまではすんなりいったけど、自前のPHPビルドだけうまくいかなくて苦労した。 普通にやると個々のコンパイルは通ってる…
そういや自宅のMacBookにはPHP環境作ってないなーと思ったので作ってみた。 Mac OS Xには最初からApacheとPHPが入っているのだけど、モジュールとかどうなってるのかよくわからないし、せっかくなら最新版にしたいな、ということでソースからビルドしてみた…
また長いこと放置状態になっていたのでつまらないTipsでお茶を濁してみる。 外部システムの連携なんかをやってるとXMLでデータをやり取りすることがあると思うんだけど、システムが吐いてくるXMLって改行が入ってなかったりするので、デバッグで覗いたりログ…
仕事でデータを暗号化して保存する必要が出てきたので色々調べてみた。 メインのシステムはPHPで作っているんだけど、Javaなども絡んでくるので、お互いが処理できる暗号方式でなければいけない。 仕様さえ明確にしてあればオレオレアルゴリズムでもいいんだ…
今までPHPのプロファイリングはXdebugとWinCacheGrindを使っていたんだけど、XHProfとかいうのが便利らしい。 ※画像撮るのが面倒だったので、画面は参考サイトなどを参照w まだbetaみたいだけどPECLのプロジェクトになっていて簡単にインストールできる。逆…
PHP プログラマが "@" を使うべきでない 5 つの理由 - 肉とご飯と甘いもの @ sotarok http://d.hatena.ne.jp/sotarok/20090721/1248112106PHPでエラー抑制演算子@を正当に使ってるなぁと思ったケース - それ図解で。・・・tohokuaikiのチラシの裏 http://d.…
可変長引数のメソッドがあって、それをオーバーライドしつつ親クラスの同メソッドを呼び出したかったんだけど、一瞬どうやればよいのか迷ったのでメモ。
PHP: str_replace - Manualstr_replace - 検索文字列に一致したすべての文字列を置換する 説明 mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )この関数は、subject の中の search を全て replace に置換します。…
なんかsqlite関数とPDOのSQLiteドライバはSQLiteのバージョン違うのね。 sqlite関数はSQLite2でPDOはSQLite2とSQLite3が使える。 同じ環境で動かしてるのになんでファイルフォーマットがおかしいとか言われるのかと思ったよ。 そしてCakePHPのSQLite DBOはSQ…
別に今まさに困っているというわけではないんだけど、PHPで生のPOSTデータが取れなくてどうしたもんだろうと思ったのでメモ。 正確にはContent-Typeがmultipart/form-dataの時に取れない。 まずは$HTTP_RAW_POST_DATAについて。 PHP: $HTTP_RAW_POST_DATA - …
php_exifエクステンションを有効にしたら、また昨日みたいに動かなくなった。 しかも今度はコマンドラインですらエラーが出る始末。 php_mbstring.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストール…
Windows上に開発環境なんて作ったこと無かったので微妙にはまった。 PHP自体はWindowsでもコマンドライン上で使ってはいたんだけど、Apache入れてMySQL入れて、なんてのはLinuxでやるもんなぁ。 構成 各インストール場所はこんな感じ。C:\Program Filesとか…
少し前にPHP 5.2.9でarray_uniqueの仕様が変更されてアレだって話が話題になっていたが、今のプロジェクトでもそれが問題に上がった。悩ましい。 array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記 http://d.hatena.ne.jp/hnw/20090228 上…
以前、ストリームフィルタで文字コード変換してみるというエントリを書いたんだけど、今回別の方法でフィルタを使おうと思ったらハマったのでメモ。 前回はstream_filter_prepend/append関数でストリームのリソース(ハンドル)に対してフィルタを追加したん…
日本語化パッチ等が存在するのは2系なんだけど、最新リリースの2.18が2007年10月と古い(のと、日本語化パッチが微妙だった)ので思い切って3系を入れてみた。 一言で言うと別アプリのようだった。2系から3系へのアップグレードもサポートしているようなので…
mbstringを愛用している日本のPHPerならphp.iniのmbstringセクションで必ずと言っていいほど目にする設定、mbstring.func_overload。 これを有効にするとmail()やstrほげほげ()がmb_send_mail()やmb_strほげほげ()にオーバーロードされて、mail()関数を呼び…
PHPでもJavaやその他の言語のようにストリームにフィルタを挟むことが出来るようだ。 これを使うと透過的に圧縮処理を行ったり、Base64変換を行ったり、文字エンコーディング変換を行ったりできるとのこと。 公式マニュアルのストリーム関数をざっと眺めてみ…
PHPが内部的に変数をどのように保持していて、どのように処理しているのかをこれ以上にないぐらいわかりやすく解説している記事がある。 特にリファレンスがどのように扱われているのかが例を挙げながら詳しく書かれているので、(PHPが好きか嫌いかはさてお…
backtick演算子(バッククォートで実行するやつ) shell_exec() exec() passthru() system() pcntl_exec() popen() proc_open() このうちbacktick演算子とshell_exec()は等価らしい。 ……どれ使えばいいんだyp! といつも思うので、実際に試してみた。 shel…
PHPのマニュアルを眺めてたら日の出とか日の入りの時刻を取得する関数があったんだけど、こんなん誰が使うんだよ(;´Д`) 少なくとも標準で組み込まれてる必要ねーだろうよ。 そもそもどうやって計算してるんだ? どれだけの精度があるんだ? 日の出/日の入り…
PHPといえば「ほーむぺーじ」を作るためにあるような言語なわけだが、何故か自分はコマンドラインアプリを作る機会が多い*1ので、引数のパースについて少し考えてみる。 対象ファイルとスイッチのオンオフ程度なら$argvを回しながら自前でパースしても事足り…
register_globals.php
php.iniのmbstring.internal_encodingやmb_internal_encoding()はPHPスクリプト自体の文字エンコーディングとは関係ない。 これらはmbstring系の関数が内部で処理するためのエンコーディング指定だ。 なのでinternal_encodingにShift_JISを指定したからとい…
少し前に「マルチバイト対応の文字列折り返し処理」というエントリを書いたけど、その中でpreg_split()だとうまくいくのにmb_split()だとうまくいかない処理というのがあった。 で、今日たまたま似たような処理を書いていたんだけど、何故かmb_split()でもう…
SPLのArrayObjectはコンストラクタの第二引数やsetFlags()でフラグを指定できるのだが、これの意味がよく分からなかったので調べてみた……けどやっぱりよくわからなかったので実際に試してみた。 コンストラクタの説明を見ると「setFlags()を見ろ」と書いてあ…
一行n文字で自動的に折り返しする処理が必要になったのでその辺から拾って済ませようと思ったら、マルチバイト文字をきちんと処理できないものばかりで困った。特に半角カナとか記号が鬼門。 というわけで仕方なく自分で作った。 業務で必要なものだったから…
PHP: parse_ini_file - Manual定数も ini ファイル上でパースされます。 そのため、parse_ini_file() をコールする前に ini ファイル上の値として定数を定義した場合、返り値に統合されます。 ini ファイル上の値だけが評価されます。(from http://jp.php.n…