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

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

高度なLaravelテクニックを活用した家計管理アプリケーション開発ガイド

## はじめに

Laravelは、PHPのウェブアプリケーションフレームワークとして人気があり、多くの開発者に愛用されています。この記事では、家計管理アプリケーションを例に、Laravelの高度な機能について詳しく解説します。各章では、実際のコード例と詳細な説明を提供し、Laravelの高度な概念を理解しやすくします。

## サンプルデータ

まず、以下の50件の家計データを使用して説明を進めていきます。このデータは、日付、カテゴリ、金額、メモの4つの列で構成されています。

“`php
$household_expenses = [
[‘date’ => ‘2023-01-01’, ‘category’ => ‘食費’, ‘amount’ => 5000, ‘memo’ => ‘新年会’],
[‘date’ => ‘2023-01-02’, ‘category’ => ‘交通費’, ‘amount’ => 1200, ‘memo’ => ‘通勤’],
[‘date’ => ‘2023-01-03’, ‘category’ => ‘光熱費’, ‘amoun

元記事を表示

Laravelの開発環境で php artisan serve が停止しない時の解決策

## はじめに
`php artisan serve` を停止したいけれど、方法がわからない。または停止できない問題を解決する方法を紹介します。
## `php artisan serve` の基本的な停止方法
基本的vscodeのターミナルなどで `php artisan serve` していると `Control + c` で停止することができます。
## 例外1
`php artisan serve` したターミナルを閉じてしまった方は `ps` コマンドを実行してプロセスを確認します。

“`
$ ps
“`

プロセス一覧を確認すると、以下のような表示が出ると思います
“`
PID TTY TIME CMD
“`

プロセスの「CMD」の列に 127.0.0.1:8000 と表示されている行が、ローカルサーバーを指しているはずです。この行に表示されているPIDが対象となります。

該当するPIDを見つけたら、以下のように入力してプロセスを停止します。
“`
kill -9 1234
“`
ちなみに、`-9` はプロセスを強制終了させるオプション

元記事を表示

ある日アプリが動作しないと言われたら

# 前置き
先日、自社で納品したWEBアプリを使用しているクライアントから
『今朝いきなりログインができなくなり、アプリケーションが表示できない。早急に原因を調査し解決して欲しい。』と連絡があり、対処する機会があった。

# 推測してみる
いったんrebootコマンドでサーバーを再起動してみるが動作は解消せず。
色々な原因が考えられたがその時までアプリケーションは2年近く問題なく動作していたため、格納されているオンプレミスサーバー内ディスクのメモリが何らかの原因で容量ギリギリまで使用されていたのではないかと推測し、調査した。

# 調査した

まずteratermでサーバーに接続後、以下のdf -hでサーバー内全体のディスクの容量を確認した。
“`
df -h
“`
画像はないが、何故か/varディレクトリ以下が88%使用となっており、仮説が正しそうと思い始める。次にディレクトリを移動しながらdu -sh/*でディレクトリごとの容量を確認していく。
“`
du -sh/*
“`
すると/var/spool/mail/rootディレクトリで80%以上使用しており、このディレクトリ

元記事を表示

Laravel 11.16.0 にアップグレードしてから file_put_contents() エラーが発生する

## はじめに
Laravelで開発をしていると以下のようなエラーが発生した人向けの解決策です。
“`
Notice: file_put_contents(): Write of 61 bytes failed with errno=32 Broken pipe in /Users/[redacated]/Projects/fpwr/vendor/laravel/framework/src/Illuminate/Foundation/resources/server.php on line 21
“`
## このエラーが発生した原因
私の場合、Laravelでデータベース接続の設定を行うために `.env` ファイルを編集して更新したところ、「該当するデータベースが存在しない」とエラーが表示されました。再度 `.env` を修正し、ブラウザをリロードすると表示がされるようになったものの、画面の上部に以下のエラーが表示されました。
“`
Notice: file_put_contents(): Write of 61 bytes failed with errno=32 Broke

元記事を表示

【Laravel】テストデータの登録をTraitで共通化する方法!

泉([@izumin_0401](https://twitter.com/izumin_0401))です。

今回は、Laravelでテストデータの登録を共通化する方法を解説しやす!

# ブログ記事はこちら

https://traveler0401.com/laravel-testdata-trait/

# Laravelでテストデータの登録を共通化する方法

## Traitの作成
“`php
insert([
‘hoge’ => ‘1’,
]);
}
}
“`
データを登録するTraitを作成します。

## テストデータでTraitを使う
“`php

元記事を表示

【パーティションキー】MySQLにパーティションキーを設定したら5倍クエリが早くなった件【Laravel】

# 結論
100,000件のtestsテーブルからyearカラムに対してパーティションキーを設定して比較した結果はこちら
“`php
// クエリ
DB::table(‘tests’)->where(‘year’, 2023)->get();

// パーティションを設定した結果
結果: 0.47547888755798 seconds

// パーティションを設定していない結果
結果: 2.206062078476 seconds
“`
**約5倍** は早くなりました…タイトルとおりです。

# パーティションキーとは
パーティション = 仕切り というようにデータを指定した値ごとに仕切ることで、読み込み速度が高速化されます。

2022年、2023年、2024年…ごとにデータが積まれていく場合、年カラムにパーティションキーを設定することで検索結果が早くなります。

※パーティションキーにはいくつかの種類がありますが、今回は特定の範囲に絞り込む「レンジパーティション」に絞り込んで紹介します。

# migrationファイルで設定する
Laravelの機能でパーティシ

元記事を表示

加算子/減算子は$i++,$i–だけじゃない

# 前談
転職して情シスから開発エンジニアに戻った
この前初出社を迎えました。
その時新卒の社員と話したところ、プログラムの話をしました。
いきなりプログラムの話とは、やっぱり開発エンジニアが150名以上いると違うんですかね。
僕の新卒は上司と二人だったので、ある意味プログラムとアニメとかの話しかしませんでしたねw

# 本編
新卒の社員とプログラムの話をした時にPHPリファレンスの話になり、加算子・減算子の話をしました。

“$i++と++$iって同じじゃないんですか?”
確かにプラスすることには変わらない。だが違うのだ。

違うのは加算されるタイミングなんだよ。
僕にはリファレンスお兄さんことA上司がいたから知っている。

テストコードは以下の通りです。
“`php

元記事を表示

01.PHPってなに?

## PHPって何?
PHPは、バックエンドで動くプログラミング言語です。
バックエンドとは、ざっくり説明すると、データの保存や出力といったユーザーが目に見えないところで行っている処理を行っている部分のことです。(何かのデータを保存したり、取得したデータを出力したり…)

反対に、ユーザーが目に見える部分はフロントエンドといいます。(ブログやWebサイト。いわゆる画面デザインを作っているものです。)

## PHPはどこで使われている?

WikipediaやFacebook、Slackで使用されている言語です。

## PHPが得意なこと

– Webアプリの開発
– WordPressオリジナルテーマの開発

## PHPが苦手なこと

– デスクトップアプリの開発
– スマホアプリの開発

## 勉強するにあたっての前提知識

勉強する際はHTML・CSS・JavaScriptがある程度できれば問題ないと思います。

これらの勉強はProgateや、侍テラコヤというサイトで勉強するのがおすすめです。(有料)
独学で進めていける方はProgateで、自分で進めていけるか不安という

元記事を表示

【Laravel】development環境で問題ないアプリがproduction環境で全く動かない事象に遭遇した

### ことの始まり
ポートフォリオMATRIXFLOWを作成している最中に事は起こりました。

※ MATRIXFLOWについてはこちらをご覧ください↓

https://qiita.com/maixhashi/items/5da649e290ec13e71465

一度、production環境(Heroku)にデプロイして問題ないことを確認したポートフォリオが機能追加後に再度pushすると画面真っ白になり何も動かず。

### ことの詳細
次のような流れでした。
– ① [担当者(Membersモデルレコード)追加機能](https://qiita.com/maixhashi/items/5da649e290ec13e71465#%E6%8B%85%E5%BD%93%E8%80%85%E3%81%AE%E8%BF%BD%E5%8A%A0)の実装
– ② [フローステップ(FlowStepモデルレコード)追加機能](https://qiita.com/maixhashi/items/5da649e290ec13e71465#%E3%83%95%E3%83%AD%E3%83%B

元記事を表示

【Laravel × React】業務フローを明瞭に!ポートフォリオMATRIXFLOWを作成しました

### はじめに
初めまして、はしと申します。
現在、とあるスタートアップのバックオフィス部署で働いており、
バックエンドエンジニアを志して転職活動中です。

この度、ポートフォリオ「[MATRIXFLOW](https://matrixflow-d2987557bad9.herokuapp.com/)」をリリースしましたので、投稿いたします!

https://matrixflow-d2987557bad9.herokuapp.com/

バックオフィス部署で働いていてきた経験から、
いわゆる「バックオフィス部署のつらみ」に着目してこのポートフォリオを作成いたしました。

#### バックオフィスのつらみ??
私のバックオフィス部署で経験したつらみは
「いざ上場準備!📢」「いざシステム導入!📢」「いざ業務改善!📢」という様々なフェーズ
に関わる際に「今の業務フローって結局どうなっているんだっけ?🤔」となるシーンです。

このとき困るのが業務フローを変更・改善を加えたことによって
現状の業務フローが不明瞭になったり、再度整理する必要が出てくるため
定常業務に加えて、業務フローの整理もし

元記事を表示

Composer.phar で GitHub の Repository を require したい

# やりたいこと
以下のように GitHub の Repository を composer で使いたい
“`bash
./composer.phar r github/repository
“`

# どうすれば
`composer.json` を編集すればいけた
“`composer.json
{

“repository”: [
// ここから
{
“type”: “git”,
“url”: “git@github.com:github/repository.git”
}
// ここまでを追加
],

}
“`

:::note info
編集後、実行時に Token を求められたら GitHub の Developer Settings から Generate Token しましょう
:::

# 参考
https://qiita.com/mokemokechicken/items/d3a3944bfa999c2582b7

コマンドでのやり方もある↓

https://qiita.c

元記事を表示

FuelPHPの例外エイリアスがキャッチできない理由を探る

以下に清書した記事をお送りします。

## FuelPHPのAutoloaderとエイリアスの例外キャッチに関する検証

FuelPHPでエイリアスによる例外キャッチの動作について気になる点があったため、検証を行いました。弊社ではFuelPHPフレームワークを使用しており、404エラーなどに`HttpNotFoundException`を利用しています。この例外は`Fuel\Core\HttpNotFoundException`のエイリアスとして定義されているはずですが、`Fuel\Core\HttpNotFoundException`を投げた場合に`HttpNotFoundException`でキャッチできないケースが発生しました。これを踏まえ、具体的に調査を行いました。

### 検証環境

本検証はPHP8.0の環境で実施しました。

“`bash
$ php -v
PHP 8.0.30 (cli) (built: Apr 10 2024 07:34:47) ( NTS gcc x86_64 )
“`

### 検証内容

エイリアスとオリジナルの例外がどのようにキ

元記事を表示

PHPのエイリアスと例外処理の関係を検証してみた

## PHPのエイリアスと例外の関係について

PHPでエイリアスを利用する際、エイリアス元と同じように例外をキャッチできるかどうか気になったので、実際に検証してみました。今回の検証はPHP 8.0を前提に行っています。

### 環境情報

“`bash
$ php -v
PHP 8.0.30 (cli) (built: Apr 10 2024 07:34:47) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
“`

### サンプルコード

次のコードで、エイリアスと例外の関係を検証します。

“`php

元記事を表示

【PHP】無名関数について

# 初めに
前略、無名関数についてよく分かっていなかったので調べました。

# 参考
公式ドキュメント

https://www.php.net/manual/ja/class.closure.php

# 無名関数とは
無名関数とは、関数名を指定せずに関数を作ることができる機能です。
作った関数は変数に代入したり、コールバック関数として使うことができます。

“`php: 無名関数の例
// $testに無名関数を代入
$test = function() {
echo “Hello PHP!”;
};

// 代入した無名関数を呼び出す
$test(); // Hello PHP!
“`

# 無名関数を試してみる
ということで、いろいろ試してみます。

## 引数の渡し方
無名関数で使う値を引数の渡し方は2種類あります。

### 1. 変数を引数で値を渡す
無名関数の呼び出し時に引数を渡す方法です。
動的な値の受け渡しに適しています。
“`php: 無名関数呼び出し時、通常の引数を渡すことができる
// 引数を渡すことができる
$test = function

元記事を表示

Laravelのchunkメソッドで全レコードが更新されなかった話

:::note
## 概要
chunkは一度にクエリの結果の小さな塊(チャンク)を取得し、各チャンクをクロージャーに送り込んで処理します。
注意点としてはチャンクのクロージャー内でレコードの更新や削除を行う場合、主キーや外部キーの変更がチャンクのクエリ結果に影響する可能性があります。
:::

# chunkとは 💡

[公式 doc](https://laravel.com/docs/11.x/queries#chunking-results)

chunkメソッドは、一度にクエリの結果の小さな塊(チャンク)を取得し、各チャンクをクロージャーに送り込んで処理します。
何千ものデータベース・レコードを扱う必要がある場合に有効です。

例)usersテーブル全体を一度に100レコードのチャンクで取得
“`php
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

DB::table(‘users’)->orderBy(‘id’)->chunk(100, function (Collection

元記事を表示

PHPで三角関数を計算する(度数法、弧度法)

PHPで三角関数の正弦、余弦、正接を計算するにはsin(), cos(), tan()関数を用います。
この際に指定する角度は弧度法(ラジアン)となっています。
度数法で表現された角度をラジアンに変換するためには、deg2rad()関数を用います。

たとえば、度数法で30°の正弦、余弦、正接を表示するスクリプトは以下のようになります。

“`php
$degree = 30; //度数法による角度
$radian = deg2rad($degree); //弧度法による角度
print sin($radian) . “\n”; //0.5
print cos($radian) . “\n”; //0.86602540378444
print tan($radian) . “\n”; //0.57735026918963
“`

参考:
PHP: sin – Manual https://www.php.net/manual/ja/function.sin.php
PHP: cos – Manual https://www.php.net/manual/ja/function.co

元記事を表示

【PHP】スーパーグローバル変数$_SERVER

## $_SERVERとは

$_SERVERとは、**PHPの定義済み変数のひとつ**で、PHPが稼働しているWebサーバーが生成するヘッダ情報、パス情報、スクリプトの位置のような情報を提供する連想配列となっています。

つまり、**HTTPサーバーやHTTP通信に関わる情報を取得したい場合に$_SERVERを使用します**。

## $_SERVER変数一覧

+ **$_SERVER[‘PHP_SELF’]**
現在実行しているスクリプトのファイル名です。ドキュメントルートから取得。
例) inquiry/input.php

+ **$_SERVER[‘GATEWAY_INTERFACE’]**
サーバーが使用しているCGIのバージョンを取得。
例) CGI/1.1
※CGIとは、クライアント側のWebブラウザの要求に応じてWebサーバが外部プログラムを呼び出して、その実行結果がHTTPを介してクライアントのWebブラウザに送信される仕組み

+ **$_SERVER[‘SERVER_ADDR’]**
現在のスクリプトが実行されて

元記事を表示

Laravelでsqlの特訓をする

:::note
以下の記述を比較できるようまとめました
– 素のsql
– Eloquentモデル
– クエリビルダ
:::

# 背景
SQLが苦手です。業務でLaravelを使っているのでLaravelを通して特訓したいと思います。

以下のリポジトリで特訓します。

https://github.com/yamatai12/laravel-sql

# テーブルのER図

“`mermaid
erDiagram
employees {
INT id PK “従業員ID(主キー)”
VARCHAR(50) name “名前”
VARCHAR(50) position “役職”
INT department_id FK “部門ID(外部キー)”
}

departments {
INT id PK “部門ID(主キー)”
VARCHAR(50) department_name “部門名”
}

projects {
INT id P

元記事を表示

Rocky Linux 9にPHP 8.3をRemi Repositoryからインストールする

# What’s?

以前、CentOS 8向けにこういう記事を書きました。

https://qiita.com/charon/items/5727966a98609a0b71ed

これからCentOSからAlmaLinuxやRocky Linuxを使うようになったので、あらためて書いておこうかなということで。

# Remi Repositoryについて

Remi Repository自体については、こちらを参照。

https://qiita.com/charon/items/6d34ae798e9b05e8bd0a

[Which are the goals of this repository?](https://blog.remirepo.net/pages/English-FAQ#goal)

# Remi RepositoryからのPHPのインストール方法

Remi RepositoryからのPHPのインストール方法は、このあたりを参考に。

https://blog.remirepo.net/post/2024/05/17/Install-PHP-8.3-on-

元記事を表示

Sunoのプロンプトが200文字までなので、DeepL API & 文字数カウンターを作ってみた

## はじめに

**DeepL API & 文字数カウンター**
https://gist.github.com/sarap422/b2c0fdff98b14197cc7fd41541b5cf34

Sunoのプロンプトは200文字までという制限があります。長文を分割するのは手間がかかるので、文字数をカウントしながら翻訳できるツールを作ってみました。DeepL API Freeを使用することで、月50万文字まで無料で高精度な翻訳が利用できます。

## DeepL API Freeの特徴

– 月間50万文字まで無料
– 高精度な機械翻訳
– シンプルなAPI
– 多言語対応(28言語以上)
– セキュアな通信(HTTPS必須)

## 実装手順

### 1. DeepL API Freeのアカウント作成

1. [DeepL API Free](https://www.deepl.com/pro#developer)にアクセス
2. アカウントを作成
3. APIキーを取得(形式: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:fx`)

### 2

元記事を表示

OTHERカテゴリの最新記事