PHP

Authorizationヘッダー情報をPHPで取得

apacheのデフォルト状態だとAuthorizationヘッダーを送っても、$_SERVERには入ってこない。下記の設定を追加する事で環境変数に渡す事ができます。 RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]もしくは RewriteRul…

DateTimeクラスで指定秒を追加

PHP

例)3600秒追加 $date = new \DateTime(); $date->modify('+3600 seconds'); //echo $date->format('Y-m-d H:i:s');constructでセットしても同様の結果が得られる $date = new \DateTime('+3600 seconds'); //echo $date->format('Y-m-d H:i:s');php 5.4

error_log()をメールする

PHP

error_log('message', 1, 'xxx@example.com'); 「PHP error_log message」という件名で送信されてくる

mb_convert_kanaで変換できない

こんなふうにやっていた mb_convert_kana($text, "AKV");このようにすればできました。 mb_convert_kana($text, "AKV", 'utf8');

file_put_contentsで代替ログ

PHP

ブラウザ出力するのも面倒なのでファイルに書き出してみました。 file_put_contents("/tmp/log.txt", $var);/tmpに置いたのは権限の都合上※あとで気づいたが、error_log()というのがあった。デフォルトだとerror_logに引数のテキストを出力してくれる

PHPの先月、翌月の操作

過去6ヶ月の年月リストを取得する関数を作ったのだが、本日(10/31)バグりました。

配列の値をそれぞれtrim

foreachとかせずにやりたかったのでこちらで array_map('trim', $array);例)explodeしつつtrimの比較、検証 // string(4) "hoge" // …

現在開いているファイルの関数一覧

「:!コマンド」とするとvimからコマンドが打てるのでfunctionをgrep(-nで行も表示) :!grep -n function %%と打つと、現在開いているファイルパスに展開されるので以下のようになる :!grep -n function /var/www/.../actions/actions.class.php 18: public …

文字列の丸めこみで文字化け

PHP

mb_strimwidth()を使って、文字列の丸めこみをしようとしたら文字化けた あいうえお□...予想していたものは あいうえおかきく...ちゃんとエンコード指定してやれば直りました。 $text = "あいうえおかきくけこさしすせそ"; //echo mb_strimwidth($text, 0, 2…

AdminGeneratorで生成されるファイル

generate-adminをしてできたソースをカスタマイズしたくて元ファイルを見たかったのだが、見つからず。 しばらく悩んでいたところ...エラーメッセージ見たらわかりました。 Notice: Undefined variable: xxxx in /var/www/admin/hoge/symfony/cache/admin/de…

PHPで引数だけ異なる関数は作れない

PHP

親クラス::method($hoge, $fuga) に対して 派生クラス::method($hoge, $fuga, $piyo) のようにしたら Strict Standards: Declaration of 派生クラス::メソッド() should be compatible with that of 親クラス::メソッド()

generate-adminの検索フォームにidを追加

List画面に標準で付いてくるFilters(検索ボックス)にはidカラムがありません。 ※Base[tableName]FormFilter.class.phpを参照そのままBaseに追加しても動きますが、オーバーライドしてやれば追加できます。[tableName]FormFilter.class.php public function…

インスタンスの生成失敗を判定

インスタンス生成時に任意条件で生成失敗とさせたい場合、constructは戻り値を返せないのでreturn nullなどと記述してもインスタンスが返ってしまいます。そこで以下の実装で判定できるようにしてみました。 失敗フラグをプロパティに追加する方法で対処。 c…

大文字小文字の区別

PHP

マジックメソッドを書いている時に、ふと気になったのでメモ。結論:変数名は区別するが、関数名は区別しない(クラスも区別しない) http://www.php.net/manual/ja/language.variables.basics.php 変数名は大文字小文字を区別します。http://www.php.net/ma…

It is not safe to rely on the system's timezone settings.

PHP Warning: date(): It is not safe to rely on the system's timezone settings.原因はタイムゾーンが設定されていない事らしいので、以下設定 [php.ini] [Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual…

PHP 5.1.6からPHP 5.3.3へバージョンアップ

