Skip to content

私はなぜPHP8に苦しみ未だに解き放たれていないのか

公開日:

オンラインZoom会議で開催された『PHPカンファレンス2020』で懇親会LT(5分)として発表しました。

Download PDF

スライドテキスト

Page 1

私はなぜPHP8に苦しみ

未だに解き放たれていないのか

Why am I cursed by PHP8, and still not released?

2020-12-12 PHPカンファレンス懇親会LT

Page 2

お前誰よ

  • うさみけんた (@tadsan) / Zonu.EXE
  • GitHub/Packagistでは id: zonuexe
  • ピクシブ株式会社 pixiv運営本部
  • Emacs Lisper, PHPer, Rubyist
  • Emacs PHP Modeのメンテナ引き継ぎました
  • 好きなリスプはEmacs Lispです
  • Qiitaに記事を書いたり変なコメントしてるよ

Page 3

Page 4

Page 5

近況

Page 6

Page 7

出ましたね

Page 8

Page 9

出ちゃいましたね

Page 10

Page 11

このときは構文が違った

Page 12

Page 13

そのあといろいろあった

Page 14

Page 15

いろいろあった

Page 16

@@Attr

#[Attr]

@[Attr] <<Attr>>

@:Attr @{Attr}

Page 17

書きかた工夫すればPHP7と矛盾せずに導入できるのは#[Attr] 形式だけ

Page 18

それはわかる

Page 19

話は変りますが

Page 20

テキストエディタの構文色付けというのは意外に難しい

Page 21

エディタの種類によって色付けアルゴリズムの違いには結構違いがある

Page 22

一番よくあるのはコードのキーワードだけ色付ける方法

Page 23

if, else, for, endif,while, do,foreach, as,endif, ... などキーワードのリストと文字列の括弧とコメントブロックだけ

Page 24

PHPだとそれでは不十分なことがある(HereDoc/NowDoc)

Page 25

Attributeも

Page 26

引数の非推奨化

#[Deprecated]

function f(

$arg1,

#[

Deprecated]

$arg2){}

Page 27

引数の非推奨化

#[

Deprecated

]

function f

(

Deprecated]

$arg1,

#[

$arg2){}

Page 28

Page 29

エディタの構文色付けは言語のパーサをそのまま使えばいいわけではない

Page 30

キーボードで1文字ごとに入力されるので画面に表示されているコードがPHPとして正しいわけではない

Page 31

最近一番注目されてるのはtree-sitterというやつ

Page 32

PHPではMicrosoftが開発しているTolerant PHP Parserというやつもある

Page 33

何が言いたいのかというと

Page 34

Page 35

EmacsにはCc Modeという言語モード用のフレームワークがある

Page 36

Emacsの「モード」は画面の文字に色を付けたりインデント調節したりする

Page 37

Cc Modeは「C言語っぽい構文」の言語を幅広くサポートする

Page 38

PHP Modeは何の因果かjava-modeを継承している!!

Page 39

ここまで言っておいてなんだけど表示自体の対応は全然難しくない

Page 40

Page 41

Page 42

画面表示は割とちゃんとしてる

Page 43

じゃあ何が問題なのか

Page 44

なぜかインデント処理のどこかで正規表現マッチに文字列を渡すべきところnilが渡ってエラー

Page 45

バックトレースはあるが行数なし

Page 46

そしてその関数は2000行近くある…

Page 47

俺たちのデバッグはこれからだ!