PHP関連のことを調べてみた

PHP関連のことを調べてみた

PHPUnit\Framework\SkippedTestError:

https://github.com/sebastianbergmann/phpunit/blob/a2bc7ffdca99f92d959b3f2270529334030bba38/src/Util/Annotation/DocBlock.php#L290

データプロバイダのdataが`[]`のとき、タイトルのようなエラーが発生する

“`php
/**
* Returns the provided data for a method.
*
* @throws Exception
*/
public function getProvidedData(): ?array
{
/** @noinspection SuspiciousBinaryOperationInspection */
$data = $this->getDataFromDataProviderAnnotation($this->docComment) ?? $this->getDataFromTestWithAnno

元記事を表示

EloquentのchunkとchunkByIdの違いと使い分け

:::note

AI要約

– chunkメソッドは、データをオフセットとリミットで分割して処理する
– chunkByIdメソッドは、主キー(ID)を基準にデータを分割して処理する
– chunkメソッドは、データの追加や削除でオフセットがずれるリスクがある
– chunkByIdメソッドは、主キーにより安定したチャンク処理が可能
– 動的データにはchunkById、静的データにはchunkメソッドを使用すると良い

:::

## はじめに
以前`chunk`メソッドに関する記事を書きました

https://qiita.com/t1k2a/items/25f145135a16bc5e3f44

しかし`chunk`メソッドを使用するとデータ更新の際に予期しないことが起きてしまうので
その対策として`chunkById`メソッドがあります
それぞれの違いを見ていきたいと思います

## `chunkById`メソッドとは
主キーを使用してデータをチャンク(塊)に分割し、各チャンクを順次処理します
チャン

元記事を表示

【CakePHP5】コントローラとモデルを作成する

# はじめに

こんにちは、エンジニアのkeitaMaxです。

前回の記事の続きです。

https://qiita.com/keitaMax/items/953002976f2b38e298c5

今回はコントローラとモデルを作成します。

# コントローラを作成

以下コマンドでコントローラを作成します。

“`
bin/cake bake controller articles
“`

実行すると以下のようになります。

“`
root@04a17a8a001b:/app# bin/cake bake controller articles
Baking controller class for Articles…

Creating file /app/src/Controller/ArticlesController.php
Wrote `/app/src/Controller/ArticlesController.php`
Bake is detecting possible fixtures…

Baking test case for App\Cont

元記事を表示

LaravelでAPIをサクッと作成するための指南書

# サクッとLaravelでAPIを作る

“`
作成日: 20240625
最終更新日: 20240626
“`
## 前提
初学者が超簡易的なAPIを作成してみるをテーマにしたレベル感
PHPとcomposerの環境構築がされていること
DBサーバーを仮想環境やローカルに構築済みであること

## 目次

