PHP関連のことを調べてみた2023年08月30日

PHP関連のことを調べてみた2023年08月30日

【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.php

FILE: /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: techhubdigital

1.読みやすく、わかりやすい構文のプログラミング言語を探したいとき
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.net

Trying “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についてしかわからないと思うので記事にしました。もう少し詳しく説明していきます。

OTHERカテゴリの最新記事