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
510
ここが変だよ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
280
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
420
あの時、Java から PHP へ / Converting from Java to PHP
kizuku_miyagi
4
500
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Git: the NoSQL Database
bkeepers
PRO
427
64k
A Philosophy of Restraint
colly
203
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
How STYLIGHT went responsive
nonsquared
95
5.2k
Building an army of robots
kneath
302
43k
BBQ
matthewcrist
85
9.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
Side Projects
sachag
452
42k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Designing the Hi-DPI Web
ddemaree
280
34k
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