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

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

PHP8.1 Enums 導入

PHP8.1のEnum導入方法を学習の為、アウトプットします
# 導入の経緯
今までプロジェクトではBenSampo/laravel-enumを使用してましたが、PHP8.1でEnumsが実装され、BenSampo/laravel-enumのリポジトリで

:::note info
「Using this library is no longer recommended, especially for new projects. PHP 8.1 supports enums natively.」
このライブラリの使用は、特に新しいプロジェクトでは推奨されなくなりました。PHP 8.1 は enum をネイティブにサポートします。
:::
と書かれていた為、PHP8.1のEnumsを導入することにしました
# 導入方法
enum と宣言して列挙型を宣言する
case を使って列挙する
~~~Fruit.php

元記事を表示

#57 isset() vs empty() What’s the differences?

# isset() vs empty() What’s the differences?

While start learning PHP, there are always some points which is confusing. Today I would like to make a simple note to descript the differences between `isset()`, `empty()`, `if()`

## What is isset()?

>Determine if a variable is declared and is different than null

Simply saying it checks whether a variable is set and NOT equal to `NULL`

## What is empty()?

>Determine whether a variable is empty

All the variables including ` `, `0`,`false` and `

元記事を表示

テスト済みで実証済み!生産性を向上させる6つのツール!

## 情報管理

### [Document360](https://document360.com/)
**概要**: Document360は、ドキュメントの保存、共有、編集、ディスカッションを統合したチームコラボレーションおよびナレッジ管理プラットフォームです。

![画像説明](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52n6i52dor5zycd5stq0.png)

**特徴**:

– 複数ユーザーによるリアルタイム編集とディスカッションをサポート。
– 強力な検索および分析機能により、ユーザーは必要な知識や情報を迅速に見つけることができます。

### [ChatGPT](https://openai.com/)
**概要**: ChatGPTは、OpenAIによって開発されたAIチャットボットで、強力な自然言語処理機能を備えています。これ以上の紹介は不要でしょう。

![画像説明](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/

元記事を表示

【PHP】nullの扱い方

nullに対する四則演算や型変換を実行すると0に変換されてしまうケースがあり、条件分岐などが想定通りにならない場合がある。
その場合にどうすればよいか、もしくはnullをどのように扱えばうまくいったかを書いていく。
# nullどうしの加算、減算、乗算
“`php
$plus = null + null;
$minus = null – null;
$multiply = null * null;
“`
“`php
// nullにはならず、全て数値型の0に変換される
int(0)
int(0)
int(0)
“`

# nullどうしの除算
“`php
$division = null / null;
“`
“`php
// エラーが発生
PHP Fatal error: Uncaught DivisionByZeroError: Division by zero in XXX
Stack trace:
#0 {main}
thrown in XXX
“`
# nullと数値の四則演算
“`php
$plusOne = null + 1;

元記事を表示

Laravel2024年Laravel開発者に必須のツールトップ10

Laravelは、その優雅な構文と強力なエコシステムにより、PHPフレームワークの中で際立っています。経験豊富な開発者でも新参者でも、適切な開発ツールを選択することは、生産性を向上させ、ワークフローを効率化し、高品質なWebアプリケーションを構築する上で重要です。2024年に向けて、Laravel開発者がその開発の旅を高めるために考慮すべき10の必須ツールを紹介します。
![20240918152752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878716/19a0f467-14c2-0684-527f-82845cc845a3.png)

### 1.**[Laravel Forge](https://forge.laravel.com/)**
Laravelの公式デプロイメントツールであるLaravel Forgeは、サーバー設定を簡素化し、デプロイメントを効率的かつシームレスにします。DigitalOcean、AWS、Linodeのいずれを選んでも、Forgeはすべてを処理し、サーバー管理

元記事を表示

Fuel\Core\PhpErrorException [ Fatal Error ]: The configured locale(s) “en_US” can not be found on your system.

Fuel\Core\PhpErrorException [ Fatal Error ]:
The configured locale(s) “en_US” can not be found on your system.

fuelPHPを設置する段階でもうローカルで開くことさえできないエラーが出されます。
(vscode, xampp使用)

「http://localhost/[プロジェクトフォルダ名]/public/」 
を開こうとしたらエラーが出ます。

対処法です。

fuel/app/config/config.php をひらきます。

そこから「language」を検索します。

/**
* The default language.
*/

// ‘language’ => ‘en’,

/**
* Fallback language when file isn’t available for default language.
*/

