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

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

【速報】 #LaraconUS 2023 が開催された模様です

こんにちは。やまゆです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332028/a1cdcdbe-fde8-3070-30ba-8ec4c777d226.png)

https://laracon.us

Laravel で最大規模のイベントである **LaraconUS 2023** が日本時間の 2023/07/20~2023/07/21 の2日間、アメリカテネシー州のナッシュビルで開催された模様です。

現地参加は出来なかったので、 Twitter 等で情報収集して発表された内容をいくつかかいつまんでまとめてみます。

## スタート

8時半から受付開始とのことで、朝はえーすげーとなりました。

会場は 800 人の開発者で埋め尽くされたそうです!凄い活気!

https://twitter.com/jbrooksuk/status/168186862818

元記事を表示

laravel10のログをCloudWatchに送信する方法

https://github.com/tarfin-labs/laravel-cloudwatch-logger
を実行する。

これだけだと下記のようなエラーが出る
“`
Declaration of Maxbanton\Cwh\Handler\CloudWatch::write(array $record): void must be compatible with
Monolog\Handler\AbstractProcessingHandler::write(Monolog\LogRecord $record): void
“`

その場合、monolog/monolog のバージョンを2.91に下げる

元記事を表示

PHPで作った便利な自作関数集

“`php
$val ) {
if ( is_array( $val ) ) {
$key = htmlspecialchars( $key, ENT_QUOTES, ‘UTF-8’ );
$_input[ $key ] = _h( $val );
} else {
$key = htmlspecialchars( $key, ENT_QUOTES, ‘UTF-8’ );
$_input[ $key ] = htmlspecialchars( $val,

元記事を表示

PHPの正規表現のuフラグっていつ使うの?

PHPの`preg_*`系関数で使う正規表現は、区切り文字の後ろにいろいろなフラグを付けることができます。
その中で私が用途をすぐ理解できなかった`u`フラグについて書きます。

## tl;dr
– `u`なしだと、パターンの内容などによっては意図した動きにならない
– マルチバイト文字を扱うならとりあえず`u`は付けよう

## preg正規表現の`u`フラグ
なにはともあれ公式マニュアルを確認します。

> u (PCRE_UTF8)
この修正子は、Perl 非互換な PCRE の機能を有効にします。パターンと対象文字列は、 UTF-8 として処理されます。 無効な対象文字列を preg_* 関数に渡しても、何もマッチしません。 無効なパターンを渡すと、E_WARNING レベルのエラーが発生します。 5オクテットおよび6オクテットの UTF-8 シーケンスは無効とみなされます。

https://www.php.net/manual/ja/reference.pcre.pattern.modifiers.php

?「つまりマルチバイト文字を含む正規表現には`u`をつけなきゃい

元記事を表示

dh key too small を試す

# はじめに

通信先が脆弱なキーサイズを使っているとクライアント側が自衛のために発生するらしい

クライアント側のセキュリティレベルを下げると発生しなくなる(下げるな)

https://weakdh.org/

> What Should I Do?
If you run a server…
If you have a web or mail server, you should disable support for export cipher suites and use a 2048-bit Diffie-Hellman group. We have published a Guide to Deploying Diffie-Hellman for TLS with step-by-step instructions. If you use SSH, you should upgrade both your server and client installations to the most recent version of OpenSSH, which prefers

元記事を表示

Javaしか知らない10年目プログラマが転職を機にPHPを学び始めた話 #1

# 対象読者

* これからPHPを学ぼうとしている方
* ある程度プログラミング経験がある方
* 転職による環境の変化に不安を抱いている方

# 今回の結論

* PHPは*Hypertext Preprocessor*である
* 語弊はあるがHTML生成を目的としていると言える
* PHPの文字列リテラルの`”`と`’`の特徴について
* 複数行になる、またはテンプレートが必要な場合は`”`が適している
* 単行で短い文字列の場合は`’`が適している

# 本記事作成の経緯

アルバイトから数えて10年ほどJavaとSpringbootで受託開発を行っていましたが、
初めての転職を機にPHPとLaravelを使った自社サービス開発の環境へ飛び込んで得た、
知見と感想を共有させてください。

# PHPとは?

私: 「PHPとは?」

ChatGPT:
>‐‐‐
PHPは、主にウェブ開発に使用されるスクリプト言語です。
PHPは「PHP: Hypertext Preprocessor」という再帰的な略称であり、
動的なウェブページやウェブアプリケーションを作

元記事を表示

Amazon AWS Cloud9 でPHP8.2系のLAMP開発環境を速攻で作る方法

# はじめに
https://qiita.com/qwe001/items/d3270b0de7f8b17a4f85

上記の記事で書いた内容を8.2版にしただけです。
詳しい作り方は上記記事を参考にしてください。
最近php8.2環境を作ることが増えたので、ターミナルで実行するコマンドだけ絞って書きます。

# PHP8.2など必要ライブラリをインストール

“`bash
# とりあえずyumアップデート
sudo yum -y update
# php7.2系をアンインストールする
sudo yum remove php*
# php8.2系をインストールする
sudo yum install -y –enablerepo=epel,remi,remi-php82 php82-php php82-php-{fpm,mbstring,mysqlnd,xml,xdebug,intl}
# phpのパスを通す
sudo ln -s /usr/bin/php82 /usr/bin/php
# MySQLサーバ(mariadb)をインストールする
sudo yum install -y