– [サクッとLaravelでAPIを作る方法](#サクッとlaravelでapiを作る方法)
– [前提](#前提)
– [目次](#目次)
– [Laravelプロジェクトの作成](#laravelプロジェクトの作成)
– [envの設定](#envの設定)
– [トラブルシューティング](#トラブルシューティング)
– [Modelの作成](#modelの作成)
– [ソース例](#ソース例)
– [Controllerの作成](#controllerの作成)
– [ルーティングの設定(api.php)](#ルーティングの設定apiphp)
– [ここまでこれたらAPI完成](#ここまでこれたらapi完成)
– [番外編: エラーで困ったらとりあえずキャ

元記事を表示

PHPカンファレンス福岡2024の感想

## はじめに

PHPカンファレンス福岡2024のスタッフの皆様ありがとうございました。
また、登壇者の方々、大変参考となるセッションありがとうございました。
初めてPHPカンファレンスに参加したのですが、PHPerの皆様のノリの良さに驚きました。
そして登壇者の方々の熱意と知識に刺激を受けました。

## 各セッションの振り返り

### [PHPコードの実行モデルを理解する](https://speakerdeck.com/shin1x1/understanding-the-php-execution-model)([@shin1x1](https://x.com/shin1x1))

今までどのようにPHPのコードが実行されているかを考えずに過ごしてきたのですが、オペコードに変換されて実行されるということを初めて知りました。
また、php-fpmの実行モデルの説明の中でキャッシュ機構があることを知り、試してみたところ速度がかなり上がり大変助かりました。
オペコードの生成方法から勉強します。

### [Fat Controller は開くか? 〜光のFat Controller

元記事を表示

コーディングを愛し、残業を減らす5つの必須プログラミングツール

### コーディングを愛し、残業を減らす5つの必須プログラミングツール

「CVエンジニア」として、コードをコピペするのが日常業務ですが、今日のツールがこれほど便利になるとは思いませんでした。以下は、私の効率を大幅に向上させ、残業時間を減らしたいくつかのツールです。

#### [Fronty](https://fronty.com/)

フロントエンドエンジニアは、ウェブデザインをHTMLとCSSコードに変換する必要があります。手動でコードを書くのは時間がかかり、エラーが発生しやすいです。これにより生産性が低下し、デザインと開発の自由度が制限されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782463/0a8be9de-d0da-72fe-3f4d-fd883806b0fc.png)

私はFrontyを見つけました。これは、ウェブプロトタイプをクリーンなHTMLとCSSコードに直接変換する強力なサービスツールです。FrontyはAI駆動のサービスで、人工知能を活用してウェ

元記事を表示

Laravelで大量データを扱う:chunkメソッドの基礎と実践

## はじめに
最近、大量のデータを扱う対応をいたしました
もちろんそのまま取得すると動作が重くなったりサーバーへの負荷が重すぎてしまいます
そのため、取得数の制限をしたかったのですが、すべてのデータを使用する必要があったのでせめて分割で取得できればなと思いました
そんな中で見つけた`chunk`が今回のような状況にピッタリだったので調べた内容を記事にします

https://readouble.com/laravel/8.x/ja/eloquent.html#:~:text=flight%2D%3Ename%3B%0A%7D-,%E7%B5%90%E6%9E%9C%E3%81%AE%E5%88%86%E5%89%B2,-all%E3%81%BE%E3%81%9F%E3%81%AFget

## `chunk`メソッドとは
– `chunk`メソッドは、指定したサイズごとにクエリ結果を分割して取得して、第2引数のクロージャ関数で処理を実行します
– 分割したレコードをそのまま参照できるのではなく、分割したうえで何かしらの処理を実行させなければならなりません

“`php
$u

元記事を表示

array_filter関数

プルダウンを使ったarray_filter関数のサンプル

# 配列定義
“`php

// フルーツ種類定義
define(“APPLE”, 1);
define(“BANANA”, 2);
define(“ORANGR”, 3);
define(“CHERRY”, 4);
define(“GRAPE”, 5);

// フルーツ配列
define(
‘FRUIT’,
array(
APPLE => ‘りんご’,
BANANA => ‘バナナ’,
ORANGR => ‘オレンジ’,
CHERRY => ‘さくらんぼ’,
GRAPE => ‘ぶどう’,
)
);
“`

# array_filterで範囲を指定
バナナまでの表示に設定

元記事を表示

ページネーションにしたい配列を突っ込むだけ

1ページ当たり100件、ボタン表示数5個までのPHPページネーションサンプル。
変数定義の部分の$dataにページネーションにしたい配列を突っ込んで使ってください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3648477/9974a2f0-613a-9f25-0bca-07a09230a097.png)

# 定数

PAGER_DISP_NUM
ボタンを何個まで表示するか
PAGER_DATA_NUM
1ページにつき何件のデータを表示するか
PAGER_RANGE_BEFORE
現在のボタンの前方向に表示するボタン数
PAGER_RANGE_AFTER
現在のボタンの後方向に表示するボタン数
PAGER_RANGE_FIRST_LAST
最初と最後ボタン数<

元記事を表示

【Laravel11】1分に1回自動で実行するバッチを作成する

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回はLaravel11を使用してバッチを作成していきたいと思います。

# ファイル作成(コマンド作成)

以下のコマンドを使用してバッチを作成します。

“`
php artisan make:command ExampleBatch
“`

実行すると、`src/app/Copnsole/Commands`ディレクトリ配下に`ExampleBatch.php`というファイルが作成されます。

“`php:ExampleBatch.php

元記事を表示

【Laravel】Template engine を作ってみた

# はじめに
BLOCSは、Laravelで使えるTemplate engineです。なぜBLOCSを開発するのか?「LaravelのBladeって結局プログラムをしないといけない感じがします」すべてはこの一言に集約されます。

Bladeのテンプレートでは、本の一覧表示などの繰り返し処理を以下のように記述します。せっかくHTMLは構造化されているのに、構造を活用せずにテンプレートを書くので「結局プログラムをしないといけない感」が出るのではと。HTMLの構造を活かすことで、Bladeのプログラムっぽさを減らせるのでは?と考え、BLOCSの開発を始めました。

“`html:example.blade.php
@foreach($books as $book)

{{ $book->id }} {{ $book->title }}

@foreach($book->tags as $bookTag)

元記事を表示

【PHP】DateTime::createFromFormat における ISO 8601 形式の罠

PHPで `ISO 8601` のフォーマット`(‘c’)` を扱う際にハマりました。
他にも同じ罠にひっかかる人が出てこないことを願っています 🥱

## ISO 8601 フォーマットについて
年、月、日、時間、分、秒と「タイムゾーン」を出力してくれる便利なフォーマットです。
多言語サイト等を扱う際、時差を考慮する際にとても便利なフォーマットですよね。

### 例
“`php
$datetime = new DateTime(‘now’);
echo $datetime->format(‘c’);

// 出力 2024-06-24T21:00:00+09:00
“`

## 罠にハマりました
何故か `c` フォーマットを `createFromFormat` で `Datetime` オブジェクトを生成しようとしてもうまくいかない…。

デバッグしようと ↓↓ を試してみました。
“`php
$datetime = new DateTime(‘now’);
$create_format_datetime = Datetime::createFromFormat(‘c

元記事を表示

Laravel 11のSail環境(PHP 8.3)をLaravel 10 + PHP 8.2にする

2024/5/10現在、Laravelの最新バージョンは11です。

この時点で、Laravelを含むDocker環境を簡単に構築できるLaravel Sailを利用すると、Laravel 11およびPHP 8.3の環境となります。

弊社の現在の最新環境はLaravel 10およびPHP 8.2のため、このバージョンに合わせた環境をSailで用意する手順をまとめました。

環境情報
——–

| 項目 | バージョン |
|——|———-|
| OS | macOS 13.6.5 |
| Docker Desktop | 4.22.1 |

Laravel Sailを利用したLaravelプロジェクトの生成
——————————————–

macOS向けのLaravel Sailを利用したLaravelプロジェクトの生成手順は以下にあります。

[Sail on macOS](https://laravel.com/docs/11.x/installation#sail-on-macos)

元記事を表示

ファイバーについて

たまたまマニュアルを読んでいたら、

PHP8.1から実装されたファイバーがどこかで使えそうだなーと思い、

学習と備忘録がてら記事にします。

## [ファイバー](https://www.php.net/manual/ja/language.fibers.php) とは
PHP8.1から実装された、完全なスタックを持つ、停止可能な関数のことです。

ファイバーは、コールスタック中のどこからでも停止することができ、

[非同期処理](https://qiita.com/yunity29/items/7ccc84d47e139340ecbc)や[ブロッキングI/O操作](https://wa3.i-3-i.info/word1618.html)に対して効果的らしいです。

“`PHP
// ユーザー定義関数を引数にし、ファイバーインスタンス生成
$fiber = new Fiber(function (): void {
$value = Fiber::suspend(‘fiber’);
echo “ファイバーの値: “, $value, PHP_EOL;
});

$v

元記事を表示

AMPHPを実行できる環境を用意する

## 概要
PHPで非同期処理の実装を行いたかった。8.1で導入されたFibersが組み込まれており、使用感がよさそうだったAMPHPを使える環境を用意してみたのでまとめます。

## 環境構築
dockerでローカルのコンテナ内にミニマムのphp動作環境を作ります。

## dockerfile
phpとcomposerをいれる。
“`dockerfile
# syntax=docker/dockerfile:1

FROM php:8.3.8-alpine

WORKDIR /app

# composer install
COPY –from=composer /usr/bin/composer /usr/bin/composer
“`

## docker-compose.yml
“`yml
version: “3.9”

services:
app:
build: ./
stdin_open: true
tty: true
volumes:
– .:/var/www/html
ports:
– 80

元記事を表示

Laravelのエラーハンドリングとデバッグについてまとめてみた

# はじめに
Laravelを使った開発において、エラーハンドリングやデバッグは重要なスキルです。本記事では、Laravelでのエラーハンドリング方法やデバッグテクニックについて紹介します。サンプルコードも交えて解説します。

# エラーハンドリング
Laravelでは、app/Exceptions/Handler.phpでエラーハンドリングを行います。このファイルには、例外を報告したり、特定の例外をレンダリングするためのメソッドが含まれています。

## カスタム例外ハンドラー
独自のエラーハンドリングロジックを追加するために、Handlerクラスを拡張することができます。

“`php

元記事を表示

自動テストの秘訣: テストメソッドを独立させる

この記事では xUnit (PHPUnit や JUnit など)を使った自動テストを作成する上での秘訣をご紹介します。

今回ご紹介する秘訣は「テストメソッドの独立」についてです。

## 独立していないテスト

サンプルとして、以下のようなメールアドレスを登録する機能について考えてみましょう。

– `register()` メソッドで、メールアドレスをDBに登録する。
– 登録時、アドレスが登録済みのものと重複している場合はエラーメッセージを返す。

これをテストするコードは、例えば以下のようになります。(PHP で書かれています。)

~~~php
public class SampleTest extends TestCase
{
/** テスト対象 */
private $testing;

public static function setUpBeforeClass(): void
{
// … DB を初期化する
}

public function setUp(): void
{

元記事を表示

【Laravel】ドキュメント生成ツールを作ってみた

# はじめに
プログラマー皆さん、ドキュメント書いてますか?処理フロー確認やレビュー、他人が作ったプログラムの理解を深めるためにドキュメントは大きな助けになります。一方で、Excelでドキュメントを作ってくださいとか、プログラム変更時にメンテナンスしなければいけないとか、とにかくメンドくさいですよね。このメンドくさいを減らすために、コントローラーに処理説明を書くだけでExcelドキュメント(処理機能記述書)を生成するツールを開発しました。
![スクリーンショット 2024-06-21 23.59.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962814/ecd4ad52-8fe8-b7e1-f201-e3fe55844d71.png)

# 仕組み
Laravelのコントローラーに、コメントのような処理説明を書いて実行する(画面を表示するなど)とミドルウェアがExcelドキュメントを生成します。
![スクリーンショット 2024-06-20 21.18.00.png](https://qiit

元記事を表示

PHPのエラーハンドリングとデバッグについてまとめてみた

# はじめに
PHPを使った開発において、エラーハンドリングやデバッグは重要なスキルです。本記事では、PHPでのエラーハンドリング方法やデバッグテクニックについて紹介します。サンプルコードも交えて解説します。

# 基本的なエラーハンドリング
PHPでは、try-catchブロックを使って例外をキャッチし、エラーハンドリングを行います。

“`php
getMessage();
}
?>
“`
# カスタム例外

元記事を表示

MacでローカルWebサーバーを素早くセットアップする方法

Macでローカル[Webサーバー](https://www.servbay.com)を素早くセットアップしたいですか?Apache、MySQL、PHPなどのコンポーネントを毎回手動で設定するのに疲れていませんか?ワンクリックで異なるPHPバージョンを切り替えたり、複数のバーチャルホストを簡単に管理したいと思いませんか?もし答えが「はい」なら、Macユーザー向けに設計された強力で便利なWeb開発ツール「ServBay」をぜひ試してみてください。

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zrqmkf16p437md3ylvpd.png)

[ServBay](https://www.servbay.com) の主な機能は次のとおりです:
– 存在しないドメイン(Domain)やサフィックス(TLD)をローカル開発で使用し、これらのドメインに対して無料のSSL証明書を作成できる機能が特徴です。これにより、HTTPS環境(例:https://api.servbay) で開発を行

元記事を表示

OTHERカテゴリの最新記事