概要 PHPプログラミングの世界では、ある一定のトレンドが「モダンPHP」として、一部の人によって (彼らの書籍やウェブサイト上で) 強烈に広められ、他のアプローチは、遅れていたり、愚かだったり、あるいは単に間違いだとみなされて、眉をひそめられています。 それらの人々は、彼らの物事のやり方を他人に追従させようと、飽くなき努力を続けているように見えます。 このウェブサイトは、PHP プログラミングに関する現実的な見解を示すために作られました。流行りのトレンド、理論、学問的な教示ではなく、経験と実践の帰着を書き記した視点です。 ウェブサイト PHP - The Wrong Way は生きたドキュメントですので、より多くの情報が明らかになるにしたがって更新され続けます。 お気軽にコントリビュートしてください。 翻訳 ドイツ語 英語 フランス語 日本語 インドネシア語 トルコ語 ペルシャ語 ポルト
エイプリルフールなので(?)、PHPの日付処理の細かい挙動がひっそり変わった話の解説をします。 ちなみに本稿はSlackグループ「PHPユーザーズ」の#randomチャンネルでの議論をまとめ直したものです。議論のきっかけを下さったmsngさん、tadsanさん、do_akiさんはじめとする皆様ありがとうございました。 PHP 7.0から日付のフォーマット文字列にミリ秒を意味する「v」が追加された PHP 7.0.0から、DateTime::format()でミリ秒指定ができるようになっています。 v ミリ秒 (PHP 7.0.0 で追加) Same note applies as for u. 例: 654 http://php.net/manual/ja/function.date.php date関数と違ってDateTimeオブジェクトはマイクロ秒の処理を行うので、これをミリ秒単位に丸
This RFC proposes two language changes to PHP’s traits. The second proposal requires the first. Traits provide horizontal reuse of methods: a class that uses a trait mixes in the implementation of a set of methods. Interfaces provide a promise of a class's implementation: a class that implements an interface is guaranteed to provide a set of methods. These concepts fit together well. The set of me
こんにちは。最近メルペイに異動になった @hiraku です。 2018年3月10日(土)に、PHPerKaigi 2018というイベントで登壇してきました。「PHPStanで始める継続的静的解析」ということで、メルカリで使用しているPHPStanというツールについて解説しました。 phperkaigi.jp 発表内容を短くまとめると メルカリではPHPStanというツールをCIフローに組み込み、PHPコードの静的解析を行ってコードの信頼性向上に努めています。 PHPStanはautoloadファイルを解釈し、一部のコードを実行することで解析の高速化を行っており、よくできています。 とはいえ、PHPに対して可能な解析に限界はあるので、テストも合わせて行っていきましょう。 大事なのは、品質向上のアプローチが用意され、心配せずにリリースできることです。 autoloadを認識するということ ス
概要 各種 PHP の実行環境 と PHP 内部の動きについて、 PHPerKaigi2018 前夜祭 で話してきました。 PHP と SAPI と ZendEngine3 と from do_aki 経緯とか PHPerKaigi2018 の存在を知ったのが 1/9 https://twitter.com/do_aki/status/950678439429775360 締め切りギリギリでCfPを送り、 https://twitter.com/do_aki/status/952703045342674944 モンハン買うべきか迷いつつ (結局買ったし狩った) https://twitter.com/do_aki/status/955751331804823554 資料作りに苦しみながらも https://twitter.com/do_aki/status/9669796822005309
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 この記事
なんとなくPHPマニュアルを眺めていたところ、リフレクション機能に下記のようなメソッドを見つけました。 ReflectionMethod::getPrototype — メソッドのプロトタイプを (存在すれば) 取得する http://php.net/manual/ja/reflectionmethod.getprototype.php 特定のメソッドについて、「プロトタイプ」の情報を返してくれるもののようです。しかし、この説明だけでは何の値が返ってくるのか想像がつきませんよね。本稿ではこのメソッドについて調べてみます。 「プロトタイプ」の意味 そもそもPHPでプロトタイプとは何を意味するのでしょう?PHPの文脈では耳慣れない単語のような気がします。 私も全くわからなかったのでPHPのCソースコードを眺めてみたところ、プロトタイプとは関数の型宣言の意味だとわかりました。Cの「関数プロトタイ
Symfony 4 is the fastest PHP framework according to independent benchmarks, but we are continuously working on making it faster. In Symfony 4.1, we improved the Routing component to make it much faster when matching incoming URLs. In web applications, routing is divided in two main operations: generation, which generates a URL from the given route and parameters; and matching, which decides which
PHP 7.2以降のWindowsビルドの手順は下記ドキュメントに記載があります。 https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2 以前とは手順が少し変わっており、以前はビルドに必要な実行バイナリを deps-7.1-vc14-x86.7z のようなファイルから取り出していたのですが、代わりに phpsdk_deps.bat を実行してその中で必要なバイナリをダウンロードするようになりました。 7.1以前のビルド方法は下記のドキュメントに書いてあります。 https://wiki.php.net/internals/windows/stepbystepbuild ちなみに、PHP 7.0と7.1は新旧どちらの方法でもビルド可能です。PHP 5.6以前は後者でしかビルドできません。また、PHP 7.2は新しいやり方でな
2015年12月にPHP 7.0.0がリリースされてから2年と少し経ってしまいました。今月頭には無事PHP 7.2.0がリリースされたわけですが、皆様の参加プロジェクトのPHP 7導入は進んでいるでしょうか?まだPHP 5系なんだよね、という方もPHP 7が高速だという噂くらいは聞いているかと思います。 さて、そのPHP 7.0では内部のデータ構造を大幅に変更し、PHP 5系に対する後方互換性を確保しつつ大きな性能改善を果たしたわけですが、PHP 7で相対的に不利になった機能があるのをご存じでしょうか?答えは参照です。参照を使うと通常の変数よりメモリを消費しますし、読み書きも若干遅くなります。特にforeachを&つきで回すような場合にその影響は顕著になります。 この話題は一部の人には当然の内容かと思いますが、あまり知られていないように感じたので、本稿で詳細を紹介します。 foreachの
はじめに 本記事は PHP Advent Calendar 2017 18日目 です。 先に断っておきます。 この記事の内容は、 php スクリプトを書く上で全く必要のない知識です。 知ってすぐ何かに役立つような情報を求めていたらごめんなさい。 https://qiita.com/advent-calendar/2017/php にはもっとたくさんの素晴く役立つ記事がありますのでどーぞ。 なお、検証に利用した php は 7.2.0 です。 PHP の文字列 PHP の文字列は、どれも同じ "文字列" ではあるのですが、中身がちょっと違うとことがあるのをご存知でしょうか。 例えば、 <?php $str1 = 'A'; $str2 = sprintf('%s', 'A'); `$str1` と `$str2` はどちらも同じ `'A'` という文字列になりますが、違いがあります。 (変数名
LibXL PHP Extensionでエクセルファイル作成。なにかと重いPHPExcelと比べてメモリ使用量、処理時間が激減PHPExcelPHPExcel 概要 PHPでエクセルファイルを作成するという要件が挙がり、PHPExcelを使ってみたところ、処理時間・メモリ使用量の両面で出力することができず困っていました・・・。 そんな時に見えた一筋の光!LibXLと、PHP Extension(拡張モジュール)に関するお話です。 PHPExcelについて そもそもPHPExcelとは PHPでエクセルファイルを生成できるライブラリ。無料で利用でき、簡単な記述で様々な形式のエクセルファイルを作ることができるため、様々なサービスで使われています。 ちなみに個人的にも、当初、PHPでエクセルファイルを生成するなら、PHPExcelの一択と考えていました。 メリット 無料 ライブラリを配置して読み
Symfony Advent Calendar 2017 1日目の記事です。 Symfony4リリースおめでとうございます! 昨年のアドベントカレンダーでSymfony Best Practiceの翻訳をしました。 今年はSymfony4のリリースもあり、Best Practiceにも変更があるということで、昨年との差分を確認しながら、Symfony4の変更点の確認をしていきます。 方法 昨年の翻訳時点のコミットと、masterのdiffを取り、変更点のみつまみ食いしていきます。 例) git diff 42408178984a882db8cda37d20fa598d7aaaaa3b 5d4b3351adc444848e9944d05f861b644966559e business-logic.rst >> ~/Desktop/business-logic.txt 参考 SymfonyCo
CakePHP3のChronosの公式ドキュメントを翻訳したので、 その機能についてご紹介します。 以前の記事CakePHP3公式ドキュメントの翻訳が一石N鳥だった件でもご紹介しましたが、 私は「CakePHP3翻訳会」への参加を通じて翻訳を行なっていて、 その中のひとつとしてChronosを翻訳しました。 Chronosとは Chronosは、CakePHP3.2から導入された、日付時刻を扱うライブラリです。 公式のリリースには以下のように書いてあります。 Carbon ライブラリを Chronos に置き換え Carbon ライブラリは cakephp/chronos に置き換えられました。この新しいライブラリは Carbon のフォークで、依存関係は追加されていません。カレンダーのdateオブジェクト、イミュータブルなdateオブジェクトとdatetimeオブジェクトを提供します。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く