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
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
A designer walks into a library…
pauljervisheath
204
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Practical Orchestrator
shlominoach
186
10k
Into the Great Unknown - MozCon
thekraken
33
1.5k
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