// ‘language_fallback’ => ‘en’,

/**
* PHP set_

元記事を表示

【AWS】EC2 インスタンス上で GitHub からクローンした PHP アプリを動かす

# はじめに
この記事では、EC2 インスタンス上で GitHub からクローンした PHP アプリを動かす方法を記載します。

# 開発環境
開発環境は以下の通りです。

– Apache 2.4.62
– PHP 8.3.7
– Git 2.40.1

# 事前準備
以下の2点を事前準備しておきます。

## PHP アプリの作成
以下のファイルを持つ PHP アプリを GitHub 上に作成します。

“`index.php




PHP Samples

PHP Samples

Hello PHP!




“`

“`clock.php

“`

## EC2 インスタン

元記事を表示

複数行を一括でINSERTする

今日から始める `PHP(主にCodeIgniter3) + MySQL` のメモ書き。

もっと早く始めていれば良かったと反省。

## INSERTの効率化

まず初めに、1件ずつINSERTするのはパフォーマンスが良くありません。
このことは一般的な知識として知っておいた方が良いです。
[MySQLのINSERTの効率化](https://qiita.com/jkr_2255/items/12081b3c066d371516f5)

## CodeIgniterでは?

[insert_batch()](https://codeigniter.jp/user_guide/3/database/query_builder.html#CI_DB_query_builder::insert_batch)を使用する。
注意点などは下記の投稿を参考に。
[CodeIgniterでinsert_batchする場合のポイント](https://qiita.com/jkr_2255/items/8ef8372969da0f574fa4)

## 大量データを処理する場合

INSERTクエリは

元記事を表示

「CakePHP超入門」を読んで詰まったところ

## はじめに
2018年発行の[「CakePHP超入門」](https://www.shuwasystem.co.jp/author/a180749.html)を2024年8月に勉強しました。この時、最新バージョンに対応しておらず、何箇所か詰まりました。これは、その時のメモです。お役に立てれば良いと思います。
なお、[CakePHP書籍の「CakePHP 超入門」で詰まったところ](https://zenn.dev/yyykms123/articles/2019-04-09-cakephp-trouble
)を参考にしました。正直言って、こちらのページの方が役に立つと思います。

# 使用環境
+ MacBook Air(M1 2020)
+ macOS 14.6.1
+ MAMP Version 6.9
+ PHP 7.4.33
+ MySQL Version 5.7.39
+ CakePHP Version 3.10.5

## 準備
書籍では[XAMPP](https://www.apachefriends.org/jp/index.html)が使用されていますが、M1チップに

元記事を表示

PHPでSQL文を書いて実行するとなんかエラーが出ていた話

## はじめに
前にPHPでSQL文を変数に代入して実行しようとしていると、SQL文はあっているはずなのになぜか“`HTTP ERROR 500“`が返ってきていました。

##### 原因のコード
“`php:PHP
$sql = “INSERT INTO sample_table (id,name,age,birthday) VALUES ({$_POST[‘id’]},”{$_POST[‘name’]}”,{$_POST[‘age’]},”{$_POST[‘birthday’]}”)”;
“`

## 原因
原因はおそらく、“`”{$_POST[‘name’]}”“`のダブルクォーテーションがあることで、この時点で変数の値が終了しているという判定になったからだと考えられます。

## 解決方法
“`”{$_POST[‘name’]}”“`や、“`”{$_POST[‘birthday’]}”“`のダブルクォーテーションをシングルクォーテーションに置き換えることで解決しました。

“`PHP:PHP
$sql = “INSERT INTO samp

元記事を表示

PostgreSQLにPHPで通信してみた

## はじめに
インターンで環境構築したサーバーを使ってデータベースと通信する機会がありました。PostgreSQLを用いてデータベースを作成する作業は以前[記事](https://qiita.com/akito-0520/items/041ec30f01128ad0b3e3 “PostgreSQLを使ってみた”)にまとめたので、この記事ではその先の実際に通信する作業をまとめたいとおもいます。
 初めての経験だったので無駄なことやおかしなことを言っているかもしれませんがもしあった場合はコメント欄で優しく指摘していただけると幸いです。

### 実行環境
– OS: AlmaLinux 8.10
– PostgreSQL: 12.20
– PHP 8.0.30

## 実際に使ってみる
前回でPostgreSQPにデータベースを作成することはできたので今回はPHPに入りたいと思います
まずはrootディレクトリから“`/var/www/html/“`ディレクトリにPHPファイルを作成します。“`cd“`コマンドを使用して“`html“`ディレクトリに移動して、今回は“`te

元記事を表示

Laravelプロジェクトでの写真圧縮 — Intervention Imageライブラリの使い方に関する備忘録

### 概要

Laravelでの写真アップロード機能において、画像の圧縮はストレージの節約とパフォーマンス向上に重要です。この記事では、PHP用の画像操作ライブラリ「Intervention Image」の使い方について、私が開発中に経験した内容を備忘録としてまとめます。今回は、PHPのバージョンの関係で最新バージョン3ではなく、2.7を使った具体的な実装例を紹介します。

### 1. Intervention Imageライブラリとは?

Intervention Imageは、PHPで画像操作を簡単に行えるライブラリです。このライブラリを使用することで、画像のリサイズやトリミング、フィルターの適用など、様々な画像操作が可能になります。今回のプロジェクトでは、特に画像の圧縮とリサイズに焦点を当てて使用しました。

– **使用したバージョン**: `intervention/image` バージョン `2.7`
– 最新バージョンではなく、PHPの互換性(PHP 8.2がサポートされていない)と他の依存関係のため、バージョン `2.7` を選択しました。

### 2.

元記事を表示

サーバーのOSと開発環境でのフレームワーク等のバージョニングに関する備忘録

### 概要

サーバーのOSや開発環境で使用するフレームワークやライブラリのバージョン管理は、プロジェクトの安定性と互換性を保つために非常に重要です。今回の開発では、AWSのAmazon Linux 2を使用しており、PHP 8.2をインストールできない問題や、使用するライブラリのバージョン制限に直面しました。この記事では、こうしたバージョニングに関する注意点について備忘録としてまとめます。

### 1. 開発環境とサーバー環境のバージョン管理の重要性

開発環境とサーバー環境で異なるバージョンのOSやフレームワークを使用すると、依存関係の問題や互換性の問題が発生する可能性があります。特に、以下の点に注意が必要です:

– **PHPやNode.jsのバージョンの互換性**
– **使用するライブラリやフレームワークのサポート状況**
– **OSバージョンに依存するパッケージのインストール可否**

### 2. Amazon Linux 2とPHPのバージョン互換性問題

今回のプロジェクトでは、AWSのAmazon Linux 2を使用していましたが、PHP 8.2のインスト

元記事を表示

LaravelとLivewireでの日報管理システム開発に関する備忘録

### 概要

日報管理システムの開発では、リアルタイムなユーザーインターフェースを提供することが求められました。LaravelのLivewireを使用することで、フロントエンドとバックエンドのコードを統合し、効率的な開発が可能になりました。ここでは、開発中に学んだポイントを備忘録としてまとめます。

### 1. Livewireを使ったリアルタイムなUIの実現

Livewireを使うことで、ページのリロードを必要とせずにリアルタイムでデータを更新できます。以下は、私が日報作成画面で使用したLivewireコンポーネントの一部です。

“`php
namespace App\Livewire;

use Livewire\Component;
use App\Models\DailyReport;
use App\Models\User;
use App\Models\Scheduled;

class DailyReportForm extends Component
{
public $reportDate;
public $userId;
publi

元記事を表示

初心者向けLaravel入門ガイド:基礎から学ぶMVCとデータベース操作

## **1. はじめに**

### **Laravelの概要と本記事の目的**

LaravelはPHPで構築されたフレームワークで、開発の効率を高めるための豊富な機能とシンプルな構造を提供します。本記事では、Laravelの基本構成について学びながら、簡単なToDoアプリを具体例としてその理解を深めます。

### **Laravelの特徴や利点**

– **シンプルなルーティング**: 明確で直感的なルート定義
– **強力なEloquent ORM**: データベース操作が簡単
– **Bladeテンプレートエンジン**: 効率的なビュー作成
– **豊富なドキュメント**: 初学者にも優しい

## **2. 環境構築**

### **必要なツール**

– **Composer**: PHPの依存管理ツール
– **PHP**: サーバーサイドスクリプト言語
– **Laravel**: PHPフレームワーク

### **Laravelプロジェクトの作成(簡潔に)**

以下のコマンドを実行して、新しいLaravelプロジェクトを作成します。

“`bash
co

元記事を表示

PHPのオブジェクト指向プログラミング: トランプゲームを作成する過程で学んだこと

## **はじめに**

この記事では、PHPのオブジェクト指向の概念を理解するために、トランプゲームのクラスとインスタンス、メソッドとプロパティをどのように実装し、それらの技術要素がどのように連携してゲームを構築するのかについて共有します。

## **オブジェクト指向の基礎**

### **クラスとインスタンスの例: デッキとトランプカード**

“`php
class Card {
public $suit;
public $value;
function __construct($suit, $value) {
$this->suit = $suit;
$this->value = $value;
}
}

class Deck {
public $cards = [];
function __construct() {
$suits = [‘Hearts’, ‘Diamonds’, ‘Clubs’, ‘Spades’];
$values = [‘2’, ‘3’,

元記事を表示

WordPressのSmart Custom Fieldsが、多言語サイト作成プラグインBogoで翻訳した固定ページに設定できない件の対策

WordPressの便利なプラグインである、
非常に直感的に多言語サイトが作れる多言語化プラグイン「Bogo」と、
設定したカスタムフィールドを必要に応じて繰り返し使える機能が無料で使える
カスタムフィールド作成プラグイン「Smart Custom Fields」ですが、
併用した場合に、固定ページを複製した翻訳ページへは、
管理画面からSmart Custom Fieldsで設定したカスタムフィールドを設定することができません。
(※カスタム投稿タイプ、および通常の投稿ページの翻訳ページには、元の投稿に設定されたカスタムフィールドがそのまま反映されます)

###### 固定ページを作成
![スクリーンショット 2024-09-11 23.17.47.png](https://qii

元記事を表示

PHPを使ってXFFの値をアクセスログに出力する方法(Xserver編)

### 概要
レンタルサーバー環境(Xserver等)では、Apacheのアクセスログフォーマットを自由に変更できない場合が多くあります。

クライアントのIPアドレスとしてX-Forwarded-For(XFF)の値を記録したい場合、標準ログの代わりにカスタムログを出力する必要があります。本記事では、PHPを使ってXFFの値を含むカスタムアクセスログを生成する方法を紹介します。

### なぜXFFが重要なのか

WAFやCDNを利用している場合、サーバーが直接受け取るIPアドレス(`REMOTE_ADDR`)はプロキシやCDNのものになることが多く、実際のクライアントIPを取得できません。XFFヘッダーは、そのような環境でクライアントの実際のIPアドレスを取得するために使われます。

### 実装手順

#### 1. logディレクトリの作成

ログファイルを保存するためのディレクトリを作成します。SSHやFTPを使用する方法もありますが、今回はXserverのコントロールパネルから「ファイルマネージャー」を使用します。

![CleanShot 2024-09-16 at 17

元記事を表示

【PHP8.4】round関数で任意桁数の切り捨て切り上げができるようになる

[round](https://www.php.net/manual/ja/function.round.php)は四捨五入する関数です。
PHP8.4以降、この関数で小数の切り捨て切り上げができるようになります。

あれ?[ceil](https://www.php.net/manual/ja/function.ceil.php)・[floor](https://www.php.net/manual/ja/function.floor.php)は?

実はceil・floorは桁数指定ができないんですよね。
必ず整数値にさせられてしまい、小数点3桁で切り捨てみたいなことができないのであまり役に立ちません。

ということで以下は該当のRFC、[Add 4 new rounding modes to round() function](https://wiki.php.net/rfc/new_rounding_modes_to_round_function)の日本語訳です。

なお、この後[Correctly name the rounding mode and make it an E

元記事を表示

新人PGのLaravel備忘録~ユーザー認証時の項目追加~

# はじめに
こちらは筆者がLaravelに関する知識の定着を図るための投稿です。
以下の点にご注意ください
* この記事の読者は私と同じ実務歴半年~1年程度の新人PGの方を想定しています
* 記事内において間違いや冗長な説明が多々あることをご容赦ください
* 公式ドキュメントと相違がある場合はそちらを参考にしてください
* 公の場で記事を引用していただく場合は予めご連絡ください
* コメント大歓迎です!!出来るだけ返信しようと思っております!!
# 今回のテーマ
Laravelではユーザー認証機能を簡単に実装できるようにいくつかの無料パッケージを提供しています。今回はその中の一つであるLaravel Breezeパッケージを使用してユーザー認証を行った際にメールアドレスとパスワード以外の項目もログイン認証に用いる方法を紹介します。

:::note warn
今回はLaravel 11で実装しています。他バージョンでの実装時は[公式ドキュメント](https://laravel.com/docs/11.x/authentication#main-content)も参照してください
:

元記事を表示

OTHERカテゴリの最新記事