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

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

生成AI(OpenAI)を用いたLaravelアプリケーションの開発

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はLaravelでOpenAIのAPIを活用する方法について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
Laravelは強力なPHPフレームワークであり、豊富な機能と柔軟性を備えています。生成AI(例:OpenAIのGPT-4)を組み合わせることで、さらに高度な機能を実装し、アプリケーションの価値を高めることができます。本記事では、生成AIを活用してLaravelアプリケーションの機能を拡張する方法について解説します。

# 生成AIとは?
生成AI(Generative AI)は、人工知能の一種であり、新しいデータやコンテンツを生成する能力を持っています。OpenAIのGPT-4などのモデルは、テキストの生成、翻訳、要約など多様なタスクをこなすことができます。

# Laravelと生成AIの連携方法
Laravelと生成AIを連携させるためには、以下の手順を踏むことが一般的です。

元記事を表示

Laravelでのファイル操作:基本から応用まで

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はLaravelでのファイル操作について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
ファイル操作はWebアプリケーションにおいて非常に重要な役割を果たします。Laravelは、ファイル操作を簡単かつ効率的に行うための豊富な機能を提供しています。本記事では、Laravelを使用してファイル操作を行うための基本から応用までを解説します。

# ファイル操作の基本
Laravelでは、Storageファサードを使用してファイル操作を簡単に行うことができます。基本的なファイル操作を見ていきましょう。

“` php
use Illuminate\Support\Facades\Storage;

// ファイルの存在チェック
if (Storage::exists(‘file.txt’)) {
echo ‘File exists.’;
}

// ファイルの取得
$contents

元記事を表示

LaravelとWebSocket:リアルタイムアプリケーションの作成

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はLaravelとWebSocketについて記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
リアルタイム通信を実現するための技術としてWebSocketがあります。WebSocketは、クライアントとサーバー間で双方向の通信を可能にし、HTTPプロトコルよりも効率的にリアルタイムデータの送受信を行えます。この記事では、LaravelとWebSocketを使用してリアルタイムアプリケーションを構築する方法をステップバイステップで説明します。

# 環境設定
まず、Laravelプロジェクトを作成し、必要なパッケージをインストールします。

“` bash
composer create-project –prefer-dist laravel/laravel websocket-app
cd websocket-app
composer require beyondcode/larave

元記事を表示

Laravelのジョブとキューを使った非同期処理の実装方法

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はLaravelのジョブとキューを使った非同期処理の実装について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
Laravelはジョブとキューを利用することで、非同期処理を簡単に実装することができます。このガイドでは、ジョブとキューの基本的な概念から、具体的な実装方法、そして実際のサンプルコードまでを紹介します。

# ジョブとキューの概要
ジョブとキューは、バックグラウンドで実行する処理を管理するための仕組みです。ジョブは特定のタスクを定義するクラスであり、キューはこれらのジョブを順次実行するための仕組みです。

# ジョブ (Job): 実行するタスクを定義するクラス。
キュー (Queue): ジョブを管理し、バックグラウンドで実行するためのシステム。
非同期処理を利用することで、ウェブアプリケーションのレスポンスを高速化し、ユーザー体験を向上させることができます。

# Lara

元記事を表示

LaravelのEloquent ORM:リレーションシップとクエリについて

## はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はLaravelのEloquent ORMについて記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

## 概要
LaravelのEloquent ORM(Object-Relational Mapping)は、データベースとのやり取りをシンプルかつ直感的に行うための強力なツールです。本記事では、Eloquent ORMを使用したデータベースリレーションシップの管理方法と、クエリの書き方について解説します。リレーションシップの定義方法、クエリの基本、そして実践的なサンプルコードを紹介します。

## Eloquentのリレーションシップの基本
Eloquent ORMでは、リレーションシップを簡単に定義し、使用することができます。リレーションシップを定義することで、関連するデータをシンプルに取得でき、クエリを効率的に行うことができます。

## リレーションシップの種類
## One-to-One
O

元記事を表示

VercelでLaravel10をデプロイしてVercel Strage(DB)を繋ぐ

# はじめに
こちらの記事を拝見して、Vercelいいじゃん!って思って自分でもやろうとしたけどめちゃくちゃ詰まって、radditや海外の記事、果てはNeonの公式Discordまで色々探してどうにかうまくいったので備忘録としてまとめておきます。

