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