yumでアップデートする方法。 CentOS標準のパッケージではPHP 5.1系しか使えないようなので、以下の作業を行いました。epel-releaseとremi-releaseのrpmを取得 # wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # w…

機能テストでカラー表示

lime_testの第2引数にオプションを指定 //$browser = new sfTestFunctional(new sfBrowser()); $browser = new sfTestFunctional(new sfBrowser(), new lime_test(null, array('force_colors'=>true)));

機能テスト

moduleのテストをする際、毎回moduleのURLを叩いてブラウザ確認をするのは大変。 そこでtestフレームワークです。個別に実行 $ php test/functional/[app名]/[module名]ActionsTest.phpもしくは $ ./symfony test:functional [app名] [module名]Actions実行…

「_(アンダースコア)」区切りで単語の最初を大文字に

PHP

class_name => ClassName のようにしたかったのだが、ucwords()は空白文字でしか単語区切りにならないらしい。 http://jp2.php.net/manual/ja/function.ucwords.php仕方ないので「_(アンダースコア)」をスペースに変更してから最後に消すという処理 もっと…

FizzBuzz問題

FizzBuzz問題をPHPで自分なりにやってみた $numbers = array(); foreach (range(1,100) as $value) { if ($value%3==0 && $value%5==0) { $numbers[] = 'FizzBuzz'; } else if ($value%3==0) { $numbers[] = 'Fizz'; } else if($value%5==0) { $numbers[] = …

Doctrineアクセサのオーバーライド

開発中、ブラウザが下記エラー表示をしてしばらく悩んだ。。 Proxy Errorapacheのerror.logを見ると [notice] child pid 8942 exit signal Segmentation fault (11)上記で調べてもなかなか糸口がつかめず。。。 他のVirtualHostのURLを確認したら正常に表示…

Class内で自分自身をnewしたい時

PHP

static関数内で自分自身にアクセスしたい場合、$thisは使えないので自分自身をnewするわけだが、 new クラス名にすればいいのだけれど、クラス名を自動で取ってきて生成できればいいな...と思って以下実践。 class HOGE { public static function Func() { /…

symfonyのactionでログ出力

sfContext::getInstance()->getLogger()->debug("message");version 1.2.9

文字列の日時をdatetime型に変更する自作関数

function strtodatetime($date) { if (strlen($date) == 14) { list($year, $month, $day) = array(substr($date, 0, 4), substr($date, 4, 2), substr($date, 6, 2)); list($hour, $min, $sec) = array(substr($date, 8, 2), substr($date, 10, 2), substr(…

session_destroy()をしてもセッションデータが残る

PHP

session_destroyを行っても、その時点で$_SESSIONのデータが消えるわけではありません。以下、3ファイルで動作検証 test.php … セッションデータセット test1.pyp … session_destroy()コール test2.php … 遷移後の確認用ページ[test.php]

オブジェクトのシリアライズ

PHP

オブジェクトをシリアライズしてリクエストに渡してみました var = 3; $hoge = serialize($hoge); if (isset($_REQUEST['hoge'])) { $get_hoge = unserialize($_REQUEST['hoge']); echo $get_hoge->hello(); echo $get_hoge->var; } …

empty()について

PHP

!$varと判定結果は同じだが、宣言していないときのNoticeが出ない if (!$var) { echo '空です'; } // Notice: Undefined variable: var // 空です if (empty($var)){ echo '空です'; } // 空です判定結果のテスト $values = array('', ' ', '0', 0, 1, null,…

issetの判定結果いろいろ

PHP

isset($x);の結果がどうなるか? $x; // false $x = null // false $x = '' // true $x = array() // trueさらに $x = array() isset($x[0]) // falseさらに $x = 1; unset($x); isset($x) // falseまとめ: 宣言のみやnullの代入はfalseを返す 定義していな…

DBのエンコードを変換する

[user@system ~]$ psql -l List of databases Name | Owner | Encoding ---------------------+----------+---------- db_name | owner | UTF8例)S-JISに変換 pg_set_client_encoding($conn, 'sjis');→ブラウザで表示するとDBから取得した文字のエンコード…

POSTデータの数値判定

数値(小数は省く)かどうかを判定したい場合 ctype_digit()を使う。