https://qiita.com/Masanarea_qiita/items/2e1616e4e18f6c8ee26d#%E3%81%8A%E3%81%BE%E3%81%91

# 対象者
– なるべくGUIベースでわかりやすく行きたい人
– 従量課金が怖い人

# Vercelのいいとこ
– hobbyプランなら従量課金もなく完全無料(個人的かつ非営利な目的に限る)
– SSLの自動設定
– PostgresDBが無料で1つ使える
– gitのリポジトリと連携して自動デプロイ

CI/CDがブラックボックス化していますが、シンプルでわかりやすく、SQLサーバーを別に用意しなくてもいいという点でとても楽だなと思います。

# 導入方法
Laravelのプロジェクトと、それを管理するリポジトリはあるものとします

### 1. パッケージ導

元記事を表示

マイグレーション実行時のメモリ不足エラー

# はじめに
実務で遭遇したので今後の備忘録として書きます。

# バージョン

– PHP: 8.2
– Laravel: 11
– MySQL: 8.3

# 経緯

DBマイグレーションを実行したときに下記エラーが発生しました。

“` console
$php artisan migrate
PHP Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 12288 bytes) in …
“`

# 原因と対策

調べてみると、phpのメモリ制限をオーバーしかけたとのことでした。
php.ini内のmemory_limitの値(デフォルトは128M)を変更すると解決できます。
memory_limitについて:https://www.php.net/manual/ja/ini.core.php#ini.sect.resource-limits

“` php.ini
memory_limit=128M → -1(無制限)に変更
“`

“`

元記事を表示

【PHP】今更聞けない文と式についての基礎の基礎

# 【PHP】今更聞けない文と式についての基礎の基礎

## 目次

– [【PHP】今更聞けない文と式についての基礎の基礎](#php今更聞けない文と式についての基礎の基礎)
– [きっかけ](#きっかけ)
– [目次](#目次)
– [文(statement)](#文statement)
– [PHPのコードは文の集まりである](#phpのコードは文の集まりである)
– [リテラル(literal)と変数(variable)](#リテラルliteralと変数variable)
– [変数(variable)](#変数variable)
– [リテラル(literal)](#リテラルliteral)
– [普通のリテラルの例](#普通のリテラルの例)
– [ちょっと難しいリテラル](#ちょっと難しいリテラル)
– [式(expression)](#式expression)
– [PHPは式だらけの言語](#phpは式だらけの言語)
– [式の値](#式の値)
– [リテラル、変数と式の関係](

元記事を表示

【速習】LaravelとPHPブートキャンプ Part3 – QuickNetwork開発部

### 通知とイベント

新しいChirpが作成されたときにメール通知を送信して、Chirperを次のレベルに引き上げましょう。

“`
php artisan make:notification NewChirp
“`

メール送信のサポートに加え、Laravelは、メール、SMS、Slackを含む様々な配信チャネルでの通知送信をサポートしています。さらに、コミュニティが構築した様々な通知チャネルが作成されており、数十の異なるチャネルで通知を送信することができます!通知はデータベースに保存され、Webインターフェースに表示されます。

### 通知の作成

Artisanが用意した以下のコマンドで、通知に関するすべての大変な作業を実行してくれます。

`php artisan make:notification NewChirp`

これで、app/Notifications/NewChirp.phpに新しいnotificationが作成され、カスタマイズできるようになります。

NewChirpクラスを開き、作成されたばかりのChirpを受け取れるようにし、メッセージをカスタマ

元記事を表示

【速習】LaravelとPHPブートキャンプ Part2 – QuickNetwork開発部

### Artisan Tinker

Laravelアプリケーションで任意のPHPコードを実行できるREPL(Read-eval-print loop)、Artisan Tinkerについて学ぶ絶好の機会です。

コンソールで、新しいTinkerセッションを開始します。
“`
$ php artisan tinker
“`

次にデータベースのChirpを見るための次のコードを実行しましょう。先ほどフォームから入力したメッセージが追加されているはずです。

“`
App\Models\Chirp::all();
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821455/76916019-28ba-9cc4-d52d-a7882ccadd35.png)

exitコマンドもしくはquitコマンド、Ctrl+CでTinkerを抜けることができます。

## Chirpsを表示

前のステップでは、Chirpを作成する機能を追加しました!

