PHP8の新機能
PHP8で特に気になる新機能をメモしておく
名前付き引数
function test($hoge, $fuga) { print_r(func_get_args()); } test(fuga: 1, hoge: 2); Array ( [0] => 2 [1] => 1 )
null安全オペレータ
途中にnullが入ってくるメソッドチェーンを楽にかけるようになる 今までissetとかでわざわざ判定してたのが一気に省略できるので個人的には一番うれしい機能。
null安全オペレータを使わない場合 php > $hoge = null; php > $hoge->id; // Warning: Attempt to read property "id" on null in php shell code on line 1 php > $hoge?->id; // null
ユニオン型
引数に複数の型を指定したり、戻り値の型を複数定義できる機能 使いすぎは型システムの意味をなくしてしまうので意味がないけど、 地味に重宝する機能だと思う。
function fuga(int|string $hoge) { print_r($hoge); } fuga(1); // 1 fuga("aaa"); // aaa
続く。
最近よく見るYoutubeチャンネルについて
今日は最近よく見るYoutubeチャンネルを書く。
YUKIMURA CHANNEL
主に戦国時代の合戦を取り上げて解説してるチャンネル。 編集が面白くて見やすいのがとても良い。
おは養分チャンネル
不動産会社の社長がやってるYoutubeチャンネルで、アングラな内容から 投資関連のお話まで幅広く取り扱っている。 ぼのぼのですよさんのトークや言い回しが最高に面白い。
清ちゃんスポーツ
元巨人の清原さんがやっているチャンネル。 オラついてるイメージしかなくて元々嫌いな人だったんだけど、このチャンネルを見始めてから見方が180度変わった。 企画に真剣に取り組んでる姿がとても素敵で今では応援してます。
最近Youtube見過ぎなんだよな・・・ さて、勉強しよう
pcovを使用したコードカバレッジ計測
PHPUnitでカバレッジ取得する際にXdebugを使用していたけど、あまりにも遅いのでもっと高速にカバレッジを取得できるものはないかと調べていた。 そんな時に見つけたpcovの設定方法を書いてみようと思う。
pcov: https://github.com/krakjoe/pcov
インストール
※Docker環境で使用することを前提としています。 ※動作要件はPHP7.1以上
pecl install pcov && docker-php-ext-enable pcov
PHPUnit7以下の場合
PHPUnit8以上ではpcovのサポートが含まれているが、PHPUnit7以下では含まれていないため Clobberの追加が必要となる。
Clobber: https://github.com/krakjoe/pcov-clobber
composer require pcov/clobber --dev vendor/bin/pcov clobber
PHPUnitの実行
php -d pcov.enabled=1 ./vendor/bin/phpunit --coverage-html "/dir_path/coverage" tests/
たったこれだけで設定完了。 自分の導入した環境ではざっくり1/7 ~ 1/8くらいの時間短縮になった。
pcovすごい。
二日酔いについて
今日は二日酔いについて書いてみようと思う。
最近は一日辺りの飲む杯数を制限しているからあまり二日酔いにならないけど、 元々体質的に飲みすぎた次の日は一日動けなくなるくらい酷い二日酔いをする方だった。
結構辛いんだよね。
特に - 気持ち悪さ - 頭痛 - 憂鬱感
の3つが一番酷い。 この中でも憂鬱感は精神的に来るやつで、「もう一生酒飲まない」って1000回は誓ったと思う。
そもそも二日酔いってなんだ?気持ち悪さや頭痛はともかくとしてなぜ憂鬱になるんだ? って所を改めて抑えていこう。
二日酔い
酒の飲みすぎが原因で発生する頭痛・胃腸症状・睡眠障害・感覚や認知の障害・うつ気分・自律神経症状などの症状 (厚生労働省のリンク参照) www.e-healthnet.mhlw.go.jp
おぉ、うつ気分や自律神経症状もバッチリ入っているんだな。
憂鬱に感じる原因
人はアルコールを摂取するとドーパミンという快楽ホルモンが脳で分泌されて脳内化学物質のバランスが崩れ始める。 これによって緊張感が緩和されたり、解放的な気分を味わうようになる。 (めっちゃ分かる。経験済み) ただし、脳は一定のホルモンバランスを保とうとして翌日には不安を感じるようになるそう。
じゃあ飲み続ければOK?
お酒は飲み続けると解放感などを感じる効きめが徐々に下がっていき、少量のアルコールでは ドーパミンが分泌されなくなり、徐々に量を必要とするようになる。 こうやってアルコールの摂取量が増えていき、次第にアルコール中毒になってしまうそう。
・・・ これって、所謂麻薬とかの依存症状と一緒ですやん。
また、飲みすぎる事により肝硬変などのリスクが上昇したり、 記憶を失う「ブラックアウト」を繰り返すことで脳が萎縮して認知症になるリスクが格段に高くなるようです。
過去に5年間以上のアルコール乱用または大量飲酒の経験のある高齢男性では、そのような経験のない男性と比べて認知症の危険性が4.6倍、うつ病の危険性が3.7倍と報告されています (厚生労働省のリンク参照) www.e-healthnet.mhlw.go.jp
既に私は何回もブラックアウトを経験してるので手遅れかもしれませんが、 マイナスな影響がとてつもなく恐ろしいので、改めて今後は飲酒量を適切コントロールしていこうと思いました。
Laravelのコレクションクラスについて
LaravelのCollectionクラスを雰囲気で使ってたので理解を深めるために調べたことを書いてみる。
Collection
配列データを使いやすくするためにラップしているクラス。
mapやfilterなど様々な便利メソッドが実装されている
よく使うメソッド集
コレクションメソッドは元のコレクションには影響せず、常に新しいコレクションを返却する。
map
コレクションを繰り返しで処理し、指定したコールバックから値を返却する。 下記の例のようにコレクション内のデータを加工したい場合などに頻繁に使用する。
$collection = collect(['hoge', 'fuga'])->map(function ($name) { return strtoupper($name); }); print_r($collection); // Illuminate\Support\Collection Object // ( // [items:protected] => Array // ( // [0] => HOGE // [1] => FUGA // ) // )
filter
指定したコールバックでコレクションをフィルタリングする。
$collection = collect([10, 20, 30, 40, 50])->filter(function ($item) { return $item > 30; }); print_r($collection); // Illuminate\Support\Collection Object // ( // [items:protected] => Array // ( // [3] => 40 // [4] => 50 // ) // )
isEmpty
コレクションが空の場合にtrue、そうでない場合にfalseを返す。
collect([])->isEmpty()); // true collect([1])->isEmpty(); // false
他にもたくさん使うんだけど、疲れてきたから今日はこの辺にしておこう。 ちなみにCollectionの実装自体は下記で見れるので時間ある時に見てみると結構面白いかも。
最近やってるストレス解消法
年明けから色々と立て込んだのもあってかなりストレスを溜め込んでいて辛かったので、毎日継続してストレス解消に取り組むことにしてみた。
今日はそれについて書いてみようと思う。
瞑想
ストレスになる思考にとらわれず、リラックスする時間が取れるので個人的にかなりおすすめ。
一応期待できる効果には
ストレスの軽減
学習力/記憶能力/集中力の向上
感情コントロール能力の向上
などなどがあるらしい。
最初は(今もだけど)雑念に囚われまくって全くできなかったんだけど、 リンクの音声を聞きながらやるようになってからかなり集中?できるようになった。 www.youtube.com
毎日20分やるようにしてる。
エクスプレッションライティング
頭の中に浮かんでくる思考や考えをひたすら紙に書き出していくことで 思考や心の中を見える化していくことをエクスプレッションライティングというらしい。
何かモヤモヤしていたりイライラしていたりすることをアウトプットすることで 客観的に見えるようになりストレスが軽減されるらしい。
できれば毎日20分、最低でも8分行うのが望ましいとされているらしい。
自分は毎日8分やるようにしてる。 やった後はかなりスッキリするのでこれもおすすめ。
これからも続けていこうと思います〜
Laravel Tips
今日はPHPフレームワークのLaravelのTipsを書いてみようと思う。 何故か毎回「あれ?あのコマンドどう書くんだっけ?」ってなるものをメモしておく。
マイグレーションファイル作成
php artisan make:migration create_table_name
Modelファイルの作成
php artisan make:model Hoge
Seederの作成
php artisan make:seeder HogeTableSeeder
コンソール起動
php artisan tinker
ルーティングの確認
php artisan route:list
頻繁に実行するんだけど何故かこれらだけ覚えられないんだよな〜。