タグ

phpに関するsomemoのブックマーク (210)

  • Battle of the Autoloaders: PSR-0 vs. PSR-4 — SitePoint

    If you’ve gone past the beginner stage in your PHP training, you’ve heard of PSR-0 – an autoloading standard that defines ways to automatically include PHP classes in your code without having to use statements like require and include. PSR-0 PSR-0 looks at the namespace of a class and discerns its location on the hard drive from that bit of information. For example, the class \Zend\Mail\Message wo

    Battle of the Autoloaders: PSR-0 vs. PSR-4 — SitePoint
    somemo
    somemo 2014/01/06
  • MacにあたらしめなPHPを簡単便利に入れる方法たくさん - uzullaがブログ

    年末だというのに所用でPHPMacに簡単に入れる方法を沢山調べています。 個人的にはphpenv+php-buildつかってます。 当に色んな方法が世の中にはあるのですが、今回のターゲットはphp5.5以降が入る方法だけです。cliで使いたいだけなので、方法によってはMysqlとの接続拡張があるとか無いとかあると思います。 テストはMavericksとLionの素の状態からやってます。 XAMPP for Mac http://www.apachefriends.org/jp/xampp-macosx.html 定番ですが、現在だとPHP5.5.6が入ります。なんか他色々、いらない物もがさっと入ります。 ただ、完全に分離された領域にはいるので、既存環境は基汚染されません。 俺はPHPだけしかいらないのですが、MysqlやApacheはあっても悪くないですね。 ただ、XAMPPのphp

    MacにあたらしめなPHPを簡単便利に入れる方法たくさん - uzullaがブログ
    somemo
    somemo 2014/01/06
  • PHP のスタティックメソッドをモック化する - pixiv engineering blog

    初登場の @tototoshi です。今回は pixiv のユニットテストで利用しているモックライブラリの紹介をします。 ここ2ヶ月くらいの間、レガシー化したとあるモジュールのリファクタリングに取り組んでいました。 リファクタリングにはテストコードが必須です。しかし今ではすっかりテストを書く文化が根付いている pixiv にもテストコードがない時代がありました。リファクタリングが必要な古いコードにはテストコードがないことが多く、そういったコードに新たにテストをつけていくのはなかなか大変です。テストの概念のないプロジェクトはテスト可能なように設計・実装されていません。テストを書くのが大変なのではなく、書けるようにするまでが大変です。 特にやっかいだったのは DB を参照したりするようなスタティックメソッドを使ったメソッドのテストでした。以下のようなスタティックな Dao を使用した Serv

    PHP のスタティックメソッドをモック化する - pixiv engineering blog
  • 2013年PHPの話題を一挙に振り返るまとめ | Engine Yard Blog JP

    2013年も当にあとわずかになりました。 日は今年話題になったPHPについての記事を公式のリリースやはてなブックマークから抽出してきた内容を元に今年を振り返ってみましょう。PHPにとって今年はどのような一年だったのでしょうか。 参考: 2012年のPHP周辺の話題振り返り | Engine Yard Blog JP PHPのバージョン 2013年中にリリースされたPHPのバージョンは5.3、5.4、5.5の3系統で合計29のリリースが行われました。リリースサイクルはほぼ毎月という形でした。またPHPの公式サイトがレスポンシブ対応の新しいデザインに切り替わりました。詳細は下記の通りです。 Version 5.4.11 2013/1/17 Version 5.3.21 2013/1/17 Version 5.4.12 2013/2/21 Version 5.3.22 2013/2/21

    2013年PHPの話題を一挙に振り返るまとめ | Engine Yard Blog JP
    somemo
    somemo 2013/12/27
  • PHP5.4時代のprivateメソッドテスト手法 #php5_4

    PHP5.4 Advent Calendar 2011の7日目です。昨日は@madapajaさんの「PHP5.4+ で開発が行われている BEAR.Sunday フレームワークを動かしてみる」でした。 さてさて皆さん、ユニットテストしてますか? PHPもテストのライブラリが充実してきており、カバレッジ100%に情熱を燃やしている方も多いことでしょう。 ユニットテストで困るのが、private/protectedメソッドです。外から呼べないので、普通の方法ではテストできません。(protectedは適当なダミーのサブクラスを作ってそこからテストできますが、ちょっと面倒です。) まあ当然です。外から呼べないようにprivateにしているので、簡単に呼べたら逆に困るわけです。しかしながら、privateメソッドも外から呼んでテストできた方が開発ははかどるでしょう。この記事ではPHPでprivat

    PHP5.4時代のprivateメソッドテスト手法 #php5_4
    somemo
    somemo 2013/12/26
  • PHP 5.6 に採用されるデバッガ phpdbg を使ってみた

    Shin x blog Advent Calendar 2013 の 21 日目です。 第 12 回関西 PHP 勉強会 にて、PHP 5.6 に採用予定の phpdbg をひと足先に PHP 5.5.7 で触ってみました。 phpdbg phpdbg は、gdb ライクな PHP 用のデバッガです。ブレークポイントを設定して、その時点のコンテキストを確認したり、ステップ実行などができます。 phpdbg | php debugger インストール PHP 5.6 から同梱される予定の phpdbg ですが、これ自体はすでにリリースされており、PHP 5.4 から利用することが可能です。インストールには、PHP のソースコードが必要になるので、PHP も ソースからインストールします。 $ sudo yum -y groupinstall "Development Tools" $ sud

  • Composerの使い方を調べたメモ(2) GitHubのリポジトリをPackagistに登録してcomposerでインストール - k-holyのPHPとか諸々メモ

    Composerの使い方を調べたメモ(1)の続きです。 ライブラリ側のcomposer.jsonの書き方を調査する成り行きで、Githubに登録しているバリデーションライブラリをPackagistに登録し、composerでインストールしてみました。 composer.json require にPHP 5.3.3以上って書いてますが、超テキトーです(汗) バージョン番号も今回初めて付けました。まあ、実質自分専用なんで…。 実はPackagistへのアカウント登録は早めに済ませていたので(Twitterでは叶わなかったID確保のため…)、後はGithubリポジトリのトップにcomposer.jsonをコミットして、PackagistでリポジトリのURLを登録するだけでOKでした。 登録完了後、パッケージのトップ画面に、自動アップデートが有効になってないからGithubのServiceHoo

    Composerの使い方を調べたメモ(2) GitHubのリポジトリをPackagistに登録してcomposerでインストール - k-holyのPHPとか諸々メモ
  • Visual Studio Express 2013 で PHP をステップ実行する - ngyukiの日記

    PHP Advent Calendar 2013 in Adventar の20日目です。 今日は IDE を使って PHP をステップ実行してみたいと思います。 Eclipse PDT? PHPStorm? いいえ、そういうのは使いません。 使うのは↓コレです。PHP のスクリプトではなく PHP そのものをステップ実行します。 Microsoft Visual Studio Express 2013 for Windows Desktop Visual Studio Express 2013 for Windows Desktop まずは Visual Studio Express 2013 for Windows Desktop をダウンロードしてインストールします。 Microsoft Visual Studio Express 2013 for Windows Desktop P

    Visual Studio Express 2013 で PHP をステップ実行する - ngyukiの日記
  • PHP: fmod - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    PHP: fmod - Manual
    somemo
    somemo 2013/12/19
  • PHP 文字列リテラルにおける変数展開ノ全テ - do_aki's log

    はじめに 記事は、PHP Advent Calendar 2013 18日目です。 前日は @oasynnoum さんの http://oasynnoum.blogspot.jp/2013/12/raspberry-pi-php.html でした。 ラズパイ x php ってあまり見ない組み合わせだったので、なかなかに新鮮でした。 さて、まず初めに大事な前提を。 この記事に書かれている内容は php-5.5.7 のコードをベースにしています。それ以前のバージョンでもだいたい同様に動くと思いますが、今後のバージョンで同じように動作するかどうかは分かりません。 世にも奇妙な php 早速ですが問題です。 code.1 は、何が出力されるでしょうか? code.1 <?php echo "${" . " . " . "}"; ぱっと見では "${ . }" が出力されそうに見えるこのコード、正

    PHP 文字列リテラルにおける変数展開ノ全テ - do_aki's log
    somemo
    somemo 2013/12/18
  • PHPのset_erorr_handlerとregister_shutdown_functionとob関数について ( エラーを整形出力したい ) ::ハブろぐ

    いきなり今回のまとめ 例によって地味なPHP記事です。最初に今回で分かったことのまとめ。 処理が続行可能なエラーはset_error_handlerで捕捉できる Fatal Errorはset_error_handlerでは捕捉できない Fatal Errorはregister_shutdown_functionで捕捉できる shutdown処理の中に、ob関数(output buffering)があると、Fatal Errorの出力より先にshutdown処理が実行される shutdown処理の中では、debug_backtraceは使えない 今回は、タイトルにもある通り、エラーを整形して最後に出力したいというのが当初のメインテーマです。それを実装する中で、上のようなことがわかりましたので、それらについて以下で書いていきます。 追記 ( 2011-04-06 ) こしあんさんがコードとし

    PHPのset_erorr_handlerとregister_shutdown_functionとob関数について ( エラーを整形出力したい ) ::ハブろぐ
    somemo
    somemo 2013/12/18
  • PHP+PDO+MySQLの組み合わせではSQLインジェクション攻撃で複文呼び出しが可能

    基礎からのPHPという書籍を読んでおりましたら、SQLインジェクションの攻撃例として、以下のSQL文ができあがる例が紹介されていました。PHP+PDO+MySQLという組み合わせです。 SELECT * FROM tb2 WHERE ban=1;delete from tb2 2つのSQL文がセミコロンで区切って1つにまとめられていますが、これを「複文(multiple statement)」と言います。私は、SQLインジェクション攻撃の文脈で複文が使える組み合わせを調べたことがあり、PHPMySQLという組み合わせでは、複文は使えないと思っていましたので、この攻撃は成立しないのではないかと思いました。 しかし、決めつけも良くないと思い手元の環境で動かしてみたところ、あっさり動くではありませんか。 PDOを用いてMySQLを呼び出す場合は複文が実行できると気づきましたが、なぜPDOの場合

  • PHP :: Bug #64625 :: Segfault on PHP 5.4.13 and APC 3.1.13

    APC Bug Reported by raresvla@... Wed, 10 Apr 2013 16:31:46 +0000 PHP: 5.4.13, OS: Ubuntu 12.04 Description: ------------ We have a complex application, which uses frameworks like Symfony2, Doctrine2, ZF1 and has a lot of traffic. We are trying to upgrade to PHP 5.4 (from 5.3.14, which is currently in production), but we are encountering a lot of segfaults in php-fpm or fatal errors like: * require

    somemo
    somemo 2013/12/16
  • [PHP]hello worldの内部的な挙動を追ってみた · DQNEO日記

    今回もEmacsのgdb機能を使って調査しました。 PHPのソースコードをコンパイルした後に、 M-x gdb Run gdb (like this): gdb -i=mi ./sapi/cli/php main関数にブレークポイントをしかけて (gdb) b main ワンライナーでPHPコードを実行 (gdb) run -r 'echo "hello"' この後ひたすらstep実行を続けて、それっぽいところまできたらbacktrace (gdb) bt #0 sapi_flush () at /home/vagrant/src/php-src/main/SAPI.c:994 #1 0x000000000075f232 in php_output_op (op=0, str=0x7ffff7ed0d20 "hello", len=5) at /home/vagrant/src/php-s

    somemo
    somemo 2013/12/16
  • PHP 開発でも Grunt を使う - ngyukiの日記

    PHP Advent Calendar 2013 in Adventar の3日目です。 前日は @matsubo さんの コピペで出来るComposer導入 でした。Composer、私も使ってます。 Grunt とは Node.js で作られた色々な作業を自動化するためのツールです。 普通は Node.js での開発や js とかのフロントエンド開発に使われますが、PHP での開発でもわりと便利です。 PHP のための Grunt プラグインも色々あるので、とりあえず次の2つだけ使ってみます。 grunt-phpunit grunt-php 前提 php や node や npm はあらかじめインストールしておいてください。 ソースとテストの準備 とりあえず phpunit が実行できるソースツリーを用意します。phpunit は今風に composer でインストールします。 $ f

  • PHPは代入と参照の違い | 2013-03-07 - bravewood の日記

    http://ameblo.jp/nikko-inma/entry-11122429825.html http://b.hatena.ne.jp/entry/ameblo.jp/nikko-inma/entry-11122429825.html ふむふむ、なになに、PHPはクソ言語で、C++もVBもクソで、 きっちり書きたいときはC きっちり書きたいときはC きっちり書きたいときはCイスから転げ落ちるわ!!! ちょっとこれはPHPerとしては突っ込まざるを得ない。 いつ突っ込むかって? 今でしょ!! とりあえず上記サイトで書かれてるサンプルじゃあ代入と参照が深く理解できないだろうってこともあり、その部分補足してみよう。 まずサンプルプログラム <?php $a = 1; xdebug_debug_zval( 'a' ); $b = $a; //これはただの値の代入(ただしこので時点でbの変

    PHPは代入と参照の違い | 2013-03-07 - bravewood の日記
    somemo
    somemo 2013/12/12
  • PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ

    この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ

    PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ
  • PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-

    PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    somemo
    somemo 2013/12/12
    ブコメ見ましょう。なんなんだよこの記事
  • モダンなPHP拡張の書き方 - 日本語公開記事 - Confluence

    How to learn公式マニュアルは作りかけで放置されていて役に立ちません。 具体的には、クラスひとつ作ることができないくらい。 まとまった情報を得るには、以下のくらいしかないのでこれを読みましょう。 Extending and Embedding PHPでもだいぶ古くなっていたり、例外の投げ方が書いていなかったりするので、その辺りはもうソースを眺めるしかないです。 新設された API などはインストールされるヘッダファイルを眺めましょう。あと ext/json や ext/snmp 辺り の公式拡張はコンパクトで up-to-date な感じなので参考にするといいです。 Summary of Extending and Embedding PHPChapter 1 The PHP Life CycleCLI・CGI 1っ回こっきりFastCGI / mod_php for pref

    somemo
    somemo 2013/12/10
  • コードをまとめる技術としてのイテレータとジェネレータ - Qiita

    ジェネレータが5.5から入ったことで完全に空気と化した(?)PHPのイテレータを、ちょっと違う面からまとめたいと思います。 コードをまとめるということ Don't Repeat Yourself(DRY)という言葉があります。達人プログラマーというに出てくる言葉です。 信頼性の高いソフトウェアを開発して、開発そのものを簡単に理解したりメンテナンスできるようにする唯一の方法は、DRY原則に従うことです。 「すべての知識はシステム内において、単一、かつ明確な、そして信頼できる表現になっていなければならない。」 (p. 27) 端的に言えば「同じことを二度書いてはいけない」ということですね。この原則を当てはめなくてもいい例外のパターンもいくつかあるのですが。。 コードにおいて「同じことを二度書いてはいけない」を忠実に守ろうとすると、同じコードを何度も書きたくなったら、何らかの方法でそのコードを

    コードをまとめる技術としてのイテレータとジェネレータ - Qiita
    somemo
    somemo 2013/12/10