### Chirpを取得する

元記事を表示

Zabbix Server 6.2.9のWebコンソールセットアップ時に、PHPのエラー(AH01071)「Trying to access array offset on value of type null in ~~/CCookieSession.php」が発生

## はじめに

自宅PCのVirtual BoxにOracle Linux 8.10を構築したのち、
下記のサイトを参考にZabbix Server 6.2.9をインストールしました。

– [【ZABBIX】Oracle Linux 8 へ ZABBIX6.2 をインストールする](https://www.startpassion.life/entry/2022/09/04/231501)
– [監視ツール「zabbix-6-4」を構築してみました!](https://ひとりでできるもん.com/2023/12/26/%E7%9B%A3%E8%A6%96%E3%83%84%E3%83%BC%E3%83%AB%E3%80%8Czabbix-6-4%E3%80%8D%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%81/?cn-reloaded=1)

そして、ブラウザからWebコンソールをセットアップしようとしたのですが、
表題のエラーが発生し解決まで結構時間

元記事を表示

【Laravel】ajaxで非同期処理

## やりたいこと
Laravelで作成した記事投稿アプリなどにおいて、ユーザーが記事をいいねした際に画面遷移や更新などの同期処理ではなく非同期で反映させたい(ユーザーが一つの記事対していいねできるのは一回までにする)

## Table
likesテーブルのmigration
likeがuserとarticleに紐付き、user,articleとlikesが一対多の関係
“`php
class CreateLikesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘likes’, function (Blueprint $table) {
$table->increments(‘id’);
$table->integer(‘user_id’)->foreign(‘user_id’)->r

元記事を表示

【PHPUnit】PHP のテストファイルを一括で全部実行したい

# はじめに
PHP でテストファイルを複数作って、それを一つずつ実行するのがめんどくさかったので、テストファイルを一括で実行できるクラスのメモ。
IntelliJ で実行する前提なので、実行ファイルはないです。
パスの指定は各々気をつけましょう。

# 継承したクラスのメソッドを全部実行

メソッド実行なのでテスト結果が 1 つにまとめられてしまう。
テストじゃなくて別の使い方とかで応用できそうだなとか思ったり。

“`php

元記事を表示

[Laravel 11]Artisanコマンドをカスタムしてしまおう[tips]

## はじめに
こんばんは、ゆきおです。
なんとなく思い付きでArtisanコマンドを作ってみたくなりました。
LaravelといえばADR(Action,Domain,Responder)というアーキテクチャが有名です(多分
コントローラー層を3つに分割したやつですね。
なので「make:controller」ならぬ「make:adr」を作ります。

今回は前回の記事の環境をそのまま使っちゃうのでSailコマンドになっています。
バージョンはデフォルトのLaravel11で作りました。
いかんせんLaravelが久しぶりでうろ覚えの中GPTで作ったので足りない部分もあるかもしれませんが参考までにどぞ。

## コマンドを作成する
Artisanコマンドを作成するにはArtisanコマンドを作成するためのArtisanコマンドを入力します(?)
“`php
sail artisan make:command MakeADR
“`
これだけでConsole/Commands/にファイルが生成されます。
ので、そこにコマンドの中身を実装します。

“`php

元記事を表示

【AWS初学者向け】EC2にアプリケーションをデプロイ

# はじめに
こんにちは、東京でバックエンドエンジニアやってるoonoです。
今回は**AWSのEC2上にアプリケーションをデプロイしてみたい**方向けに
記事を書いていこうと思います。

記述内容に誤りがございましたらご教示いただけますと幸いです。

# 前提知識
本記事は以下のような方を想定しています。
* ローカルで作成したアプリをサーバーにデプロイして公開したい方
* AWSのサーバー(EC2)へのデプロイを行なったことが無い方
* LaravelのCRUD基本知識が身についている方(本記事はLaravelを例に扱ってます)
* Linuxの基礎的なコマンド(cd,ls,mkdirなど)を理解している方
* githubを扱ったことがある方

# 本記事にて扱わない技術
本記事はAWSを扱うのが初めての方に向けての内容となります。
極力シンプルな内容にするため以下のような技術は割愛させていただきます。
* Docker
* docker-compose
* ECS
など、実務レベルに近いアプリのデプロイや運用に関する技術

# EC2とは?
では早速Laravelアプリケーショ

元記事を表示

【PHP備忘録】 WordPress関数:”Undefined function”エラー対処法

## 最初に
私はWordPressを使って既存の静的サイトを動的サイトに改修する学習をしていました。
その過程で遭遇したエラーについて、対処法を備忘録として残したいと思います。

## ツール・言語
ツール:VSCode(拡張機能”intelephense”)
環境:Local
言語:PHP

## 事象
WordPress標準関数`wp_head()` を入力後、以下のエラーが表示されました。
※`wp_head()` ⇒HTMLのheaderを部品化する関数

▼エラー
“`
Undefined function ‘wp_head’.intelephense(P1010)
“`

▼意味

`wp_head()` は未定義の関数

## 調べた結果
**”PHP拡張機能”intelephense”はWordPressオリジナル関数をサポートしていない。”**
”intelephense”はコード補完やエラーチェックなどをしてくれるPHP拡張機能。
”intelephense”の初期設定では、WordPress関数をサポートしていないとの事。それが原因でエラーチェックに引っ掛か

元記事を表示

Laravel Eloquentのupdateの挙動がどうもうまくいかない

# 概要
Laravel Eloquentにおいて、updateの結果をレスポンスとして返すような状況も想定される(特にAPI)と思われるが、
**どうもうまくいかなかった**ので備忘録的に残してる記事である。

# 前提知識
## whereとfindでのupdateにおける返り値の違い

※ こちらの記事大変参考になりました。ありがとうございます!

# 起こった事
– `find($id)->update($values)`
– 更新成否が不明
– 更新失敗でもつねに返り値trueが返る
– `where([‘id’ => $id])->update($values)`
– 不正なカラムでupdateすると、find()だとtrueを返すのに対し、where()はしっかりエラーを返す。
– しかし、**更新前と同じデータや空の情報で更新処理を行った場合**、実際のデータは更新されないが、更新成功判定(return 1)は出て

元記事を表示

一体全体、PHPで配列をどう扱えばいいのか?(配列を扱うニッチなスキルを含む)

# はじめに

## phpの配列の特徴

phpでは、配列とは一つのタイプで、`[1,2,3,4,5]`と`[‘a’ => 1, ‘b’ => 2, ‘c’ => 3, ‘d’ => 4, ‘e’ => 5]`の二つの方式を使用できます。最初のはインデックス付き配列で、2番目は連想配列と呼ばれます。

静的型付け言語では、インデックス付き配列はキーが存在しません。メモリ上の特定の位置にデータを一定のバイト間隔で順次に読み込みます。あるインデックスの値にアクセスする際には、1つの要素が持つバイト数分だけ「インデックス番号 x 1つの要素が占めるバイト数」を飛び越える方式で処理するため、非常に高速です。

phpのインデクシング配列は連想配列と内部処理は同じように処理されます。というのは、`[1,2,3,4,5]`が`[0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5]`と同じであるためです。インデックス付き配列として作成しても、結局phpではすべて連想配列として処理されます。

phpの配列はインデックス付き配列でも連想配列でも、内部的にはハッシュテーブルを

元記事を表示

PHPでデータベース操作の基本

はじめに

基本的なデータベース操作(select, insert ,delete)についてまとめました。

データベース接続

PHPからデータベース(MySQL)を操作するために、まずデータベースに対して接続を確立させます。

“`php:db.php
$usr = ‘user’; // 接続ユーザー名
$pw = ‘password’; // 接続時のパスワード
$dsn = ‘mysql:host=localhost; dbname=test; charset=utf8’;

$pdo = new PDO($dsn, $usr, $pw);
“`
①$dsnはデータベース接続文字列で、データベースに接続するための情報(ホスト名やデータベース名など)をまとめたものです。
※接続先のデータベースによって異なるので注意。今回はMySQL

②PDOクラスをインスタンス化します。

SELECT

データベース接続ができたら、テーブルからデータを取得していきます。
今回取得元のテーブルはこんな感じ

元記事を表示

PHPのセッションを安全に破棄する方法(超個人用覚書)

#### 最初に結論のスクリプト
※あくまでも個人用覚書。環境によっては条件やパラメータ等を追加したほうがよい(解説参照)。
“`deleteSession.php

元記事を表示

OTHERカテゴリの最新記事