PHPの現場

46. PHP と型と静的解析ツール(sji_ch / tadsan)

@sji_ch さん、 @tadsan さんと PHP Foundation、PHP の静的解析ツールや型システムなどについて話しました。

  • PHP Foundation
    • インフィニットループさんのブログ
    • バス係数
    • Nikita Popov さんすごい
    • それぞれできる貢献をしていきましょう
  • PHP の静的解析
    • 静的解析とは
    • 静的解析ツールを使うきっかけ
    • Phan
    • PHPStan
    • Rector
    • baseline
    • Psalm
    • これからのプロジェクトにどれを採用するか
    • アノテーションの違い
    • 言語としての型表現と Doc コメントによる型表現
    • 導入してみて
    • 教育
    • 実行時の型検査は不要?
    • PHP の型システム
    • 入出力で安全なコードが書けてこその型宣言
    • PHP をより便利に使うための型
    • 将来の可能性を広げるための型付け
    • PSR-5
    • 静的型付き言語と PHP

Show notes

  • PHP Foundation - Open Collective
  • インフィニットループは PHP の継続的な発展を目指す The PHP Foundation に寄付をしました | 株式会社インフィニットループ技術ブログ
  • The PHP Foundation への寄付の流れが来ている! - Togetter
  • PhpStormを使おう –高槻からは快速急行が早くなります #jbugj
  • Home · phan/phan Wiki
  • Continuous integration/Phan - MediaWiki
  • Playground | PHPStan
  • PHPStanで始めるPHPのための静的解析 #phperkaigi | メルカリエンジニアリング
  • ピクシブ百科事典に静的解析のCIを導入した話 - pixiv inside
  • プロジェクト内のライブラリをロードしつつ、ブラウザで動作するPHPStan Playground - pixiv inside
  • framework/phpstan.neon.dist at 79952ace1625572f596f2fc83b28a519911da9da · laravel/framework
  • Rector - Automated Way to Instantly Upgrade and Refactor any PHP code
  • Psalm - a static analysis tool for PHP
  • Supported Annotations - Documentation
  • Conditional types - Documentation
  • Supported Annotations - Documentation
  • Assert Annotations - Documentation
  • My incredible journey with PHP. Before I joined Vimeo in 2014 my PHP… | by Matt Brown | Medium
  • allow using custome configuration directory for psalm by azjezz · Pull Request #248 · Roave/infection-static-analysis-plugin
  • JetBrains/phpstorm-psalm-plugin: Psalm plugin for PhpStorm
  • Phan静的解析がもたらす大PHP型検査時代 - pixiv inside [archive]
  • WEB+DB PRESS Vol.123|技術評論社
  • We don’t need runtime type checks - stitcher.io
  • php-standard-library/psalm-plugin: Psalm integration for the PHP Standard Library
  • 型安全なHTTP入力を保証するParamHelper - pixiv inside
  • PHP の型宣言は変数の型のチェックではない - Qiita
  • 簡単なAPIをちょっとした工夫で完成度を高める話 - Qiita
  • Conditional types で func_num_args() を使う例
  • PSR-5: PHPDoc