タグ

phpに関するngyukiのブックマーク (328)

  • PHP - 憂鬱な希望としての PSR-7 - Feelin' Kinda Strange

    tl;dr PSR-7は普段PHPにてHTTPメッセージを扱うインターフェイスとしてそこそこ十分に機能する。メインユースケースの8割は満たすだろうが、PHPのポテンシャルの5割にも満たないかもしれない。だがそれで良い。 「今年は PSR-7 が来る」 つい先日、PHP-FIGのHTTPメッセージ用インターフェイスに関するPSR(PHP Standard Recommendations)のステータスがレビュー段階に入った。 https://github.com/php-fig/fig-standards/blob/master/index.md そこでこのエントリではPSR-7のインターフェイスが実際のフレームワークとアプリケーション間での利用の際に上手く機能するかについて考察する。なお、OOPとしての正しさについては深く言及しない(ヘッダーについてのデメテルの法則や、イミュータブル性などだ

    ngyuki
    ngyuki 2015/03/08
  • PHPのmb_ereg関数群は不正な文字エンコーディングをチェックしない

    PHPのbasename関数には、マルチバイトに対応していないという誤解(実際にはロケールの設定をすればマルチバイトでも使える)があったり、不正な文字エンコーディングをチェックしないという課題があったりで、イマイチだなーと思っている方も多いと思います。 そういう方々が、preg_replace(u修飾子つき)やmb_ereg_replaceを用いて代替関数を作成している解説も見かけますが、それではこれら正規表現関数は不正な文字エンコーディングをチェックしているのだろうかという疑問が生じます。 ざっと調べたところ、以下の様な状況のようです。 preg_replace : 不正な文字エンコーディングをチェックしている mb_ereg_replcae : 不正な文字エンコーディングをチェックしていない ここでは、mb_ereg_replaceが不正な文字エンコーディングをチェックしない状況と、そ

    PHPのmb_ereg関数群は不正な文字エンコーディングをチェックしない
    ngyuki
    ngyuki 2015/02/24
    UTF-8 の後続バイトではない "<" を後続と解釈しているのがおかしいような気もする
  • AWS SDK for PHP のパフォーマンスを改善するたった3つのこと - Qiita

    いずれも、ほとんどコードに手を加えることなくできる改善なので、SDKを利用しているなら、すぐにでもやるべきだ。 もし、これから開発をはじめようとしているなら、前提としてまず、 PHP5.6 もしくは PHP5.5 を使うことをオススメする。 もちろん、PHPのバージョン関係なく以下は有用なものです。 1. Composer の classmap autoloader を使う

    AWS SDK for PHP のパフォーマンスを改善するたった3つのこと - Qiita
    ngyuki
    ngyuki 2015/02/19
  • JSON SchemaとPHP

    というタイトルで発表してきました。Engine Yardさま、いつも会場提供ありがとうございます。 ( 第72回 PHP勉強会@東京 : ATND ) JSON Schemaというものがあって、すげー応用範囲が広くて、バリデーションなら大体これだけで出来ますよーという内容でした。 スライドはちょっとネタに走ってますが、書いてあることは割と気です。「JSON SchemaはJSONのバリデーションを行うためのもの」と一般には定義されていますが、JSON互換のデータ構造を持っている動的型付き言語においては、JSON Schemaで言語ネイティブのデータ構造が全てバリデーションできてしまうのです。 JSON Schemaはいまひとつ流行ってない気もしますが、構造そのもののバリデーションに主眼を置いていたり、言語を超えてバリデーションルールを共有できたり、結構おもしろいことができるので、使ってみ

    JSON SchemaとPHP
    ngyuki
    ngyuki 2015/02/13
    今更だけど便利
  • GHOST脆弱性を用いてPHPをクラッシュできることを確認した

    GHOST脆弱性について、コード実行の影響を受けるソフトウェアとしてEximが知られていますが、PHPにもgethostbynameという関数があり、libcのgethostbyname関数をパラメータ未チェックのまま呼んでいます。そこで、PHPのgethostbynameを用いることでPHPをクラッシュできる場合があるのではないかと考えました。 試行錯誤的に調べた結果、以下のスクリプトでPHPをクラッシュできることを確認しています。CentOS6(32bit/64bitとも)、Ubuntu12.04LTS(32bit/64bitとも)のパッケージとして導入したPHPにて確認しましたが、phpallで確認した限りPHP 4.0.2以降のすべてのバージョンのPHPで再現するようです。なぜかPHP 4.0.0と4.0.1では再現しませんでした。 <?php gethostbyname(str_

    ngyuki
    ngyuki 2015/02/07
    gethostbyname を直接呼ぶ以外の影響はないのかな?
  • PHP7の現状

    (Last Updated On: 2018年8月13日)PHP7が今年の秋リリースされる予定です。まだまだ多くの変更が行われる予定ですが、現状を簡単にまとめてみたいと思います。代表的な物のみ取り上げています。 ご存知ない方の為に書いておきます。現在リリースされているPHPPHP5です。次のPHPPHP7になり、PHP6はリリースされません。PHP6をUnicodeをネイティブ文字列としてサポートするバージョンとして開発されましたが、文字エンコーディングチェックを内部で自動的に行おうとするなど、無駄が多く遅いため破棄されました。(文字エンコーディングのバリデーションは来アプリでするものです)このため、PHP6はスキップされ次のPHPPHP7になります。 追記:PHP7.0は既にリリースされています。概要はPHP 7.0の概要・新機能・互換性、詳しくはマイグレーションドキュメントをご

    PHP7の現状
    ngyuki
    ngyuki 2015/01/26
    ネイティブスレッド対応ってつまり OS が元々もってる TLS を使うようになったということかな?
  • PHP のトレイトに気をつける - tototoshi の日記

    普段 Scala でトレイトを使いまくってるけれども PHP にも 5.4 からトレイトが入った。 trait の良いところは多重継承のできない言語で多重継承っぽいことができることだ。 use, use とつけていけば、いくらでも追加できる。DRY に書けてよいことだ。 対して悪いところはいとも簡単に複雑で暗黙的な依存関係が生まれることだ。 例えばこんなの <?php trait Greeting { public function say() { if ($this->location == 'ja') { echo 'こんにちは' . PHP_EOL; } else { echo 'Hello' . PHP_EOL; } } } class Location { } class US extends Location { use Greeting; private $location

    PHP のトレイトに気をつける - tototoshi の日記
    ngyuki
    ngyuki 2015/01/15
    トレイトはトレイトの中で閉じていなければ使いにくいと思う
  • Shift_JIS なのに丸数字が使われた XML を SimpleXML で読み込む - ngyukiの日記

    稀にある encoding="Shift_JIS" であるにも関わらず丸数字が使われている XML は、 SimpleXML で読むと次のようなエラーになり読むことが出来ません(DOM も libxml に基づくので同様です)。 simplexml_load_file(): ~~~ parser error : switching encoding: encoder error encoding="Shift_JIS" の部分を encoding="Windows-31J" とかに置換すれば読めますが、 事前にエンコーディングがわかっているなら mbstring の HTML-ENTITIES を使って次のように読むことが出来ます。 <?php // XML ファイルの読み込み $data = file_get_contents(__DIR__ . '/xxx.xml'); // マルチバ

    Shift_JIS なのに丸数字が使われた XML を SimpleXML で読み込む - ngyukiの日記
    ngyuki
    ngyuki 2015/01/09
    この方法は HTML にあって XML にない実体参照に変換されるとアウトなので不完全
  • PHP処理系の未来 | gihyo.jp

    PHPユーザーの皆様、あけましておめでとうございます。稿ではPHPとHHVMの2つのPHP処理系について紹介します。今後のPHPのトレンドを占うのにお役立ていただければ幸いです。 PHPの現在 稿執筆時のPHPの最新バージョンは5.6.4です。最近のPHPはマイナーバージョンアップを1年ごとに繰り返すスタイルになっており、PHP 5.6.0はPHP 5.5.0から14ヶ月後の2014年8月にリリースされました。PHP 5.6ではphpdbgという新デバッガが同梱されるようになるなど注目点もありましたが、過去のバージョンアップに比べると変化が小さいバージョンアップでした。 ところで、PHPの次のバージョンアップではメジャーバージョンアップを予定しており、バージョン番号としては7.0となります。メジャーバージョンが5から7へと一気にジャンプするのは珍しい現象ですが、過去に開発中止となったP

    PHP処理系の未来 | gihyo.jp
  • Composerで依存パッケージのcomposer.lockは使われるのか? — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    rootのcomposer.lockにバージョンが記載されていれば、composer installした場合は、その記載バージョンのパッケージがインストールされます。 では、依存パッケージにcomposer.lockがある場合は、どうなるのでしょう? 確認してみましょう。 現在、Ray.Diにはcomposer.lockが含まれています。そして、doctrine/annotationsのバージョンがv1.2.1になっています。 https://github.com/koriym/Ray.Di/blob/develop-2/composer.lock#L11 検証方法 まず、フォルダを作成し、rootのcomposer.jsonを作成します。 { "require": { "ray/di": "~2.0@dev" }, "minimum-stability": "dev", "prefer-

    ngyuki
    ngyuki 2014/12/31
  • 第85回PHP勉強会でPHP7について発表してきました - hnwの日記

    12月24日に開催された第85回PHP勉強会で発表してきました。以下が発表資料です。 プレゼンの内容としては以前の記事「PHP7はなぜ速いのか(zval編)」の補足説明と、zend_stringとHashTableの改善について紹介するようなものでした。 僕自身まだ理解不足のところがあると思いますので、おかしいところがあればご指摘ください。 ちなみに、質疑応答のときに新HashTableでhashdos問題が解決するかのような回答をしましたが、間違いでした。PHP7で性能面での改善はあるものの、ハッシュの衝突を意図的に起こせるのは変わっていません。これについては現在php-internal MLで議論中なので、今後また動きがあるかもしれません。 この新HashTableについては、先日@nikicさんが書かれたブログ記事「PHP's new hashtable implementation

    第85回PHP勉強会でPHP7について発表してきました - hnwの日記
    ngyuki
    ngyuki 2014/12/27
  • PHPPHPがド変態であることに今さら気づいた - hnwの日記

    Anthony Ferraraさん(@ircmaxell)が2012年12月に公開したPHPで記述されたPHP実装「PHPPHP」について、今さらですが調べてみました。 @ircmaxellさんはPHPの内部構造についての解説サイト「PHP Internals Book」の筆者の一人であり、PHP 5.5で導入された新しいパスワードハッシュ関数の提案・実装者でもあります(参照:https://wiki.php.net/rfc/password_hash)。最近発表した「Recki-CT」も興味深いプロダクトです。 そんなわけでジョークレベルではないだろうとは思ってましたが、今回中身を見てみたらガチすぎて恐怖しました。どういうモチベーションでこんなもん作る気になるんだ…。 PHPPHPの挙動はおおよそ次のようなものです。 PHPソースコードを受け取って構文解析して抽象構文木(AST)を作る

    PHPPHPがド変態であることに今さら気づいた - hnwの日記
    ngyuki
    ngyuki 2014/12/22
  • PHP開発には単なるエディタだけでなく、もっと良い環境を - Webアプリエンジニア養成読本 AdventCalendar2014 22日目 - uzullaがブログ

    いきなり宣伝ですが、エンジニアのお祭りYAPC::Asia Tokyo 2015の情報をもれなくチェックするためのメール通知サービスが開始されました! YAPC::Asia Tokyo 2015 毎年「チケット販売いつのまにおわったの…」等といった悲しい声をいただきます。わすれないように是非上記リンクより、メールアドレスを登録しましょう! さておき、エントリはWebアプリエンジニア養成読アドベントカレンダーです。 Webアプリエンジニア養成読 Advent Calendar 2014 - Qiita Webアプリエンジニア養成読[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus) 作者:和田 裕介,石田 絢一 (uzulla),すがわら まさのり,斎藤 祐一郎技術評論社Amazon私の担当分においては、こちらの書籍でお話でき

    PHP開発には単なるエディタだけでなく、もっと良い環境を - Webアプリエンジニア養成読本 AdventCalendar2014 22日目 - uzullaがブログ
    ngyuki
    ngyuki 2014/12/22
    同じチームで開発する人は PhpStorm で揃えられればなーと思うのだけど、やっぱり英語がーという人が多い
  • チームでSymfony2を半年使って感じたメリット・デメリット[PHP][Symfony2] - あざらし備忘録。

    この記事はSymfony Advent Calendar 2014 19日目の記事です。 はじめに 今年新卒として配属されてからエンジニア4人のチームで半年ほどSymfony2を使って開発をしてきて、Symfony2で良かった(メリット)と感じた所や、こういう時辛いねー(デメリット)と感じた所がいくつか見えてきたので、まとめようと思います! 使おうかどうか迷っている人などの参考になればと思います。 メリット まずはメリットから。良い所がたくさんありました! 部品の再利用性が高い Symfony2は当に疎結合に徹底した思想だなと感じました。 Symfony2はいわゆる「フルスタックフレームワーク」のイメージが強いですが、その他のプロダクトにもぶちこめるほどのパーツ単位のものが組み合わさってフルスタックな形を実現しています。 なので、そういったSymfony2が提供しているコンポーネントのご

    チームでSymfony2を半年使って感じたメリット・デメリット[PHP][Symfony2] - あざらし備忘録。
  • Do You PHP?のWebサイト閉鎖とコンテンツ移行について - Do You PHP はてブロ

    2005/05/30から独自ドメイン(doyouphp.jp)で公開していたDo You PHP?ですが、 コンテンツが古い(PHP4とかいつの話だよ)&全然更新していない(はてダも。。。) 公開当時よりPHPユーザーが大幅に増え、それに伴って良質なコンテンツが大量に公開されている サーバ代金だけはかかっている などイロイロとありまして、Webサイトについては2015年1月末をもって閉鎖することにしました。10年弱お世話になりましたm(__)m これに伴い、今後も有用と思われる一部コンテンツのみ(デザパタぐらいかな。。。?)はてダに移行する予定です。エントリのタグに[doyouphp]を付けてます。 Do You PHP?から移行したコンテンツ なお、ドメインは維持してメールアドレスはそのまま使える状態にする予定です。

    Do You PHP?のWebサイト閉鎖とコンテンツ移行について - Do You PHP はてブロ
    ngyuki
    ngyuki 2014/12/11
  • 普通じゃないモッキングフレームワークAspectMockがパワフル過ぎる — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    PHPUnitの設定 続いて、PHPUnitからAspectMockを使うための設定をします。まず、backupGlobalsを必ずfalseにします。 phpunit.xml <phpunit bootstrap="bootstrap.php" backupGlobals="false"> そして、tearDown()メソッドで登録したテストダブルを削除するようにします。 TestCase <?php use AspectMock\Test as test; abstract class TestCase extends \PHPUnit_Framework_TestCase { protected function tearDown() { test::clean(); // 登録したテストダブルを削除 } } AspectMockの使い方 それでは、AspectMockの使い方を見て

    ngyuki
    ngyuki 2014/12/09
    名前は聞いたことあったけど、拡張を使わずにどう実現しているんだろう → ストリームフィルタ使ってた
  • PHP7はなぜ速いのか(zval編) - hnwの日記

    この記事はPHP Advent Calendar 2014の7日目です。 僕は先日のPHPカンファレンス2014でPHP7に関するLTをしました(参照:「PHPNGの動向」)。ただ、時間が限られていたこともあり、あまり踏み込んだ内容には触れませんでした。 稿ではLTの内容から深掘りし、zvalという内部的な構造体がどう変わるのか、性能面のメリットにフォーカスして解説してみます。 PHPをとりまく状況 まず最近のPHPの話題をおさらいしておきましょう。 これまでPHPには実用レベルの別実装が存在しない状態が続いていましたが、HHVMの登場で状況が変わってきました。HHVMはFacebookが開発しているPHP実行環境で、PHPより高速で互換性も高いのが特徴です。Facebookで実際に利用されているだけでなく、他の企業でも商用サービスで利用する事例が増えてきています。 そんな中、2014年

    PHP7はなぜ速いのか(zval編) - hnwの日記
    ngyuki
    ngyuki 2014/12/07
    スカラー値さえ CoW されていた
  • Packagist - popular

    Packagist is the main Composer repository. It aggregates public PHP packages installable with Composer.

    ngyuki
    ngyuki 2014/11/22
    packagist のモジュールの人気順
  • Hack で JSON返すシンプルなマイクロWebアプリケーションフレームワーク書いてみた - ぷぎがぽぎ

    [追記] PHPカンファレンスのUstのリンク追加 [追加] Hackの面白そうなところを追記 [追記] RouterをHackで書きなおした続編はこちら http://d.hatena.ne.jp/brtRiver/20141019/1413738340 久しぶりすぎるブログ更新ですね。。 Hack_(プログラミング言語) Hackは、Facebookにより開発されたプログラミング言語である。オープンソースとして公開されており、同社が開発したPHP実行環境のHipHop仮想マシン (HHVM) で動作する 前から気にはなっていましたが書いたことはなかった状態でした。 今年のPHPカンファレンスのust (HHVM + Hack == PHP++)を見ていて、Hack欲が高くなり触ってみないとわからないということで JSONを返すだけのいわゆるマイクロフレームワーク(Haku)を書いてみま

    Hack で JSON返すシンプルなマイクロWebアプリケーションフレームワーク書いてみた - ぷぎがぽぎ
  • DIとサービスロケータの違い

    DIとサービスロケータは、いずれもオブジェクトの構築と依存の解決という仕事を切り出すためのパターンです。ところで、この2つのパターンの違いを明確に説明できるでしょうか? Pimpleでシンプルに正しくDIを理解する のコードは以下のようになっていました。 <?php require_once '../vendor/pimple/pimple/lib/Pimple.php'; // インフラ interface MailerInterface { public function send($body); } class SendmailMailer implements MailerInterface { public function send($body) { } } // ドメイン class NewsletterTransfer { protected $mailer; public

    DIとサービスロケータの違い
    ngyuki
    ngyuki 2014/10/24
    オブジェクトがコンテナに依存するならサービスロケーターで、オブジェクトがコンテナに依存しないならDI、だとおもう