- 1. PHP(Laravel共通部分含む)備忘
- 2. 【PHP8.x】 switch文をmatch式で書き換えてみよう
- 3. Laravel 例外処理 ハンドラーによしなにやってもらう
- 4. フレームワークを改修した話(その2)
- 5. 時間を計る、”Stopwatch”
- 6. 高専の文化祭で使うスタンプラリーをPHPで作った話
- 7. Laravelでデータプロバイダを使ったテストで INFO No tests found. と出てしまう原因
- 8. 【PHP】シングルクォーテーションとダブルクォーテーションの違い
- 9. PHPSpreadSheetで3桁カンマで円マーク表記をする方法
- 10. codecamp第3章‐7 課題(中級)
- 11. codecamp第3章‐6 課題(初級)
- 12. codecamp第3章‐5 課題
- 13. 税込金額から消費税額を算出してみた
- 14. 開発時のエラー箇所発見のお手伝い、”ErrorHandler”
- 15. 正規表現を簡単に書きたいっ
- 16. 【PHP8.3】PHP8.3がリリースされたので新機能全部やる
- 17. フレームワークを改修した話(その1)
- 18. WordPressの諸々
- 19. 【メモ】Laravel API エラーフォーマットの上書きと注意点
- 20. PHP memory_get_usage() の引数 $real_usage とは?
PHP(Laravel共通部分含む)備忘
自分用備忘です(テスト投稿)
## 日本語環境時のお約束 エラー回避
“`php
date_default_timezone_set(‘Asia/Tokyo’);
mb_language(‘Japanese’);
“`## 利用メモリの上限引き上げ
“`php
ini_set(‘memory_limit’, ‘1G’);
“`
## 処理時間の上限を引き上げる
“`php
set_time_limit(120);
//負荷対策上、非常時の使用に限定すべき
“`## 処理時間を計測する
“`php
$time_start = microtime(true);
$keika_time = microtime(true) – $time_start;
echo ‘経過時間’.round($keika_time,3).’秒
‘; //小数点以下3桁まで表示
“`
## (サーバー上の)指定フォルダ内にあるファイル名を取得
“`php
$folder_path = ‘./フォルダ名/’;
$files = scandir($folder_path);
fore
【PHP8.x】 switch文をmatch式で書き換えてみよう
## 概要
PHP8からmatch式が導入されました。今までswitchで書いていた部分をモダンにmatch式に書き換えてみましょう## 例
### switch文
“`php
$variable = “value2”; // 変更可能な値// switch文
switch ($variable) {
case “value1”:
$result = “値はvalue1です。”;
break;
case “value2”:
$result = “値はvalue2です。”;
break;
case “value3”:
$result = “値はvalue3です。”;
break;
default:
$result = “その他の値です。”;
}echo $result;
“`### match式
“`php
$variable = “value2”; // 変更可能な値// match式
$result = matc
Laravel 例外処理 ハンドラーによしなにやってもらう
# Laravelにおける例外
Laravelでは独自の例外クラスがたくさん定義されているみたい。。。 以下記事見ればその量に驚くはず。
> [例外の命名の参考にするために Laravel の例外すべて漁ってみた](https://zenn.dev/yumemi_inc/articles/7b62ba574011ce)実際のPJによって、例外に対する扱い方は変わると思うので、めちゃくちゃ細かく分割するもよし、何個かに絞るのもよしだと思います。 この記事では、今僕がジョインしている案件での例外処理について少し書いてみます〜
# Handlerとは??
Laravelに標準で設けられており、アプリケーション上で発生するあらゆるエラーを検知してくれるすごいやつです。(以下公式Doc)
> エラーと例外の処理は、新しいLaravelプロジェクトの開始時に最初から設定されています。App\Exceptions\Handlerクラスは、アプリケーションが投げるすべての例外がログに記録され、ユーザーへレンダーする場所です。このドキュメント全体を通して、このクラスについて詳しく説明します
フレームワークを改修した話(その2)
こんにちは!
前回、[フレームワークを改修した話(その1)](https://qiita.com/yam_dev/items/a6c18eb19ad66f11c0b9)を書きました。
今回は、laravel-adminを改修(カスタマイズ)した経験について書こうと思います。
# はじめに
サービス開発を行なう際、ユーザー画面だけでなく、管理画面も必要ですね。
要件定義で様々なご要望をいただくのですが、利用するフレームワークによって、以下のパターンに分かれます。
– すぐに実現できる機能
– カスタマイズしないと実現できない機能フレームワークは便利ですが、万能ではありません。
そこで、どのようにカスタマイズできるか、というのが大事になります。今回は、お客さまのご要望を実現するために奮闘したお話です。
# どのような要件だったか
たとえば、このような画面。
よくある検索画面です。
![aaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407770/5bfb4c7b-4e77-e740-
時間を計る、”Stopwatch”
[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の6日目の記事です。
## 時間を計る、”Stopwatch”
[StopWatch](https://symfony.com/doc/current/performance.html)は、名前の通り時間を計るコンポーネントです。
### インストール
“`shell
composer require symfony/stopwatch
“`### 基本的な使い方
とても簡単で、`Stopwatch`オブジェクトを生成後、`satart(‘{イベント名}’)`, `stop(‘{イベント名}’)`で計測開始・終了。`getEvent(‘{イベント名}’)`で計測結果である`StopwatchEvent`オブジェクトを取得できます。
“`php
use Symfony\Component\Stopwatch\Stopwatch;$stopwatch = new Stop
高専の文化祭で使うスタンプラリーをPHPで作った話
# 0. はじめに
この記事は、[長野高専 Advent Calendar 2023 6日目](https://qiita.com/advent-calendar/2023/nnct) の記事となります。昨日の[Crysta1221](https://twitter.com/cr1sta_dev)さんの記事「[文化祭でクラス企画のシステムを作った話](https://qiita.com/Crysta1221/items/627ae9b51f662b52946b)」に引き続き、私も長野高専の文化祭についての記事を書きたいと思います。
私は、1年の時から3年の現在に至るまで、過去3回の長野高専の文化祭(工嶺祭)のスタンプラリーのWebアプリを開発・運営をさせていただきました。
この記事は、あまり技術的なことは書かずに、その当時に思ったことを中心に書きたいと思います。(**ソースコードはないよ!**)
さて、この記事が投稿される12月6日は、1982年に東京地裁が「**コンピュータのプログラムは著作物に該当**」という初の判断をした日です。(**せめてものIT要素**)
基本的に
Laravelでデータプロバイダを使ったテストで INFO No tests found. と出てしまう原因
## はじめに
PHPUnitを使用していて、データプロバイダを使用したテストを書いていて、`INFO No tests found.`と言われかなりハマったので、戒めにさらっと書きます!## エラー内容
– テストを実行すると`INFO No tests found.`と出てしまう。## 試したこと(現状)
– データプロバイダの命名に違いがないか
– タイポはないか
– データプロバイダのアノテーションを消すと動くこと## 原因
– 結論、問題の原因はデータプロバイダの中で、ファサードを使っていたことでした。
– データプロバイダはLaravelのライフサイクルの外みたい?です“`php
use Str; // このようにファサードで使うのはNGprivate function getDefaultInvalidParams(): array
{
return [
‘receiverId’ => 999999999999999,
‘message’ => Str::random
【PHP】シングルクォーテーションとダブルクォーテーションの違い
## はじめに
この記事は、PHPを勉強し始めたばかりの初心者向けの記事になります。PHPを勉強していて、
**シングルクォーテーションとダブルクォーテーションに明確な違いがある**
ことに驚いたので今回記事を書いてアウトプットしようと思います。結論はこちら⏬
– シングルクォーテーションで囲うと、変数が入っていようが**絶対に文字列になる**
– ダブルクォーテーションで囲うと、**変数が展開される**## 実際に見てみる
“`$hensuu“`という変数を用意して、実際に確認してみます。
“`php:hello.php
$hensuu = ‘Hello World!’;
echo $hensuu.’
‘; # Hello World! と表示される
echo ‘$hensuu
‘; # $hensuu
と表示される
echo “$hensuu
“; # Hello World! と表示される
“`実際にWebで確認したところ、以下のように表示されました。
![screenshot 2023-12-05 16.31.12.
PHPSpreadSheetで3桁カンマで円マーク表記をする方法
PHPSpreadSheetはPHPでExcel等のファイルを生成するためのライブラリです。
https://github.com/PHPOffice/PhpSpreadsheet
こちらで円マークと3桁カンマを使って表示する方法がちょっと分からなかったので調べました。
結論としては`'”¥”#,##0’`と表記すると良いようです。**ダブルクォーテーションがないと、正しく認識してくれないので注意しましょう!**
“`php
$sheet->setCellValue(‘A1’, 1000);
$sheet
->getStyle(‘A1’)
->getNumberFormat()
->setFormatCode(‘”¥”#,##0’);
“`メモ程度ですが、忘れがちなので書いておきました。
codecamp第3章‐7 課題(中級)
## 変数$valueに代入されている値を「切り捨て」「切り上げ」「四捨五入」「小数点以下第三位四捨五入」した値を計算し表示するよう、以下のプログラムへ追記してください。
“`php:
課題
元の値:
小数切り捨て:
codecamp第3章‐6 課題(初級)
## 「printf」という関数を使い、変数$intの値を5桁の数値として表示するよう、以下のプログラムへ追記してください。
“`php:
“`
codecamp第3章‐5 課題
## 「data」という関数を使い、本日の日付を表示してください。
“`php:
“`
税込金額から消費税額を算出してみた
# 概要
2023年10月よりインボイス制度が開始されました。それにより、これまで税込金額で取り扱われていたシステムに対して、
「消費税額」を計算する必要が出てきました。ちょうど仕事柄、税込金額から消費税の計算をする必要ができましたので、
消費税の計算プログラムを作ってみました。# 計算プログラム
“`php
開発時のエラー箇所発見のお手伝い、”ErrorHandler”
[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の5日目の記事です。
## 開発時のエラー箇所発見のお手伝い、”ErrorHandler”
`ErrorHandler`は、開発時にエラー箇所の特定を容易にするコンポーネントです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9882/131e0018-e795-0abb-07fb-5daa1dcb2303.png)
Symfonyを使っている人であれば、見たことあるエラー画面だと思います。この画面の出力のお手伝いをしているコンポーネントです。Symfony以外でも動作します。
### インストール
“`
composer require symfony/error-handler
“`### 使い方
Symfonyにはすでに仕込まれているので、意識することないとは思いま
正規表現を簡単に書きたいっ
## はじめに
– 正規表現ってむずかしいですよね。
– そんなあなたにおすすめなライブラリがあるのでご紹介します。## 今回やること
– phpで正規表現をわかりやすく書けるライブラリ `VerbalExpressions/PHPVerbalExpressions` の紹介
– GitHub: https://github.com/VerbalExpressions/PHPVerbalExpressions
– 適当にpostした値をライブラリを利用して構築した正規表現でチェックしてみる## 使い方
– `VerbalExpressions/PHPVerbalExpressions`のインストール
“`
composer require verbalexpressions/php-verbal-expressions
“`
– コントローラだったりモデル、サービスなど使いたいところで使うだけ### 使用例
– URLの形式のに沿っておるか正規表現でチェックしたい時
普通に書くとこんな感じ ↓↓↓↓↓↓ むずかしい…
“`
$regex = ‘https?:/
【PHP8.3】PHP8.3がリリースされたので新機能全部やる
[PHP8.3](https://qiita.com/rana_kualu/items/f03efb9810c3ac5b2ab6) / [PHP8.2](https://qiita.com/rana_kualu/items/64bd73ad3d314a1cccdc) / [PHP8.1](https://qiita.com/rana_kualu/items/e350b8ff80f929626eb9) / [PHP8.0](https://qiita.com/rana_kualu/items/c110cb244c3ee38c6859)
2023/11/23に[PHP8.3.0がリリースされました](https://www.php.net/)。
大きな新機能については、PHP8.0以降公開されるようになった[ランディングページ](https://www.php.net/releases/8.3/)で見ることができます。
[マイグレーションガイド](https://www.php.net/manual/ja/migration83.php)も既に日本語化されています。また、採用された
フレームワークを改修した話(その1)
みなさん、こんにちは!
長く開発をやっていると、使用した技術がいつのまにか古くなっている、というのがよくあります。
言語のバージョンもそうですが、フレームワークも同じです。今回は、フレームワークが古くなった時の体験談です。
# 背景
過去に、とあるショッピングカートの開発を担当してました。
当時Ethnaというフレームワークを利用していたのですが、入社して3年ほど経ったときに、フレームワークの開発がストップしているのが発覚。PHPのバージョンはどんどん上がっていき、フレームワークのPHPバージョンはもうすぐEOL。
さあ、どうする??という場面に直面し、色々と調査することに。# 調査内容
## 他のフレームワークを調査する
当時の状況から、候補となったのは、以下の3つでした。
・CakePHP
・FuelPHP
・Zend Framework使いやすさから考えると、一旦、CakePHPがいいのではないか、という結論に。
## 開発工数を見積もる
当然ですが、作り直した場合に、どのくらいのコストがかかるのか、という調査をします。
担当は私一人の前提で、機能数や画面数
WordPressの諸々
今週のWordPressでハマったところ。
かなり初歩的な内容なんだろうけど。。。## 記事とページネーションの数が一致しない
アーカイブページで1ページに12個ずつ投稿を出すように管理画面から設定をして、コードの方でも12件取得するように書いていた。
出力されてる記事が48件でページネーションが4つ表示されるのが正解なんだけど、何故かページネーションが5つ表示される。。。
原因は非表示にしている投稿まで取得していたこと。以下が解決法でした。
“`PHP
function custom_posts() {
global $wp_query;
if($wp_query->is_admin) return;
if(is_post_type_archive()){
$wp_query->query_vars[‘post_status’] = ‘publish’;
}
}
add_filter(‘pre_get_posts’, ‘custom_posts’);
“`
【メモ】Laravel API エラーフォーマットの上書きと注意点
## APIのエラーの上書き
### 概要
– 今回の要件
– POSTやPATCHなどの引数エラーなどなど、すべてのエラーはJSON形式でレスポンスをしたい
– Laravelのデフォルトでは、HTML形式でエラーがレスポンスされてしまう。
– エラーレスポンスも含めてレスポンスの形式を制御したい。### 状況説明
“`
Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1364 Field 'unique_text' doesn't have a default value (Connection: mysql, SQL: insert into `card_formats` (`payment_name`, `updated_at`, `created_at`) values (rakuten, 2023-12-03 09:46:59, 2023-12-03 09:46:59)) in file /var/www/html/vendor/lar
PHP memory_get_usage() の引数 $real_usage とは?
# 序文
PHP で開発をしていると一度はこんなメッセージを見たことがあるかと思います。“`log
Fatal error : Allowed memory size of xxx bytes exhausted …
“`上記エラーは許容されているメモリサイズを超えてしまった場合に発生するものです。
このエラーの対処法を調べると、主に以下のような方法がヒットすると思います。– 許容メモリ量を増やす( [memory_limit](https://www.php.net/manual/ja/ini.core.php#ini.memory-limit) を変更する)
– php.ini で設定を変更する
– .htaccess で設定を変更する
– ini_set() で一時的に設定を変更する
– コードをチューニングする(不要なメモリ使用を減らす)
– unset() で明示的に変数を解放する
– [gc_collect_cycles](https://www.php.net/manual/ja/function.gc-coll