タグ

PHPに関するackintoshのブックマーク (180)

  • 誰かの作ったSDKをComposerでパッケージングする - Qiita

    Composerやクラスのオートローディングの概念がなかった時代に作られたPHPライブラリを、いい感じに管理を試みます。 この記事の前提として、PHPにおける「SDK」とは、概ね外部Webサービスをプログラミング言語から透過的に連携するためのHTTPリクエスト処理と、そのレスポンスをマッピングしたクラスから構成されるものを指すことが多い気がします。 あとこの記事は個人の見解であり、この内容は架空のものです。いいですね? 背景1: PHP 現代的なPHPライブラリはComposerを前提に設計され、ひとつひとつのファイルで明示的にincludeやrequireを書いて読み込む必要も、読み込まれる必要もありません。 そのあたりの話は先月北海道で、Composerの説明と絡めて話してきました。 今回の記事に関連のある点を要約すると、こんな感じです。 Composerやオートロード以前の時代は、ラ

    誰かの作ったSDKをComposerでパッケージングする - Qiita
  • PHPStanで始めるPHPのための静的解析 #phperkaigi

    こんにちは。最近メルペイに異動になった @hiraku です。 2018年3月10日(土)に、PHPerKaigi 2018というイベントで登壇してきました。「PHPStanで始める継続的静的解析」ということで、メルカリで使用しているPHPStanというツールについて解説しました。 phperkaigi.jp 発表内容を短くまとめると メルカリではPHPStanというツールをCIフローに組み込み、PHPコードの静的解析を行ってコードの信頼性向上に努めています。 PHPStanはautoloadファイルを解釈し、一部のコードを実行することで解析の高速化を行っており、よくできています。 とはいえ、PHPに対して可能な解析に限界はあるので、テストも合わせて行っていきましょう。 大事なのは、品質向上のアプローチが用意され、心配せずにリリースできることです。 autoloadを認識するということ ス

    PHPStanで始めるPHPのための静的解析 #phperkaigi
  • 2018年のPHPDoc事情とPSR-5 - Qiita

    PHPDocとは、クラスや関数などのブロックに記述できるDocComment内に記述する書式の通称です。この書式の情報源として時折PSR-5が参照されることがあるので簡単に状況をまとめます。 TL;DR PSR-5の標準化ステータスは昨年10月にABANDONED (放棄・議論停滞)になりました 2018年9月26日にPSR-5とPSR-19が分割され、ともにDRAFT状態に入りました PHPDocを型注釈として利用する各処理系の実装にはばらつきがあり、PSR-5とは相違点があります PhpStormは現在のところ(2018.1 EAP)PSR-5と互換性がありません 特にチーム開発では、対応する型記述の書式について注意が必要です PhpStormに配慮して書く場合、phpDocumentorの仕様を参照する方が安全です PHPDoc リファレンス — phpDocumentor この記事

    2018年のPHPDoc事情とPSR-5 - Qiita
  • PHP Sandbox - Execute PHP code online through your browser

    Test your PHP code with this code tester You can test and compare your PHP code on 400+ PHP versions with this online editor. <?php // Enter your code here, enjoy! $array = array("1" => "PHP code tester Sandbox Online", "emoji" => "😀 😃 😄 😁 😆", 5 , 5 => 89009, "Random number" => rand(100,999), "PHP Version" => phpversion() ); foreach( $array as $key => $value ){ echo $key."\t=>\t".$value."\n";

  • php - 変換 - json 大量データ

  • 作業ブランチではcomposer.lockの変更を最小化してください - Qiita

    お疲れ様です。田中です。 PHPプロジェクトの作業ブランチ内で、追加のライブラリが必要になったとき composer.json に変更を入れますよね。このときおもむろに composer update を叩くと composer.lock に派手な差分が発生するので、絶対にしないでください。 composer update はすべてのパッケージについて、現時点で可能な限り高いマイナーバージョンに上げようとします。当然、自分が master からブランチを切った時点でインストールされていたパッケージのバージョンは、現時点より古くなっています。直接使っているものだけでなく、その依存パッケージも上がります。 いちど composer.lock に大きな差分が発生すると、コミットログが無駄に大きくなるばかりでなく、その後のりベースやマージに支障をきたします。後のリベース/マージ後はつねにフルの

    作業ブランチではcomposer.lockの変更を最小化してください - Qiita
  • 日曜プログラミング講座/PHP言語 - 文法編 - Water-Sunlight

    Webサーバの出力バッファの内容を強制出力します。(※下図を参照して下さい) PHPの出力バッファリングが有効な場合は、ob_flush() に続けて flush() を呼び出します。 header("Content-Type: text/plain"); echo "Hello"; ob_flush(); // PHPの出力バッファを強制出力します。 flush(); // Webサーバの出力バッファを強制出力します。 sleep(2); // "Hello"はブラウザで表示されているはずです。 echo " world.\n"; // 2秒待つと" world."も表示されます。

  • is_uploaded_file() / move_uploaded_file() の必要性? - Qiita

    まだ 「ファイルアップロードの例外処理はこれぐらいしないと気が済まない」 をご覧になっていない方は先にそちらからどうぞ。 問題提起 ファイルアップロード関連の記事を書いているとき、いつも疑問に思っていることがあった。 だからさぁ、 アップロードされなかったファイル の名前がどうやったら $_FILES['upfile']['tmp_name'] に混入できるんだよ!?このチェックいるのかホントに!? なんて思いながら「PHPマニュアルが勧めているから」という理由で訳も分からず記事を書いていた。 歴史的な理由 そう、実はこの関数の背景には 歴史的な理由 があったのだ… register_globals という害悪機能の存在だ。もしこの機能が有効な場合、以下のようなURLでリクエストを受けたとき、不正に /etc/passwd を閲覧される可能性がある。 <?php printf( '<a h

    is_uploaded_file() / move_uploaded_file() の必要性? - Qiita
  • PHP extensionとZend extensionの違い - hnwの日記

    PHPのextensionにはPHP extensionとZend extensionという2種類があります。これらの違いが何なのか、PHPの実装レベルから調べてみました。 PHPのextensionについて PHPのextensionには2種類が存在します。これらは次のようにphp.iniでロード指定する構文が異なります。 extension=extension.so zend_extension=/path/to/extension.so 稿では「extension=」でロードされるものをPHP extension、「zend_extension=」でロードされるものをZend extensionと呼びます。これらはPHPのソースコード中ではそれぞれmoduleとextensionと呼ばれているので注意してください。 代表的なZend extensionとしてはXdebugとZend

    PHP extensionとZend extensionの違い - hnwの日記
  • Guzzle Middlewareを作ってみる - Qiita

    フレームワーク的な文脈でのミドルウェアとか聞くと、使ってみたくなりますよね。玉ねぎ構造です。 あまりこれまでGuzzleを触ったことがなかったのですが、Guzzle6系のドキュメントを見ていたら、そんな機構があるそうじゃありませんか。 http://docs.guzzlephp.org/en/latest/handlers-and-middleware.html 昔のGuzzleはもっぱらイベントディスパッチャで共通部分を拡張するイメージでしたが、今はミドルウェア風味のインターフェースになってるみたいですね。 ということで作ってみます。 が、公式ドキュメントを読むと、functionがめっちゃ入れ子になってて、何やってるかよくわからないw use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterfac

    Guzzle Middlewareを作ってみる - Qiita
  • PHPerKaigi 2018

    2018/04/02(月) 09:00 写真をアップロードしました! 2018/02/28(水) 21:00 パンフレットができました! 2018/02/27(火) 10:40 PHPreParty, PHPostParty チケット販売開始しました 2018/02/21(水) 11:20 スポンサー 一部プラン販売中です 2018/02/14(水) 14:29 当日スタッフの募集を終了しました PHPerKaigi とは PHPerKaigi(ペチパーカイギ)は、現在PHPを使用している、過去にPHPを使用していた、これからPHPを使いたいと思っているエンジニアが、技術的なノウハウを共有するためのカンファレンス(イベント)です。 PHPerKaigiのメインは公募されたスピーカーによるトークセッションですが、その他にも、 日中から集まったPHPerたちと技術的な話を思う存分するための企

    PHPerKaigi 2018
  • PHPプログラマのためのXXE入門

    この日記はPHP Advent Calendar 2017の25日目です。前回は@watanabejunyaさんの「PHPでニューラルネットワークを実装してみる」でした。 OWASP Top 10 2017が発表され、ウェブのセキュリティ業界がざわついています。というのも、2013年版までは入っていたCSRFが外され、以下の2つの脅威が選入されたからです。 A4 XML外部実体参照(XXE) A8 安全でないデシリアライゼーション これらのうち、「A8 安全でないデシリアライゼーション」については、過去に「安全でないデシリアライゼーション(Insecure Deserialization)入門」という記事を書いていますので、そちらを参照ください。 稿では、XML外部実体参照(以下、XXEと表記)について説明します。 XXEとは XXEは、XMLデータを外部から受け取り解析する際に生じる脆

  • PHP - The Wrong Way

    概要 PHPプログラミングの世界では、ある一定のトレンドが「モダンPHP」として、一部の人によって (彼らの書籍やウェブサイト上で) 強烈に広められ、他のアプローチは、遅れていたり、愚かだったり、あるいは単に間違いだとみなされて、眉をひそめられています。 それらの人々は、彼らの物事のやり方を他人に追従させようと、飽くなき努力を続けているように見えます。 このウェブサイトは、PHP プログラミングに関する現実的な見解を示すために作られました。流行りのトレンド、理論、学問的な教示ではなく、経験と実践の帰着を書き記した視点です。 ウェブサイト PHP - The Wrong Way は生きたドキュメントですので、より多くの情報が明らかになるにしたがって更新され続けます。 お気軽にコントリビュートしてください。 翻訳 ドイツ語 英語 フランス語 日語 インドネシア語 トルコ語 ペルシャ語 ポルト

  • PhpStorm + Xdebug でリモートデバッグ - Qiita

    AndroidJava EE で開発していたりすると、デバッグ実行によくお世話になる。ステップ実行で 1 つ 1 つ追っていくと、それでバグの原因が見つかったりするので重宝するものだ。 PHP では Xdebug を使用して同様の事が出来るのだが、設定が面倒だったり、Java ほど使い勝手が良くなかったりするので 結局 var_dump や print_r で問題箇所で変数の内容を出力する事でデバッグしてしまう。しかもそれで殆ど何とかなってしまう。 とはいえ、折角なので PhpStorm でステップ実行してみる。以下自分用メモ。 前提 最近は開発環境といってもデスクトップ OS (Windows / OS X / Linux) に直接 (W,M,L) AMP 環境を構築する事は少なくなってきた。 VM 上に Linux の環境を構築した方がスナップショットを撮っておけば失敗してもすぐ

    PhpStorm + Xdebug でリモートデバッグ - Qiita
  • PHP開発者がいまさら聞けない、Xdebugの基礎の基礎

    「Xdebug」は15年間愛されてきた、PHPの定番デバッグツール。それでもまだ使ったことがないPHP開発者のために基的な使い方を紹介します。 Xdebugの登場から15年が経ちました。ここでXdebugの目的や機能をあらためて紹介します。 XdebugはPHPのエクステンション(コンパイルしてPHP環境にインストールするもの)で、デバッグの機能を提供します。 スタックの追跡。エラーが発生するまでの経過を詳細に表示する。関数に渡されたパラメーターも表示され、エラーの原因を探しやすくする var_dumpを整形して出力する。VarDumper同様、色分けした情報と構造化ビューを生成。スーパーグローバルのダンパーが可能 コードのボトルネックを特定するプロファイラー。外部のツールでパフォーマンスのグラフをビジュアライズでき、Blackfireのようなグラフが書ける 実行中のコードや、IDE、ブ

    PHP開発者がいまさら聞けない、Xdebugの基礎の基礎
  • PHP5.3 対応でも PHPUnit は 6 スタイルの記述へ移行しよう - Qiita

    PHPUnit は 6.0 で PHP7.0 未満との互換性を切り捨てました。それとともに、Zend1 式の名前空間を捨てて、PHP5.3 で導入された名前空間に移行しました。 <?php use PHPUnit\Framework\TestCase; class MyTestCase extends TestCase { } PHPUnit >= 6.0 にはもう PHPUnit_Framework_TestCase はありません。use PHPUnit\Framework\TestCase; が今後のスタイルです。 でも、弊社まだ番に 5.x がいるんですよ、とか、自分の公開しているライブラリ/フレームワークには 5.x 互換性の維持が必要で、とか、完全に 7 になりきれない事情がいろいろありますよね。高い方に合わせると前のやつが動かない、低い方に合わせておけばどうにか両バージョン動

    PHP5.3 対応でも PHPUnit は 6 スタイルの記述へ移行しよう - Qiita
  • PHP5.6からPHP7にアップグレードして実際にはまった点9個 · DQNEO日記

    仕事で使っているPHPアプリケーションをPHP7 beta1で動かしてみたらそのままでは動きませんでした。 私が実際にはまった点を紹介します。 なお、PHP7の変更点についてはhnwさんの記事に詳しく網羅されているのでご一読ください。 PHP7で変わること - hnwの日記 Apacheのモジュール名が変わっていた ApacheにPHPを組み込むためのモジュール(俗にいうmod_php)のモジュール名・ファイル名が変更になっていました。 LoadModule php5_module modules/libphp5.so ↓ LoadModule php7_module modules/libphp7.so memcache extensionがインストールできない PHPからMemcachedを使うためのExtensionには2つあります。 memcache memcached memca

    PHP5.6からPHP7にアップグレードして実際にはまった点9個 · DQNEO日記
  • ChatWorkとPHPと私

    PHPConference 2017 ChatWork株式会社 田中佑樹

    ChatWorkとPHPと私
  • PHPカンファレンス2017の懇親会で「即php」というLTしました - uzullaがブログ

    突然ホワイトボードがあらわれたので、がんばってLT資料を2時間くらいでかきあげまして、 懇親会LT資料大体できた!! やるぞー!🍺🤤🎤 #phpcon2017 pic.twitter.com/U5iozqFj2v— uzulla (@uzulla) 2017年10月8日 以下がそのスライドです。 speakerdeck.com 解説 PHPerはPHPを即使いたいはず ビルドやrepo追加なんてやってられるか!!!!!!!!!!!!! PHPってビルドするとたくさんファイルできるって思われがち ライブラリはいってないとコピーしただけではうごかない環境もあるよね こんな風にビルドすると、1個のファイルを転送するだけでPHPプログラムうごかせるよ! 怒られるので真似ないでください そんなことより PHPカンファレンスたのしかった!さいこう! さらに個人的に重要なこと 電撃発表された来年の

    PHPカンファレンス2017の懇親会で「即php」というLTしました - uzullaがブログ
  • 運用、追加開発しづらいPHPアプリケーションに未来を与える方法 - Speaker Deck

    Transcript ӡ༻ɺ௥Ճ։ൃͮ͠Β ͍PHPΞϓϦέʔγϣ ϯʹະདྷΛ༩͑Δํ๏ VOYAGE GROUP ాத վ (ara_ta3) PHP ΧϯϑΝϨϯε 2017 #phpcon2017_3 ࣗݾ঺հ • VOYAGE GROUP ৽ଔ4೥໨ • fluct(޿ࠂ) -> Zucks(޿ࠂ) -> HR Tech Studio(ਓࡐ) • ओʹαϙʔλʔζ։ൃ • Twitter(@ara_ta3) • ޷͖ͳݴޠ • Scala, Go, PHP7.x • Splatoon2 ΢σϚΤ S+0 VOYAGE GROUP VOYAGE GROUP None None • ӡ༻ɺ௥Ճ։ൃͮ͠Β͍ΞϓϦέʔγϣϯ ΛͲ͏վળ͍͔ͯ͘͠ • ୈҰา໨ΛͲ͏΍ͬͯ౿Έग़ͯ͠ະདྷʹ޲ ͔͏͔ ࠓ೔఻͍͑ͨ͜ͱ Agenda • ӡ༻ɺ௥Ճ։ൃͮ͠Β͍ͱ͸ʁ • αϙʔλʔζͷ౰࣌ͷ؀ڥ

    運用、追加開発しづらいPHPアプリケーションに未来を与える方法 - Speaker Deck