- 1. 【Laravel】デバッグで変数の値を確認する方法(Logファサード)
- 2. a-4-1-1.PHPでテストAPI(GET/POST/DELETE)を作成する。
- 3. phpcsのバツ[x]の意味
- 4. 【PHP】エスケープシーケンス
- 5. PHP で HOTP および TOTP を計算する
- 6. 【W3Techs】2023年8月にWebで最も使われている技術はjQuery・Bootstrap・PHP・WordPress
- 7. Laraconのペアプロで生まれたCollection::ensure()の関数
- 8. APIのKeyを隠す
- 9. [PHP] Base32 エンコードおよびデコードする
- 10. 【PHP】ファイルの書き込み読み込み
- 11. ‘ ‘と” “の違い[PHP]
- 12. Laravelで複数のデータベースに接続する方法
- 13. 【PHP】現在時刻の表示
- 14. Laravelでダミーデータ作成
- 15. 他のPHPフレームワークよりもLaravelを選ぶべきタイミングはいつですか?
- 16. IPv6で接続されたHTTPクライアントのIPv4アドレスを確認する方法
- 17. jQueryの$(window).on (‘load’)で躓いた
- 18. PHPのfloor関数で誤差が出たのでBC Math 関数で対応した話
- 19. 【PHP】PDOデータベースと接続する機能の解説
- 20. [イベントデリゲーション] 遅延読み込み(Ajax)修正後に色々な箇所が動かなくなった
【Laravel】デバッグで変数の値を確認する方法(Logファサード)
LaravelはVSCodeでデバッグモードが起動できなかったため、
エラーが発生した時に変数の中身を確認することができなかった。
デバッグログを出力する方法で変数の中身を確認できるというサイトがあったが、
ログを出力するまでに苦戦したのでメモ。## ログの保存設定
①config/app.php に以下を追加する。
“`app.php
/*
|————————————————————————–
| Logging Configuration
|————————————————————————–
|
| Here you may configure the log settings for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
a-4-1-1.PHPでテストAPI(GET/POST/DELETE)を作成する。
### a-4-1-1.PHPでテストAPI(GET/POST/DELETE)を作成する。
#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)#### 課題
3. GETのAPIを作成できるか。
3. GETのAPIでパラメーター取得はできるか。
3. GETのAPIでJson形式の戻り値を作成できるか。
3. POSTのAPIを作成できるか。
3. POSTのAPIでBodyの配列情報を取得はできるか。
3. DELETEのAPIを作成できるか。
3. DELETEのAPIでBodyの情報を取得はできるか。“`php:api2_get_test1_table.php
phpcsのバツ[x]の意味
phpcbfが自動で修正できるスニフを表すみたいです
“`bash
$ phpcs -s /path/to/code/myfile.phpFILE: /path/to/code/classA.php
——————————————————————————–
FOUND 4 ERRORS AND 1 WARNING AFFECTING 5 LINES
——————————————————————————–
2 | ERROR | [ ] Missing file doc comment
| | (PEAR.Commenting.FileComment.Missing)
4 | ERROR | [x] TRUE, FALSE and NULL must be lowercase; expected “false” but
【PHP】エスケープシーケンス
# はじめに
phpでのエスケープシーケンスの使い方を記録します
# エスケープシーケンス
* ダブルクォートで囲まれた文字列の中で使える
## エスケープシーケンス一覧
### `\”` : ダブルクォート
### `\n` : 改行
### `\r` : キャリッジリターン(これも改行?)
### `\t` : タブ
### `\\` : バックスラッシュ
### `\$` : ドル記号
### `\{` : 左波括弧
### `\}` : 右波括弧
### `\[` : 左角括弧
### `\]` : 右角括弧
### `\0~\777まで` : 8進形式で表したASCII文字
### `\x~\xFFまで` : 16進形式で表したASCII文字
# 未知のエスケープシーケンス
* 上記に挙がっていない文字がバックスラッシュ`\`の後に記述され、ダブルクォート`”`で囲まれた文字列の中にあった場合、それは無視されます
## サンプルコード
“`php:未知のエスケープシーケンス
PHP で HOTP および TOTP を計算する
Google Authenticator 等で利用されている HOTP (HMAC-Based One-Time Password) や TOTP (Time-Based One-Time Password) を PHP で計算する方法を書きます。
“HMAC-Based” は「カウンタベース」、”Time-Based” は「時間ベース」や「タイムベース」と訳されます。
参考「[RFC 4226 – HOTP: An HMAC-Based One-Time Password Algorithm 日本語訳](https://tex2e.github.io/rfc-translater/html/rfc4226.html)」
参考「[RFC 6238 – TOTP: Time-Based One-Time Password Algorithm 日本語訳](https://tex2e.github.io/rfc-translater/html/rfc6238.html)」# 1. 鍵
## 1.1. 鍵をやり取りするために Base32 エンコードを利用する
HOTP や TOT
【W3Techs】2023年8月にWebで最も使われている技術はjQuery・Bootstrap・PHP・WordPress
コンサル会社[Q-Success](https://q-success.com/)は、[World Wide Web Technology Surveys](https://w3techs.com/)という分析サービスを提供しています。
なんかいかにも[W3C](https://www.w3.org/)とかと関係ありそうな名前ですが、特に関係はないみたいです。W3Techsでは、Webサイトを収集し、それらがどのような技術で作られているかといった調査結果を無料で分析・公開してくれています。
こんなに公開していて生計はどうやって立てているのかというと、過去の履歴や細かいレポートなどを[有料で売っている](https://w3techs.com/technologies/reportlist/javascript_library)みたいです。
6450ページのPDFとか細かすぎて逆に使いこなせそうにもなさそうですが、興味のある方は手を出してみてはどうでしょうか。データを覗いてみると、はっきり言って物凄く意外というかびっくりします。
# [JavaScript Libraries
Laraconのペアプロで生まれたCollection::ensure()の関数
# はじめ
Laravelを使っている皆様はもうすでにご存知かと思いますが、7月19日〜20日に[Laracon](https://laracon.us/)が行われました。そこでテーラーさんがLaravel 11の機能をデモしたり、いろいろな大事な発表が行われた上、宴会(飲み会)も行われ、エンジニア同士で気軽にワイワイしながらコミュニケーションを取ることもできました。その際、数人のエンジニアとの会話から、アイデアが生まれ、宴会でペアプロを行ったようです。今回紹介するensureの関数はそのペアプロの結果です。
# ensureが生まれた理由
コレクションは開発者にとって欠かせないものかと思いますが、残念ながらコレクションの中身の型付けを設定することができません。そのため、下記のように一つのコレクションでも複数の種類の型のものが混ざってしまう可能性もあり、ランタイムに例外が発生するケースがあります。
“`php
$collect = collect([1, 2, 3, ‘happy’]);$newCollect = $collect->map(
APIのKeyを隠す
# APIのキーを隠す話 (ほぼメモ)
## 背景AbuseIPDBのAPIを使ったけど、API KeyをPHPファイルにべた書きするのは…
## どうしたらいいだろう
環境変数にするといいらしい
phpdotenvをいれるといいらしい
## phpdotenvを入れたい
composerがないから無理ぃていわれたのでcomposerを入れる
phpdotenvを入れる
参考にさせてもろて
>https://labo.kon-ruri.co.jp/php-dotenv/
.envを編集する。
phpのバージョンが古いからだめって言われた(あれ〜バージョン古)
一回消して新しいバージョンを入れる、再起動
できた
[PHP] Base32 エンコードおよびデコードする
PHP の標準の機能では Base32 エンコードおよびデコードを行えないため、PHP のコード上でアルゴリズムを実装する必要があります。
# 1. Base32 について
Base32 自体の説明は別記事にしました。
参考「[Base32 エンコーダおよびデコーダ実装時のセキュリティ上の注意点 – Qiita](https://qiita.com/kerupani129/items/838e088336c3ae879a1f)」
基本的な仕組みとして、データを長さ 5 ビットずつに区切り、それぞれの値 (0–31) を「Base32 文字」に割り当てて置き換えます。
実際に使用されている「Base32 文字」にはいくつか種類がありますが、本記事では RFC 4648 で定義されているものを使用します。
“`:RFC 4648 で定義されている Base32 文字
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
“`参考「[RFC 4648 – The Base16, Base32, and Base64 Data Encodings](
【PHP】ファイルの書き込み読み込み
# ファイルの書き込み
* `file_put_contents()`
* ファイルに文字列を書き込むために使用される組み込み関数です
* ファイルが存在しない場合は、新しいファイルを作成します
# ファイルの読み込み
* `file_get_contents`
* 指定したファイルの内容を全て、または一部を読み込む関数です
# サンプルコード
“`php:ファイルの書き込み読み込み
追加のテスト”;$success = file_put_contents(‘data/test.txt’, $test);
“`
# おわり> * 参考文献 : [【PHP】file_put_contents関数を使って文字列をファイルに書き込む!](https://flytech.work/blog/7671/#:~:text=file_put_contents()%E9%96%A2%E6%95%B0
‘ ‘と” “の違い[PHP]
## はじめに
‘ ‘(シングルクォーテーション)と” “(ダブルクォーテーション)の違いについてのメモです。## ” “(ダブルクォーテーション)
・” “内で変数を記述できる:::note info
余談:文字列内で変数を使う際はバグを出さない為にも __{ }__ を使って囲う
:::・エスケープシーケンスが利用できる
:::note info
余談:エスケープシーケンスとは\(バックスラッシュ)から始まる特殊なコード
:::## 最後に
簡単なメモなので今後また知見が増えたら追記するかもしれません。
Laravelで複数のデータベースに接続する方法
以前参画していた案件でAWSのRDSとRedshiftの2つのデータベースを利用して使い分けていたのでその際に調べたことをまとめようと思います。
## config/database.phpを修正
“`php:database.php
‘default’ => env(‘DB_CONNECTION’, ‘mysql’),‘connections’ => [
省略…
‘mysql’ => [
‘driver’ => ‘mysql’,
‘url’ => env(‘DATABASE_URL’),
‘host’ => env(‘DB_HOST’, ‘127.0.0.1’),
‘port’ => env(‘DB_PORT’, ‘3306’),
‘database’ => env(‘DB_DATABASE’, ‘forge’),
‘username’ => env(‘DB_USERNAME’, ‘forge’),
‘password’ => env(‘DB
【PHP】現在時刻の表示
# 現在時刻の取得
* date関数を使う
`date(string $format, ?int $timestamp = null)`
第一引数にフォーマットを指定して、第二引数にタイムスタンプを指定します(nullの場合は現在の時刻です)
* 公式マニュアルでフォーマットを確認する
# サンプルコード
“`php:現在時刻
* 参考にした動画 : [本格的なWebシステム開発に欠かせない、サーバーサイドプログラミングをPHP+MySQLで学ぼう。](https://wiz.udemy.com/course/php7basic/learn/lecture/29510202#overview)
Laravelでダミーデータ作成
# はじめに
30代公務員がエンジニア目指して勉強中。
備忘録として、Laravelを使用したダミーデータ作成についてまとめた。## シーディングファイルの作成
シードを作成するためのスクリプトファイルを生成する“`:PHPコンテナ内
php artisan make:seeder TodoTableSeeder
php artisan make:seeder CategoryTableSeeder
“`## ファクトリの作成
ファクトリで作るデータの定義を作成する
“`:PHPコンテナ内
php artisan make:factory TodoFactory
php artisan make:factory CategoryFactory
“`
以上コマンドを実行で、database/factoriesディレクトリ以下にファイルが作成される。それぞれ作成されたファイル内の definiton メソッドの中の[ ]内にデータの定義をしていく。
“`php:CategoryFactory.php
他のPHPフレームワークよりもLaravelを選ぶべきタイミングはいつですか?
ウェブアプリケーションを開発する際、適切なフレームワークを選択することはプロジェクトのパフォーマンスと効率に大きな影響を及ぼします。PHP開発の世界では、Laravelが最も人気のあるフレームワークの一つとなっています。以下は、他のPHPフレームワークよりもLaravelを選ぶべきタイミングのいくつかです。
![php-frameworks (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92345/3308fdd7-faa4-b07b-baed-2f014e0cb898.jpeg)
PHPフレームワーク
cre: techhubdigital1.読みやすく、わかりやすい構文のプログラミング言語を探したいとき
Laravelは明確で読みやすい構文で設計されており、プログラマーがアプリケーションの構造を理解しやすく、効率的にコードを書くことができます。使いやすく、アクセスしやすいフレームワークを探している場合、Laravelは良い選択肢です。一般的な機能の良いサポート:
Laravelは
IPv6で接続されたHTTPクライアントのIPv4アドレスを確認する方法
[確認くん(IPv6/HTTP2 対応版)](https://ipchecker.berdysh.net/BookMark/ “確認くん(IPv6/HTTP2 対応版)”)
REMOTE_ADDR には IPv6 しか入って来ないのでIPv4のアドレスを取得する為にもう一本の新しいセッションを張る必要がある。
別セッションでもまたIPv6が使われてしまわないように、DNSにIPv4専用にAレコードのみを記載したサブドメインを用意。
“`
# host -a ipv4.berdysh.netTrying “ipv4.berdysh.net”
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47657 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;ipv4.berdysh.net. IN ANY ;; ANSWER SECTION: ipv4.b
jQueryの$(window).on (‘load’)で躓いた
# はじめに
前回に引き続き、遅延読み込み(Ajax)の修正後に躓いた話。
jQueryの`$(window).on (‘load’)`が上手く動かない。。。
具体的には、リストデータを遅延読み込みする際に画面読み込み時だけ上手く動かず(動くこともある)、条件検索や件数表示を変えたときの処理はきちんと動く。
改善前のソースコードはこんな感じ。
“`
$(function () {
$(window).on(‘load’, function(){
// ここでAjax通信を行う。
});
}
“`
これがそもそもダメだった。
`$(function () {} `で`$(window).on(‘load’, function(){});`を囲うことは **jQuery3以降では完全にアウト**とのこと。
# 解決策
“`
$(window).on(‘load’, function(){
// ここでAjax通信を行う。
});
“`
これだけ。`$(function () {} `の外に出すだけ。
ただ、開発によっては思わぬ事故を防ぐために関数定
PHPのfloor関数で誤差が出たのでBC Math 関数で対応した話
# 環境
– php:8.1# 対象
– floor関数を使って誤差が出てしまった人# 原因
以下に記載されていますが、浮動小数点の精度が計算結果に誤差を生じさせるようです。
https://www.php.net/manual/ja/language.types.float.php
“`php:Controller.php
$result =floor((0.1+0.7)*10);echo $result; // 7になる
“`# 対応
BC Math 関数を使用して対応します。
“`php:Controller.php
$number = (0.1+0.7)*10;$result = (int)(bcdiv((string)$number, ‘1’, 0));
echo $result; // 正しい結果の8になる
“`
【PHP】PDOデータベースと接続する機能の解説
以前PDOについてこんなツイートをしました。これだけだとなんとなく流れとPDOについてしかわからないと思うので記事にしました。もう少し詳しく説明していきます。
データベースと接続するきのう【PDO】について
PDOとは?めちゃめちゃ簡単に言うと
・データベースと接続するために、特化した機能
です。
1.PDOを使うためにインスタンス化(実体)
2.例外処理 Exception 「try-catch」流れはこんな感じかな#PDO #PHP [イベントデリゲーション] 遅延読み込み(Ajax)修正後に色々な箇所が動かなくなった
# はじめに
リストデータを読み込む際に、時間がかかるということでUX改善のためリストデータの読み込みを遅延読み込み(Ajax)に修正したらJavaScriptで制御しているいろいろな箇所が動かなくなった。
改善前のソースコードはこんな感じ。
“`
$(function() {
$(‘任意のセレクター’).click(function(e) {
// 処理
});
});
“`
この**任意のセレクター**に修正した遅延読み込みのタグが指定されているのが原因だった。
画面読み込み後に確定する`$(‘任意のセレクター’)`の、**任意のセレクター**がまだ存在していないからだ。順序的にはこんな感じなのでしょうか。
1. ドキュメントの読み込みが完了→$(function()
2. セレクタ―確定→$(‘任意のセレクタ―’)
3. Ajaxリクエスト
4. 「任意のセレクタ―」を含むHTMLの描画# 解決策
では解決策はどうすれば良いかというと。
“`
$(function() {
$(document).on(‘click’, ‘任意のセ