元記事を表示

LaravelのFormatter(Pint)の導入

## 1. はじめに

PHPのFormatterで有名な`PHP-CS-Fixer`がありますが、Laravelでは`Pint`というFormatterがv9.3から標準搭載されました。

https://github.com/laravel/laravel/releases/tag/v9.3.0

本記事では`Pint`の使い方とプリセットの解説をしたいと思います。

## 2. 対象読者

– Laravel開発者
– コードの品質を向上させたいと考えている方
– チーム開発で一貫性を保つための方法を探している方

## 3. 目次
– [1. はじめに](#1-はじめに)
– [2. 対象読者](#2-対象読者)
– [3. 目次](#3-目次)
– [4. インストール方法](#4-インストール方法)
– [5. プリセット`laravel`](#5-プリセットlaravel)
– [5-1. **フォーマットとインデントに関する設定**](#5-1-フォーマットとインデントに関する設定)
– [5-2. **クラス、関数、制御構造に関する設定**](#5-2-クラス

元記事を表示

掲示板の検索機能

最近掲示板の検索機能の実装方法を学んだのでこちらにアウトプットしておきます。
# 検索機能の実装
検索バーを`ransack`というgemを使って実装していきます。
Ransackはデータベースから特定の条件に一致するレコードを探すための検索クエリを生成する機能を提供します。

#### 手順
①`ransack`のインストール
②コントローラーの編集
③viewの編集
④国際化(任意)

# ①`ransack`のインストール
Gemfileに以下のコードを記入
“`ruby:Gemfile
gem ‘ransack’
“`
“`
$ bundle install
“`

# ②コントローラーの編集
“`ruby:boards_controller.rb
#編集前
def index
@boards = Board.all.includes(:user).order(created_at: :desc).page(params[:page])
end
↓↓
def index
@q = Board.ransack(params[:q])
@boards =

元記事を表示

Swagger-PHP @OA\Items() is required when @OA\Schema() has type “array”の解決法

# はじめに
Laravel + Swagger/OpenAPI でAPIを開発する際に書くアノテーション(`@OA\`から始まるコメントみたいなの)に問題があり、Swaggerのドキュメントを出力する際にエラーが発生した。。。

“`console
$ php artisan l5-swagger:generate

Regenerating docs default

ErrorException

@OA\Items() is required when @OA\Schema() has type “array” in \App\Http\Controllers\Mobile\Version1\SearchController->getJobs() in /var/www/html/app/Http/Controllers/Mobile/Version1/SearchController.php on line 247

at vendor/zircote/swagger-php/src/Loggers/DefaultLogger.php:31
27▕

元記事を表示

株式会社ゆめみコーポレートエンジニアリングチームの新卒研修を全部公開します

# はじめに
株式会社ゆめみ(以下, ゆめみ)には,「コーポレートエンジニアリングチーム(以下, CE)」というチームがあります.
内製化支援がメインの事業であるゆめみの中で,CE は少し異質なチームで,組織の問題解決をすることに特化したチームです.普段は社内で使う Web サービスを開発しています.

詳しくは僕の過去のスライドや QiitaZine, CodeZine をご覧ください.

https://codezine.jp/article/detail/15419

「組織改善にダイレクトに関われるから面白い」ゆめみが語るコーポレートエンジニアの魅力〜Qiita Conference 2022イベントレポート

# ゆめみのコーポレートエンジニアに求められる力
以下は,コーポレートエンジニアを志望してくださる方のカジュアル面談や面接を担当していただく社内の担当者向けに私が用意した資料の抜粋です.

## 求める人物像
### 自分から率先してコミュニケーションが取れるひと
CE が開発・運用しているア

元記事を表示

Laravel Herdを試してみた【PHP/Laravel環境爆速構築ツール】

# Laravel Herdとは

Herdは、macOS向けの高速で便利なネイティブなLaravelとPHPの開発環境です。Laravelの開発を始めるには、PHP、nginx、そしてdnsmasqなど、必要なすべての要素が含まれています。

さらに、HerdはLaravel Valetの基盤になっているため、Laravel Valetの素晴らしい機能をすべて活用できます。

Valetとは異なり、HerdではHomebrewのインストールが必要ありません。なぜなら、Herdにはあらかじめコンパイルされたバイナリが含まれているからです。そのため、Herdをインストールして実際にPHPを使い始めるまでが非常に高速です。

https://herd.laravel.com/

つまり、これさえダウンロードすればLaravelをすぐに使い始めることができるってわけらしいです。
今回は、Laravel Herdを使ってLaravelのトップページを表示するところまで試してみます。

# 必須条件

– MacOS 12.0([Monterey](https://www.apple.com/b

元記事を表示

本当に手動でトランザクションを管理する必要がありますか?

# はじめに
Laravel には,データベーストランザクションの管理方法が大きく分けて 2 種類あります.
* `DB::transaction()` を使う方法
* `DB::beginTransaction()`, `DB::commit()`, `DB::rollBack()` を自分で組み合わせる方法

僕は圧倒的に `DB::transaction()` 派なんですが,レビューで指摘すると「なぜそこまで強く推すのか」と聞かれることがあるのでここに僕の考えをまとめておこうと思います.

今後聞かれたら「この記事読んで!」ができるぞ〜〜(怠惰)

# 簡単なサンプル
以下に, `DB::transaction()` を使ったパターンと(以下トランザクションの自動管理,自動管理) `DB::beginTransaction()`, `DB::commit()`, `DB::rollBack()` を使ったパターン(以下トランザクションの手動管理,手動管理)を簡単に書いてみます.

### 自動管理

“`php
use Illuminate\Support\Facades\DB

元記事を表示

filter_input関数(メソッド)の分かりやすい?記事

# 概要
filter_inputってどうやって渡ってくるんだっけ?
忘れちゃうなーって思ったので記事にしました。
# バージョン
– php 8.1

# html

“` html



チェックデジットを比較してみた

# チェックデジットを比較してみた

チェックデジットは、バーコード・ISBN・クレジット番号と様々なものに使われている。少し前マイナンバーカードのチェックデジットは性能が悪い、という話もあったらしい。
チェックデジットにはどのような方式が有るのかを調べ、それぞれの性能差を比較してみた。

## 比較対象のチェックデジット方式

* 単純な足し算
* Luhnアルゴリズム
* ISBN-10
* ISBN-13
* マイナンバー
* Verhoeffアルゴリズム
* DAMMアルゴリズム

## 各方式のPHP実装

比較テストのためPHPで各方式を実装した。フォーマットをそろえるため以下の仕様とした
* 1つの方式を1つの関数で実装する
* 入力はN桁の数字(0-9)で構成された文字列型
* 出力は数値型。入力文字列を処理した結果で主に0-9の数値が返る

正しく動作すれば良いので最適化はしていない。

### 単純な足し算
“`php5
function sum1($str) {
$cs = 0;
for($i=0,$len=strlen($str); $i<$len; $i

元記事を表示

AtCoder 入茶しました

AtCoder入茶しました。なんか色変したら記事書く文化の様なので書きます。
ABC310にて、BでつまづいてAとCのみACで絶対スコア落としたと思ったのになんか入茶できました、逆に納得いかない。

前向きな勉強法とかこんなことしました的なのは多いので、自分は反省書いていきます。

問題文の読み違いをやらかす

AtCoderの問題文は丁寧に読めば論理的に解釈の余地が入るようなものはないです。しかし、制限時間付きでやってると問題文を斜め読みして、入出力サンプルをざっと見て、憶測の入った解釈で解答に臨んでしまうことも多く、実際それでも9割ぐらいは正答できるんですが、やっぱり1割ぐらいはなんか勘違いや読み違いをしてしまうもので、その間違った解釈でコードを書き、WAでもコードが間違ってるんだと思って何度やっても通らない修正を繰り返してしまうというパターンに数度ハマりました。おおよそコードが思った通りに書けているのにサンプルすら正答にならないなら問題文を読み直すべきでした。
プログラマーが最も学ぶべき言語は日本語というのは至言です。

直近のやらかし案件です
[ABC309 B](htt

元記事を表示

Setup Unit Test with PHP Laravel in windows

# Outline
前回、Laravel + MariaDB + IIS といろんな環境を構築して、phpunitを使う環境のドキュメントを作成した。
今回はシンプルに、phpunitを学習するための最低限の環境を構築、かつサンプルコードで1つ書いてみるところまでをドキュメントとして残す

# PHP

## install PHP

https://www.php.net/

php windows versionのzipをダウンロードする。
今回、Non Thread Safe versionを使う。

Thread Safeに関する記事は、以下参照。使用環境によって異なる。

https://techplay.jp/column/504

zipをdownload後、解凍し任意の場所に配置する。
今回、一般的に使われる、c:\phpに配置した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/5ffb719f-9d79-6ae4-9783-596109ab9090

元記事を表示

WSL2, Laravel Sail 環境でXdebugを有効にする

# WSL2, Laravel Sail 環境でXdebugを有効にする
## Background
最近laravel sailをよく使うが、xdebug環境を整えたことがなかった。
`php artisan serve`を使わない方法を調べてもなかなか解決しなかったのでまとめ。

## Environment
– wsl2, ubuntu
– PHP 8.2.8, laravel 10.14.1
– Xdebug v3.2.1

## Solution
※sailでアプリケーションディレクトリ作成後からの内容になります。
編集対象のファイルは以下の4つ。
– php.ini
– docker-compose.yml
– .env
– launch.json

### php.ini
通常はvendor配下に存在しているので、以下コマンドでアプリフォルダ直下に持ってきます。
– wslで実行
– `./vendor/bin/sail sail:publish`
– container内で実行
– `php artisan sail:publish`
コマンド実行するとアプリディレ

元記事を表示

WindowsでMAMPを使うとlaravelインストールでエラーが出ます

# 概要
laravelをインストールしてるんだけどできない!
ちょっと理由がありMAMPを使っていたら、問題発生!解決策を見つけるぞ!
と思って沢山対策を調べましたが全然なかったので、記事にしました。

# バージョン
– laravel 9.x
– composer 2.5.8
– php 8.1

# エラー内容
“`
laravel/framework[v9.36.4, …, 9.x-dev] require league/flysystem ^3.8.0 -> satisfiable by league/flysystem[3.8.0, …, 3.x-dev].
– laravel/framework[v9.18.0, …, v9.36.3] require league/flysystem ^3.0.16 -> satisfiable by league/flysystem[3.0.16, …, 3.x-dev].
– laravel/framework[v9.0.0-beta.2, …, v9.17.0] require lea

元記事を表示

【Laravel】フラッシュメッセージの書き方

保存や作成などを実際に行った時に一目でわかりずらい時にフラッシュメッセージを表示させると

利用者は、登録された事が一目でわかるため快適にアプリケーションを利用できます。

今回は、画面が切り替わりながらデータを持ち越すということで`Session`を使って表示させていきます。

## 書き方(複数あり)

### **①**

`session()`ヘルパ関数の`flash()`メソッドでキー`’message’`とバリュー`’登録できました。’`と書く

“`php
session()->flash(‘message’, ‘登録できました。’);
“`

### ②

useでセッションを読み込んで`Session::flash`でキー`’message’`とバリュー`’登録できました。’`と書く

“`php
Session::flash(‘message’,’登録できました。’);
“`

### ③

`redirect()`する際に`with()`メソッドでキー`’message’`とバリュー`’登録できました。’`と書く

“`php
redirect()->w

元記事を表示

OTHERカテゴリの最新記事