PHP

【Symfony2.3】EventListenerで指定出来るイベントメモ。

現時点までに発見したもののメモ。(2014-06-09現在)

services:
    my.listener.before.filter:
        class: Hoge\FugaBundle\EventListener\ControllerListener
        arguments: ['@service_container']
        tags:
            - { name: kernel.event_listener, event: kernel.controller, method: piyo }
            - { name: kernel.event_listener, event: kernel.request, method: piyo }
            - { name: kernel.event_listener, event: kernel.response, method: piyo }
            - { name: kernel.event_listener, event: kernel.terminate, method: piyo }

    my.listener.pre.update:
        class: Hoge\FugaBundle\EventListener\EntityListener
        arguments: ['@service_container']
        tags:
            - { name: doctrine.event_listener, event: preUpdate }

    my.listener.pre.persist:
        class: Hoge\FugaBundle\EventListener\EntityListener
        arguments: ['@service_container']
        tags:
            - { name: doctrine.event_listener, event: prePersist }

随時更新。

 

【PHP】フィボナッチ数列を求める際のアルゴリズム。

定義通りに書くととんでもない事になるいつものアレ。

「C言語による最新アルゴリズム事典」より究極の実装方法をペタリ。

function fib($n){
	return floor( pow((1+sqrt(5))/2, $n) / sqrt(5) + 1/2 );
}

まぁどこで使うのって感じだけれども。

 

【PHP】クラス内メソッドで「$this->」を書くのがめんどくさい!!!

と思ったそこのアナタ。

メンバ関数の先頭で下記1行を宣言して今すぐ幸せをこの手に!!

extract(get_object_vars($this));

まぁこうすると「参照のみ」に限定されちゃうんだけどね。

小ネタとして。

 

【PHP】Qiitaで見つけたランダムでシンプルなパスワード生成方法。

いっこめ。

function random($n = 8)
{
    return substr(base_convert(bin2hex(openssl_random_pseudo_bytes($n)),16,36),0,$n);
}

にこめ。

function random($n = 8)
{
    return strtr(substr(base64_encode(openssl_random_pseudo_bytes($n)),0,$n),'/+','_-');
}

 

【PHP】月末最終日をサクっと取得する。

Datetimeクラスを用いるとモテモテになれる。

// 当月最終日を求める
$lastday = new Datetime('last day of now');

// 時間を指定する
$lastday = new Datetime('last day of now 12:00');

// これでも取得できる模様
$lastday = new Datetime('last day of this month');

うん。まじかっこいいよ。

 

【CakePHP2.5】Cookieコンポーネントの有効期限を動的に設定する。

コントローラーから有効期限を指定しなおして発行したい場合、

「$this->Cookie->time」を直接書き換えても反映されないので注意が必要。

有効期限を動的に書き換えたい場合は、write()メソッドの第4引数に期限を渡せばOK。

$this->Cookie->write('data', $data, true, 0);

と言った感じ。

 

【PHP】特定の文字列から半角数字のみを抽出する。

めも。

$str = preg_replace('/[^0-9]/', '', $str);

 

【PHP】HTML中の特定のタグを取り除く正規表現。

めも。

例えばscriptタグを取り除きたければ下記のような感じ。

$reg = '/<script.*?>.*?<\/script>/mis';
$escape = preg_replace($reg, '', $html);

scriptの部分を好きなタグに変えれば好きな様に置換できる。