ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP : An introduction
by
宮城築
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ここが変だよ PHP(褒め言葉) 入門編 BABY JOB ミヤギ
Slide 2
Slide 2 text
特徴 ・2023 年 6 月 BABY JOB に入社 ・沖縄 からフルリモートで参画 ・保活サービス を開発中 ・BUMP OF CHICKEN が好き ・PM と保育園のお弁当に挑戦中 自己紹介 宮城 築 ミヤギ@3歳児の父エンジニア|BABYJOB @KizuMiyagi old now
Slide 3
Slide 3 text
すべての人が子育てを楽しいと思える社会 乳児期 幼児期 学童期 妊娠・出産 産後うつ 保活が大変 いやいや期 学童不足 小一の壁 子育てには課題がたくさん・・・ 育児と子育て の両立が大変 保活(保育園探し)をサポート 保育園の準備をサポート
Slide 4
Slide 4 text
入社して初めて PHP のソースを見たミヤギ
Slide 5
Slide 5 text
バグ 見つけました😎
Slide 6
Slide 6 text
public function __construct( private readonly hogeInterface $hoge, private readonly fugaInterface $fuga, ) { parent::__construct(); }
Slide 7
Slide 7 text
public function __construct( private readonly hogeInterface $hoge, private readonly fugaInterface $fuga, ) { parent::__construct(); } コピペした時のカンマを 消し忘れてる! あるあるだよね!
Slide 8
Slide 8 text
public function __construct( private readonly hogeInterface $hoge, private readonly fugaInterface $fuga, ) { parent::__construct(); } コピペした時のカンマを 消し忘れてる! あるあるだよね! 末尾カンマ でした😇
Slide 9
Slide 9 text
末尾カンマ(ケ○カンマ) 末尾カンマとは? 配列や関数の引数など、リストの最後に配置されるカンマ 何がいいの? リストの増減に関する修正が簡単(追加も削除も1行で済む) 対応している言語 JavaScript、Python、Rust、Swift・・・
Slide 10
Slide 10 text
public function __construct( private readonly hogeInterface $hoge, // ← 末尾カンマがないと private readonly fugaInterface $fuga // 2 行を修正する ) { parent::__construct(); }
Slide 11
Slide 11 text
末尾カンマ(ケ○カンマ) 末尾カンマとは? 配列や関数の引数など、リストの最後に配置されるカンマ 何がいいの? リストの増減に関する修正が簡単(追加も削除も1行で済む) 対応している言語 JavaScript、Python、Rust、Swift・・・
Slide 12
Slide 12 text
末尾カンマ(ケ○カンマ) 末尾カンマとは? 配列や関数の引数など、リストの最後に配置されるカンマ 何がいいの? リストの増減に関する修正が簡単(追加も削除も1行で済む) 対応している言語 JavaScript、Python、Rust、Swift・・・ 実は Java でも配列や列挙 型なら使える
Slide 13
Slide 13 text
マニュアルを読んで変なところを集めてみた
Slide 14
Slide 14 text
論理演算子
Slide 15
Slide 15 text
// 論理積 echo (false and true) ? 'No, It’s not me..' : 'It’s me !!'; // 論理和 echo (false or true) ? 'It’s me !!' : 'No, It’s not me..'; // 排他的論理和 echo (false xor true) ? 'It’s me !!' : 'No, It’s not me..';
Slide 16
Slide 16 text
英語で 書けるの?
Slide 17
Slide 17 text
何が違うの? 優先順位が異なる( and と or の優先順位は && と || よりも低い) 何がいいの? 視覚的にわかりやすい 対応している言語 Perl、Python、Ruby・・・ 論理演算子 参考:https://www.php.net/manual/ja/language.operators.logical.php
Slide 18
Slide 18 text
浮動小数点数
Slide 19
Slide 19 text
引用:https://www.php.net/manual/ja/language.types.float.php
Slide 20
Slide 20 text
引用:https://www.php.net/manual/ja/language.operators.logical.php
Slide 21
Slide 21 text
小数使えない?
Slide 22
Slide 22 text
なぜ比較できないの? 無限に続く小数を有限のビットで表現しているため → PHP に限らず どうしたら良いの? 丸め誤差の上界(※)や任意精度数学関数ライブラリを使用する 浮動小数点数の計算が得意な言語 Python、Java、C#・・・ 浮動小数点数 参考:https://www.php.net/manual/ja/language.types.float.php
Slide 23
Slide 23 text
引用:https://www.php.net/manual/ja/language.types.float.php
Slide 24
Slide 24 text
時間がない!!
Slide 25
Slide 25 text
● Heredoc(ヒアドキュメント)と Nowdoc → 文字列を定義する際に改行やインデントを活用できる ● パース → 文字列内の配列やクラスもパースできる ● continue → switch 文をループ処理とみなして利用することができる 残りは箇条書きでご紹介
Slide 26
Slide 26 text
まとめ
Slide 27
Slide 27 text
● 様々な言語の良さを取り入れてる ● PHP マニュアルが充実してる PHP が好きになってきた
Slide 28
Slide 28 text
ご清聴ありがとうございました
Slide 29
Slide 29 text
おまけ
Slide 30
Slide 30 text
PHP の良さを ChatGPT に聞いた らたくさん語って くれました
Slide 31
Slide 31 text
ヒアドキュメントと Nowdoc
Slide 32
Slide 32 text
private const SELECT_PHP_CONFERENCE_KANSAI_QUERY = <<
Slide 33
Slide 33 text
SQL 書きやすっ
Slide 34
Slide 34 text
ヒアドキュメントとは?(<<
Slide 35
Slide 35 text
Nowdoc とは?(<<<'SQL') 改行を含む文字列を定義する記法、文字列内の変数を展開しない 何がいいの? SQL などの長い文字列を整形した状態で定義可能 対応している言語 Python、JavaScript、Ruby・・・ Nowdoc 参考:https://www.php.net/manual/ja/language.types.string.php