私はなぜ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($arg1,
#[ $arg2){}
Deprecated]

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

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