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

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

【Apache2.4】Win10環境でPHPと連携してみた(PHPモジュール)

この記事では、Apache2.4とPHPを連携して、
PHPファイルをApacheが扱えるようにする方法を紹介します。
この記事では、PHPに同梱のPHPモジュールを使用します。

(Windows11環境がないので、Windows10の環境です)

**この記事はPHPファイルをApache2.4で使いたかったので、同時にQiita記事を書いたものです。
一部間違いがある可能性があるので、心配な場合は別の記事も見てみることをお勧めします。**

# 注意点
この記事では、Apache2.4とPHPがインストール済みなことを前提としています。
Apacheのインストール方法は以下の記事で紹介しています。

https://qiita.com/TechCat56/items/aba26453c10414ce68f6

この記事ではPHPが`C:\php`にあり、Apacheが`C:\Apache24`にあることを前提として進めます。

# 連携

## PHP.iniを作成(既にできている人は飛ばしてください)
まず、PHP.iniが必要です。
同梱されている`php.ini-devel

元記事を表示

PHP でも AWS Lambda って実行できるんやで 〜 lambroll を添えて 〜

# はじめに

この記事は NE Advent Calendar 2023 7日目の記事です。

# どうして PHP なのか

弊社は PHP をメインに開発を進めております。
Lambda が標準でサポートしている Golang や Python を日常的に使用している人はおらず、Lambda のためだけに新しい言語を導入するのは今後このコードをメンテ出来る人が減ってしまう。

なんとかして PHP で書けないものか…

# 救世主

https://bref.sh/

Bref は PHP を Lambda で実行するための環境を提供してくれるライブラリです。

# 早速使ってみる

### インストール

以下のような composer.json を作って、`composer install` を実行します。

“`composer.json
{
“require”: {
“bref/bref”: “^2.1”
}
}
“`

### 中身を書く

あとは思い思いにプログラムを書いてゆく。

他のライブラリを使う必要がないのであれば c

元記事を表示

画像やCSSの管理、”Asset”

[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の7日目の記事です。

## 画像やCSSの管理、”Asset”

[Asset](https://symfony.com/doc/current/components/asset.html)は、画像やCSSなどのファイルのバージョニングやURLの取得を行うコンポーネントです。

### インストール

“`shell
composer require symfony/asset
“`

### URLの取得
`Package` オブジェクトを作成し、`getUrl()`することで、ルートパスからのURLを取得できます。

“`php
use Symfony\Component\Asset\Package;
use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;

