PHP

グラブル用Twitterプロフ画像に日替わりでジータちゃんを表示するようにした

あふれ出るジータちゃん愛を証明するために、グラブル用のTwitterアカウントのプロフ画像を、日替わりでSDジータちゃん全44種類(12/4現在)からランダムに選んで変更するようにした。やりかたは下記サイトの通り。IFTTTと10行のPHPで大変簡単にできた。 IFT…

Entityのアノテーションを読んでinput要素のmax_length属性を出力する (Symfony2)

PHP

せっかくEntityにNotBlankアノテーションなりMaxLengthアノテーションなりを付与しているにもかかわらず、Symfony2はそれをバリデーションに使用するばかりでFormBuilderでは参照してくれない。そのため、たとえばinput要素にmax_length属性を付与する場合は…

はやくPHPでアノテーション使いたい

PHPはいつになったらクラスローダーとアノテーションをサポートしてくれるのか。普段.NETとかJavaとかで当たり前のように使っているので、オブジェクト指向言語*1で今更これがないとかひっくりかえるわ。とりあえずはDoctrine Commonを使ってその辺をカバー…

Entityの継承を使ってマップするフィールドを切り替える (Doctrine ORM)

PHP

最近仕事で使った.NETのEntity Framework (DbContext API) に影響されて、DoctrineというORMを触っている。なんでもSymfonyので採用?されているのだとか。Symfony使ったことないので知らなかった。というかPHPでORM使うこと自体初めて。さて、本題。Doctrin…

mod_fcgid + mod_userdirなURLにてCodeigniterのURL設定をうまく実現する

CodeIgniter の URL : CodeIgniter ユーザガイド 日本語版の設定を、mod_userdirで設定されたユーザディレクトリ以下に設置されたCodeIgniterに対してうまく実現する方法のメモ。なお、PHPはmod_fcgidでCGI版を動作させている。モジュール版PHPを使っている…

PHPのcURLって

PHP

Client URL Libraryの略だったのね。ずっとCurlのバインディングか何かだと思ってた。

EmojiHelper - キャリアを意識せずに絵文字を出力できるCakePHPのHelperクラス

PHP

アシアル亀本さんが公開している携帯絵文字JSONデータを使って、キャリアを意識せずに同じような絵文字を表示します。たとえば、下記のようなViewをDoCoMoの携帯から見ると、number*1が100のDoCoMoの絵文字(猫)を出力します。 d(101); ?>同様に、SoftBankの…

記号に関してpreg_match_allしてみた

PHP

\p{S} : 記号 Target:0aB#1cDあぇカォ亜%ウッ゛〜[SPACE][Full-Width-SPACE][TAB][CR][LF]☆★!”#$%&’()=〜|「」@`{};:+*<>、。?_・¥ Pattern:/\p{S}/msu Matches:゛☆★$=|`+<>¥ \p{P} : 句読点 Target:0aB#1cDあぇカォ亜%…

preg系正規表現のUnicodeプロパティ、スクリプト、ブロックの挙動

PHP

PHP4でうまいこと楽に漢字を判別できたらいいなぁ、と思ったのが発端で調べてみたメモ。なんでpreg系限定化というと、ereg→そもそも2バイト文字非対応、mb_ereg→マニュアル適当すぎて調べる気失せたため。あとそれ以前にPHP4ではUnicodeプロパティとか使える…

HTML系関数

PHP

htmlspecialchars アンパサンド、クオート(オプション)、ダブルクオート(オプション)、大なり、小なりをHTMLエンティティに変換する。 2008/06/05追記 第2引数にENT_QUOTESが設定されていないとシングルクオートがエスケープされないので注意。 htmlentities…

array_merge関数

PHP

引数にNULLが渡された場合、空の配列が渡されたのと同じ動きをする $foo = array_merge(NULL, NULL); $bar = array_merge(array('a'), NULL); $baz = array_merge(NULL, array('b')); $foobar = array_merge(array(), array('c')); var_dump($foo); var_dump…

is_a関数

PHP

調べたいオブジェクトがNULLでも大丈夫 PHP5では非推奨。instanceof演算子を代わりに使うらしい class Foo { } $foo =& new Foo(); var_dump(is_a($foo, 'Foo')); var_dump(is_a($bar, 'Foo')); => bool(TRUE) => bool(FALSE)

クラスの可視性

PHP

クラス、メソッド、フィールドに可視性の設定はない。すべてpublicである class Foo { var $bar; function Foo() { $this->bar = "ok"; } } $foo = new Foo(); echo $foo->bar; => "ok" ※ちなみにこの日記でいうところのPHPは、基本的にPHP4のこと

PHPのブロックのスコープ

PHP

ブロック内とブロック外のコンテキストは同一? { $foo = 'bar'; echo $foo; } echo $foo; => bar => bar

$foo = NULLとunset($foo)の違い

PHP

unsetはNULLの代入と等価ではない unsetは「現在のコンテキストにおける変数の破棄」を行う 関数内でunsetを用いる場合は、破棄対象の変数の型に注意(global変数、static変数、参照渡しの変数など)

isset($foo)と$foo != NULLの違い

PHP

issetに定数は渡せない define(FOO, NULL) var_dump(FOO != NULL); => FALSE var_dump(isset(FOO)); => parse error

NULL型

PHP

特別な型である NULLは、NULL型の唯一の値である まだ値が何も代入されていない変数はNULLである unsetされた変数はNULLである NULLは大文字小文字を区別しない。NULL、null、nUlLは同一である

isset

PHP

NULLが代入されている変数に対してはTRUEを返す