Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP ...
Search
宮城築
February 12, 2024
3
520
ここが変だよPHP(褒め言葉) 入門編 / The good thing about PHP : An introduction
宮城築
February 12, 2024
Tweet
Share
More Decks by 宮城築
See All by 宮城築
プルリクエストがマージできない / Cannot merge pull requests
kizuku_miyagi
3
320
20240510_DDDとぼんやり向き合ってみる / Let's face DDD in a dim way.
kizuku_miyagi
1
19
強いチーム作りに向けて 個人ができること / What individuals can do to build a strong team
kizuku_miyagi
2
440
あの時、Java から PHP へ / Converting from Java to PHP
kizuku_miyagi
4
510
Featured
See All Featured
Become a Pro
speakerdeck
PRO
26
5k
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Language of Interfaces
destraynor
154
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
520
Fireside Chat
paigeccino
34
3.1k
How STYLIGHT went responsive
nonsquared
95
5.2k
KATA
mclloyd
29
14k
RailsConf 2023
tenderlove
29
940
The Pragmatic Product Professional
lauravandoore
32
6.3k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
The Invisible Side of Design
smashingmag
298
50k
Transcript
ここが変だよ PHP(褒め言葉) 入門編 BABY JOB ミヤギ
特徴 ・2023 年 6 月 BABY JOB に入社 ・沖縄 からフルリモートで参画
・保活サービス を開発中 ・BUMP OF CHICKEN が好き ・PM と保育園のお弁当に挑戦中 自己紹介 宮城 築 ミヤギ@3歳児の父エンジニア|BABYJOB @KizuMiyagi old now
すべての人が子育てを楽しいと思える社会 乳児期 幼児期 学童期 妊娠・出産 産後うつ 保活が大変 いやいや期 学童不足 小一の壁
子育てには課題がたくさん・・・ 育児と子育て の両立が大変 保活(保育園探し)をサポート 保育園の準備をサポート
入社して初めて PHP のソースを見たミヤギ
バグ 見つけました😎
public function __construct( private readonly hogeInterface $hoge, private readonly fugaInterface
$fuga, ) { parent::__construct(); }
public function __construct( private readonly hogeInterface $hoge, private readonly fugaInterface
$fuga, ) { parent::__construct(); } コピペした時のカンマを 消し忘れてる! あるあるだよね!
public function __construct( private readonly hogeInterface $hoge, private readonly fugaInterface
$fuga, ) { parent::__construct(); } コピペした時のカンマを 消し忘れてる! あるあるだよね! 末尾カンマ でした😇
末尾カンマ(ケ◦カンマ) 末尾カンマとは? 配列や関数の引数など、リストの最後に配置されるカンマ 何がいいの? リストの増減に関する修正が簡単(追加も削除も1行で済む) 対応している言語 JavaScript、Python、Rust、Swift・・・
public function __construct( private readonly hogeInterface $hoge, // ← 末尾カンマがないと
private readonly fugaInterface $fuga // 2 行を修正する ) { parent::__construct(); }
末尾カンマ(ケ◦カンマ) 末尾カンマとは? 配列や関数の引数など、リストの最後に配置されるカンマ 何がいいの? リストの増減に関する修正が簡単(追加も削除も1行で済む) 対応している言語 JavaScript、Python、Rust、Swift・・・
末尾カンマ(ケ◦カンマ) 末尾カンマとは? 配列や関数の引数など、リストの最後に配置されるカンマ 何がいいの? リストの増減に関する修正が簡単(追加も削除も1行で済む) 対応している言語 JavaScript、Python、Rust、Swift・・・ 実は Java でも配列や列挙
型なら使える
マニュアルを読んで変なところを集めてみた
論理演算子
// 論理積 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..';
英語で 書けるの?
何が違うの? 優先順位が異なる( and と or の優先順位は && と || よりも低い)
何がいいの? 視覚的にわかりやすい 対応している言語 Perl、Python、Ruby・・・ 論理演算子 参考:https://www.php.net/manual/ja/language.operators.logical.php
浮動小数点数
引用:https://www.php.net/manual/ja/language.types.float.php
引用:https://www.php.net/manual/ja/language.operators.logical.php
小数使えない?
なぜ比較できないの? 無限に続く小数を有限のビットで表現しているため → PHP に限らず どうしたら良いの? 丸め誤差の上界(※)や任意精度数学関数ライブラリを使用する 浮動小数点数の計算が得意な言語 Python、Java、C#・・・ 浮動小数点数 参考:https://www.php.net/manual/ja/language.types.float.php
引用:https://www.php.net/manual/ja/language.types.float.php
時間がない!!
• Heredoc(ヒアドキュメント)と Nowdoc → 文字列を定義する際に改行やインデントを活用できる • パース → 文字列内の配列やクラスもパースできる •
continue → switch 文をループ処理とみなして利用することができる 残りは箇条書きでご紹介
まとめ
• 様々な言語の良さを取り入れてる • PHP マニュアルが充実してる PHP が好きになってきた
ご清聴ありがとうございました
おまけ
PHP の良さを ChatGPT に聞いた らたくさん語って くれました
ヒアドキュメントと Nowdoc
private const SELECT_PHP_CONFERENCE_KANSAI_QUERY = <<<SQL select id, name -- kano,
katsusa … from php_conference_kansai_tbl SQL;
SQL 書きやすっ
ヒアドキュメントとは?(<<<SQL) 改行を含む文字列を定義する記法、文字列内の変数を展開する 何がいいの? SQL などの長い文字列を整形した状態で定義可能 対応している言語 Perl、Python、Ruby、Bash(シェルスクリプト)・・・ ヒアドキュメント( Heredoc )
参考:https://www.php.net/manual/ja/language.types.string.php
Nowdoc とは?(<<<'SQL') 改行を含む文字列を定義する記法、文字列内の変数を展開しない 何がいいの? SQL などの長い文字列を整形した状態で定義可能 対応している言語 Python、JavaScript、Ruby・・・ Nowdoc 参考:https://www.php.net/manual/ja/language.types.string.php