Archives by date

You are browsing the site archives by date.

【PHP】privateなメソッドを外部から実行する。

PHP5.4から実装されたClosure::bind()を用いる。

たとえば下記のようなコード。

当然Fatal error: Call to private method hello::world() from contextと怒られる。

しかしClosure::bind()を次のように用いると。

なんと画面にhello Worldが表示される。

第1引数に渡した関数内の処理は、第3引数に渡した名前のクラス内で実行されているものとして扱われるため、正常に関数を呼び出すことができている。 そう、Closure::bind()無名関数に限り実行時コンテキストを動的に変更できるというチート機能を有しているのである。

これを応用すると、PHPUnitでのテストケースにおいてもprivateな関数をテストすることができるようになるため、非常に強力な機能の一つであると言える。

【MySQL】大量にランダムなデータを作成する際の方法いろいろ。

知っとくと便利なので自分用にメモ。

1 or 2 などの2値をランダムに設定する

※この例だと1 or 2がセットされる。whenthenを増やしていけば複数の値に対応可能。

datetime型をランダムに設定

  • 現在時刻から1年後までの日付をランダムに生成
  • 指定日時から1年間の日付をランダムに生成

※2010-06-06をスタートとした場合

ランダムな文字列を生成する

  • 32文字のランダムな文字列を生成
  • 100文字のランダムな文字列を生成
  • 500文字!

※これ以上はconcat()をマンパワーで足していくくらいしか思い浮かばない。単に長さがほしいだけならrepeat()とかでもいいかも。

100万件のレコードを生成する

※20行繰り返すところがポイント。

【PHP】Xdebugのvar_dump()を通常のものに戻す。

Xdebugがインストールされている環境でvar_dump()を使用すると、なんだか無駄にごちゃごちゃしてて挙句の果てにはmore elementsとかいう世紀末な状態になっていたので戻す方法をメモ。

php.iniに下記を追記。

これでサーバーを再起動すればOK。

発狂せずに済んだね。

【htaccess】さくらのレンタルサーバーに設置したhtaccessでOptionsが使えない問題。

さくらインターネットのレンタルサーバーで、ディレクトリ一覧表示を禁止しようとした際に発覚。

通常ディレクトリの一覧表示を禁止しようとすると.htaccess

とするが、サクラのレンタルサーバーではOptionsが使えず、500エラーに成ってしまうので、下記のように対応する。

こうすることで同様の効果を得られる。

【jQuery】手っ取り早くScrollToTopを実装する。

ぺたり。

秒数は好みで。