Category Archives: 基本

モダンPHPアンチパターン

QiitaでモダンPHPアンチパターンが纏められていたのでメモ。

http://qiita.com/tadsan/items/157969b338fd8b782b21

なんでこれに行き着いたかってc++とphpのリファレンスの違いで混乱しちゃって
久々にPHPで参照渡しで速度&メモリを測ってみたら
普通に値渡しとパフォーマンスに差がない……というか参照渡しのほうが遅い、という結果になったので
色々調べてしまいました。

もう参照渡しは使わないぞ。
後、大量配列、大量ループでarray_shiftは遅いぞ。

isset, empty, is_null の動作まとめ

isset, empty, is_null の動作、分かっているつもりでも忘れちゃうことあるので時々見直そうと思います。

http://qiita.com/mpyw/items/51bf42fe1ad8a7e535aa

is_nullが関数である、とか、値が空のxmlドキュメントがemptyになる、とか知らなかった。

PHPのパフォーマンスを引き出すベストプラクティス

PHPのパフォーマンスを引き出すベストプラクティス63の日本語訳メモ

http://hayo0914.hatenablog.com/entry/2012/04/05/023227

ちょっと懐かしい記事ですが、メモメモ。

if (strlen($foo) < 5) よりもif (!isset($foo{5}))のほうが速い(文字列を配列として扱う)。

こんな書き方されてるの見たらズッコケますが、知らないよりは知っていたほうがいいほうが知識ですね。

php: Fatal Error をキャッチするには

PHPはFatalエラーはキャッチできないと聞いて「そうだっけ?」と色々調べてみました。

結果Fatalエラーだと、どの段階で止まったというのは分からない、、という感じなんですかね?

http://keicode.com/cgi/php-error-handling.php

この辺をみると、 register_shutdown_function() で Fatal Error を捕まえられるらしいが、実質何もしないときと情報源が変わらず、せいぜい後処理をしてから終了できるくらいのようだ。
作ってみる

みたいです。
http://bmath.org/wordpress/?p=1118

セキュアな PHP アプリケーションを作成するための 7 つの習慣

IBMのPHP記事は衒いがなく結構すきです。

セキュアな PHP アプリケーションを作成するための 7 つの習慣
http://www.ibm.com/developerworks/jp/opensource/library/os-php-secure-apps/

    入力を検証する
    ファイルシステムを保護する
    データベースを保護する
    セッション・データを保護する
    XSS (Cross-Site Scripting: クロスサイト・スクリプティング) の脆弱性から保護する
    フォームへの投稿を検証する
    CSRF (Cross-Site Request Forgeries: クロスサイト・リクエスト・フォージェリー) から保護する

復習復習っと。

PHPの基礎2:入力値は検証して使う

GETやPOSTで送られてきたデータなどは悪意が籠もったデータと考え、出来る限り検証して使う。

よくあるのは、入力値が数値の場合は、数値以外を受け付けないことだろう。


if (preg_match("/^[0-9]+$/", $_POST['id'])) {
$id = $_POST['id'];
}

フレームワークだと便利なvalidationが大体ついてますね。
ホワイトリストを通してデータを使うことを忘れずに!

PHPの基礎1:PHPでサニタイジングといえばhtmlspecialchars

最近PHPをペラ1で書くことが多く、そうはいってもしっかりしなければいけない部分が多いので、基礎のおさらいをメモっておきます。

PHPでサニタイジングっていったらhtmlspecialcharsです。

http://php.net/manual/ja/function.htmlspecialchars.php

よくあるのは

php5.4でflagが色々増えてますね。
昔は自分で関数つくってやっていたutf系も

ENT_SUBSTITUTE

なんてのが出来てますので、楽になりました。

PHP、5.3 系のサポート終了が迫るも移行進まず

スラッシュドットの記事、PHP、5.3 系のサポート終了が迫るも移行進まずですが、え?!と。
もう5.4の時代なんだ!と(笑)
最近全然Programingしていないので、隔世の感が有りますね。
というわけで、5.4の新機能を色々触ってみようと思います。より便利になっているんですかねえ。

PHP5.5新機能「ジェネレーター」初心者入門

PHP5.5の新機能、ジェネレーターの解説。これは非常に分かりやすかったのでジェネレーターよくわからないんだよね、という皆さまもぜひ。

PHP5.5新機能「ジェネレーター」初心者入門

Pythonでやったハズだけど、効果的な使い方を覚えてないのはなんでだろ。。

身も蓋もなく言うとPHPでXMLを受け取るとはつまり

タイトルはホッテントリメーカーを使ってみましたw
面白いですね。これ。

というわけで、PHPでXMLを受け取る方法ですが
とあるサービスでこちらのPHPサーバファイルを叩いて貰って
XMLを取得する、ということをしたかったんですが
POSTデータを見ても何も入ってないΣ(゚д゚lll)ガーン

ん?ん?取得方法を間違えたかな?何か特殊な受け取り方があるのかな?と思っていたら
なんと標準入力で受け取るんですね。。


$xml = file_get_contents('php://input');

PHP長いこと使ってましたが、初めてXMLをリクエストとして受け取ったので
全然知らなかったです。。