Page 1
私はなぜPHP8に苦しみ未だに解き放たれていないのか
Why am I cursed by PHP8, and still not released?
2020-12-12
PHPカンファレンス懇親会LT
公開日:
by USAMI Kenta @tadsan
にオンラインのZoom会議で開催された『PHPカンファレンス2020』で懇親会LT(5分)として発表しました。
私はなぜPHP8に苦しみ未だに解き放たれていないのか
Why am I cursed by PHP8, and still not released?
2020-12-12
PHPカンファレンス懇親会LT
お前誰よ
うさみけんた (@tadsan)
/ Zonu.EXE
近況
出ましたね
出ちゃいま
したね
このときは
構文が違った
そのあといろ
いろあった
いろいろ
あった
@@Attr #[Attr] @[Attr] <<Attr>>
@:Attr @{Attr}
書きかた工夫すれば
PHP7と矛盾せずに導入
できるのは
#[Attr] 形式だけ
それは わかる
話は変り
ますが
テキストエディタの 構文色付けというの
は意外に難しい
エディタの種類によって
色付けアルゴリズムの
違いには結構違いがある
一番よくあるのは
コードのキーワード
だけ色付ける方法
if, else, for, endif,
while, do, foreach, as, endif, ... などキーワード のリストと文字列の括弧 とコメントブロックだけ
PHPだとそれでは 不十分なことがある
(HereDoc/NowDoc)
Attributeも
引数の非推奨化
#[Deprecated]
function f( $arg1,
#[
Deprecated]
$arg2){}
引数の非推奨化
#[
Deprecated
]
function f($arg1,
#[ $arg2){}
Deprecated]
エディタの構文色付けは 言語のパーサをそのまま 使えばいいわけではない
キーボードで1文字ごと
に入力されるので
画面に表示されている コードがPHPとして 正しいわけではない
最近一番注目されて
るのはtree-sitter
というやつ
PHPではMicrosoftが
開発している
Tolerant PHP Parser
というやつもある
何が言いたい のかというと
EmacsにはCc Mode という言語モード用の フレームワークがある
Emacsの「モード」は画面 の文字に色を付けたりイ ンデント調節したりする
Cc Modeは「C言語っ ぽい構文」の言語を幅
広くサポートする
PHP Modeは何の 因果かjava-mode を継承している!!
ここまで言っておいて なんだけど表示自体の 対応は全然難しくない
画面表示は割と ちゃんとしてる
じゃあ何が 問題なのか
なぜかインデント処理の どこかで正規表現マッチ
に文字列を渡すべき
ところnilが渡ってエラー
バックトレースは
あるが行数なし
そしてその関数は
2000行近くある…
俺たちのデバッグ
はこれからだ!