$package = new Package(n

元記事を表示

Remove Special Character from String in PHP

In this PHP tutorial, I will discuss how to remove special character from strings in PHP using preg_replace. Strings containing special characters may be vulnerable to security flaws, inconsistent data, or unfavorable results.

Sometimes, We need to get the result of an input string as a simple composition of alphabets and numbers and, want to remove all special characters from the string by using PHP preg_replace method.

Remove Special Character from String in PHP

元記事を表示

プリペアドステートメントの出力(ログ,デバッグ用)

# 悩み
ログ用に出すのもそうだし、SQLでエラーが出た際に
実際にDBに発行されているSQLの内容を調べる方法がわからなかった。
変数がバインドされた後に実際に投げられているSQLはどうやって調べるの、という疑問があった。

# 結論
私はこのように出しました。
私の環境(PHP8.2.9 mysql 5.7.36)では動きました。
“`
//バインドされた後のプリペアドステートメントを出力(ログ用)
public function getPreparedStmtAfterBind($pdo_stmt) {

ob_start();
$pdo_stmt->debugDumpParams();
$content = ob_get_contents();
ob_end_clean();

preg_match(‘/Sent\sSQL:\s\[\d+\]\s(.*?)\sParams/s’, $content, $matches);

retur

元記事を表示

【phpMyadmin x Docker】「PMA_USER」と「PMA_PASSWORD」とは何?必要なのか?

# 概要
`docker-compose.yaml`でphpmyadminを使っている方なら見たことあると思うのですが、`PMA_PASSWORD`をご存知でしょうか。

普段使ってなかったのですが、その存在を知ったので、今回これを使って実装しました。
「これってphpmyadmin用のもの?」「Mysqlサーバ側と違うユーザーとパスでもいいの?」という疑問があったので調べてみました。

# 前提

以下の簡易的な`docker-compose.yaml`を使用する前提です。

“`yaml
version: ‘3.8’

services:
mysql:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: exampledb
ports:
– “3306:3306”
volumes:
– db_data:/var/lib/mysql

php

元記事を表示

PHPの全角 trim には気をつけましょう

## PHP 8.4 未満では全角スペースを正しく trim できない

参考記事:https://qiita.com/rana_kualu/items/87bc5dd0396103bd7a32

どういう事かと言うと、例えば下記のコードがあったとします

“`
#!/usr/local/bin/php

“`

この結果の期待値はもちろん「イェーイ」ですね

### では実行結果を見てみましょう

“`
$ ./php-trim-error.php

��ェーイ
“`

**おめでとうございます!!!!!** 正しく文字化けしましたね!!! :scream:

この辺りは文字コード表とかググっていただければと思いますが、UTF-8 でもこの問題は解決できません。

## じゃあ、どうすれば!?

PHP 8.4 以上に上げれば良いと思われますが、現状 PHP 8.4 は業務では使えません。執筆時の2023年12月時点ではお客様の強いご要望が無い限り RHEL 9 で納品するとなれば PHP 8.0 です。

元記事を表示

【DB設計】DM機能実装のためのDB設計で大苦戦した初心者の話

## 要約
現在作成しているアプリで実装予定の機能の一つに、DM機能があります。

しかしそのための論理設計(DB設計)の過程で、なぜエンティティとしてメッセージルームが必要なのか、理解するのに時間がかかりました。

結論として、自分は**手書きでテーブルとレコードを作成し、どんなエンティティが必要かイメージすること**で解決できました。

## 本記事はこんな人におすすめ
* DB設計でエンティティの抽出に苦戦している方
* DB設計における初心者の躓きポイントを知りたい方

なお、用語やそもそもの理解に誤りがあるかもしれませんが、どうか生暖かい目で見守っていただけますと幸いです。

## 問題
* DM機能のために必要なテーブルが分からない
* usersテーブルとmessagesテーブルの他にmessage_roomsテーブルも必要だと言われたが、なぜ必要だか理解できない
* よっておそらく、DB設計の体系的知識がない

## アプローチ
まずDM機能に必要なテーブルは何か、[LaravelDB.com](https://zenn.dev/daisu_yamazaki/artic

元記事を表示

【PHP】変数の条件判定を比較(if, isset, empty, is_null)

# はじめに

今回は、変数の条件判定を行う関数を比較し、まとめました。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的

メソッドの性質に関して理解が曖昧だったため、整理をしてアウトプットしようと思いました。

# この記事の対象者

– PHPを学習されている初学者の方
– issetやemptyの仕様に迷いがある方

# この記事の内容
1. isset
2. empty
3. is_null
4. メソッドの比較

# 1. isset

> 変数が宣言されていること、そしてnullとは異なることを検査する

https://www.php.net/manual/ja/function.isset

– 存在するかつ、null以外の値の場合true、それ以外はfalseを返す ※空はtrue

# 2. empty

> 変数が空であるかどうかを検査する

https://www.php.net/manual/en/function.empty.php

– 存在しないまたは、空,

元記事を表示

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);
foreach

元記事を表示

【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クラスは、アプリケーションが投げるすべての例外がログに記録され、ユーザーへレンダーする場所です。このドキュメント全体を通して、このクラスについて詳しく説明します

元記事を表示

フレームワークを改修した話(laravel-admin)

こんにちは!

前回、[フレームワークを改修した話(Ethna)](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-e74

元記事を表示

時間を計る、”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; // このようにファサードで使うのはNG

private 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:

“`

元記事を表示

OTHERカテゴリの最新記事