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

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

【PHP】HPサーバーにあるCSVへ書き込む。

# 目的
あるデータをHPにて使用するため、CSVへ書き込む。今回の内容はURLを見られても問題ないデータ。
セキュリティ等はあまり得意ではないため、不備があればご教示頂ければ幸いです。
クライアントPC→HPサーバー→HPに表示

# 環境等
* クライアントPCでもサーバーPCでもPHPを使用
* サーバーの権限がある

# 方法
## クライアントPCの設定
変数$outoput.dataにサーバーへ送信したい情報が含まれている(一行の文字列)。

“`php:get_data.php
//送信先の文字コードへ変換
$output_euc = mb_convert_encoding($output_data, “EUC-JP”, “UTF-8”);

//HPサーバーへデータ送信
$url = “https://www.test.com/get_data.php?data=” . “$output_euc”;
$conn = curl_init(); // cURLセッションの初期化
curl_setopt($conn, CURLOPT_URL, $url); // 取得するU

元記事を表示

Macの環境構築、PHP用環境構築

# 前提

## 対象
– web系エンジニア(特にPHPバックエンド)

## 環境
以下の環境で確認しました。
Appleシリコンmacなら同様にできると思います。
– macos Sonoma
– MacBook Pro – Apple M3 Pro

## 前置き
– intel MacからM3 Macに移行するにあたって移行ツールを使用せずに手動移行したのでその備忘
– 一緒に働く人に環境構築方法を共有したいのでついでにわかりやすく書こうと思った
– PHP開発はDockerで行うがローカルにもPHPが必要な場面があるので入れている
– phpstan以外の静的解析、Laravel向けのVS Code拡張、AI系のVS Code拡張、node jsとそのバージョン管理については追記したい気持ちがある

# はじめに

## システム設定
システム設定アプリから行う内容です

– トラックパッド > 軌跡の速さ > 最も速くする
– トラックパッド > タップでクリック (お好みで)
– 一般 > ソフトウェアアップデートでアップデートがあれば行う
– ネットワーク > ファイ

元記事を表示

Next.js × Laravel でページネーションの実装

# 1. はじめに
Next.js × Laravel でブログ投稿サイトを作成していました。
その際にページネーションの実装で詰まったので突破した解決策を記しておこうと思います。

# 目次
[1.はじめに](#1-はじめに)
[2.使用環境](#2-使用環境)
[3.背景](#3-背景)
[4.ページネーション実装前の状況](#4-ページネーション実装前の状況)
[5.ページネーション実装](#5-ページネーション実装)
[6.ページネーション完成時のコード](#6-ページネーション完成時のコード)
[7.最後に](#7-最後に)

# 2. 使用環境
– MacBook Air : M2チップ / 16 GB
– Next.js : 14.1.0
– React : 18.2.0
– PHP : 8.2.14
– Laravel Framework : 10.39.0
– My SQL : 8.0.32
– PHP My Admin : 5.2.1
– Docker :
“`
Client:
Cloud integration: v1.0.35+de

元記事を表示

素数判定関数を使って簡単なゲームを作った話④

ご覧いただきありがとうございます。
この内容は、複数に分けて投稿しています。全体をご覧になりたい方は、以下のリンク先よりご確認ください。

https://qiita.com/hitoki_univ/items/8e3feab0add17befc700

前回の内容については、こちらからどうぞ。

https://qiita.com/hitoki_univ/items/96e45db86abc4dae71d7

# 今回やること
第3回までで、ゲームをプレイする人数の選択、プレイヤー名と制限時間の設定に関する部分を実装しました。
今回は満を持して、ゲームの動作部分を実装していきます。

# ゲームの実行画面
前回作成したプレイヤー名などの入力画面と同様、ゲームのプレイ人数に応じて異なるページを作成する必要があります。しかし、基本構造はどのページも共通ですので、今回は2人用のページを主に確認していきます。

### HTML
“` php

元記事を表示

laravelを使った自分が作った料理を投稿できるWebアプリの作成手順

今回はプライベートでPHPフレームワークのLaravelを使ったWebアプリケーションの開発をするので、その設計書を書いていきます。

## サービスを作ろうと思った背景

僕は大学生なので家族と離れて暮らしています。自分の生存確認のための連絡がよく入ってきます。Lineなどのアプリを使っても連絡ができますが、せっかく大学でプログラミングを学んでいるので自分でWebアプリを作ってみようと思いました。具体的には自分の生活ぶりが家族に伝わるようなWebアプリを作ってみようと考えています。

## どんなサービスか

利用者に会員登録してログインしてもらい自分が作った料理の写真を投稿したり、他の人の投稿を見れるようなサービスにしてみようと思ってます。

## サービスに使うスキル

– HTML
– CSS
– jQuery
– PHP
– Laravel
– MySQL
これらを使いたいと考えています。

## サービスの仕様

### 利用者の認証のために
– ログイン
– ログアウト
– 会員登録
– 退会処理
マイページ画面を作り
– メールアドレス変更

元記事を表示

PHPフレームワーク「Flow」のリフレクションがPHP標準のリフレクションよりも速いワケ

# はじめに
PHPにはクラスやメソッドの構造を取得できるリフレクションという機能があります。PHPフレームワークのFlowではPHP標準のリフレクション処理を用いた独自のリフレクション処理が定義されており、様々な機能を追加で使えるようになっています。

そんなFlowのリフレクション処理ですが、公式ドキュメントを読んでいると以下のような記載がありました。

> Flow provides a powerful extension to PHP’s own basic reflection functionality, not only adding more capabilities, but also speeding up reflection massively.

“**speeding up reflection massively…**”

どうやら、**FlowのリフレクションはPHP標準のものよりも速い**とのこと。
FlowもPHP標準のリフレクションを利用しているのになぜ差が出るのか気になったので調べてみました。

# TL;DR
* Flowは実行前にコン

元記事を表示

素数判定関数を使って簡単なゲームを作った話③

ご覧いただきありがとうございます。
この内容は、複数に分けて投稿しています。全体をご覧になりたい方は、以下のリンク先よりご確認ください。

https://qiita.com/hitoki_univ/items/8e3feab0add17befc700

前回の内容については、こちらからどうぞ。

https://qiita.com/hitoki_univ/items/5893785797243794d33a

# 今回やること
第2回では、ゲームのタイトル画面を作成しました。
今回は、タイトル画面からのリダイレクト先である、プレイヤー名と制限時間を設定する画面を作成します。

# プレイヤー名、制限時間の設定画面
前回作成したページでは、選択したプレイヤー人数に応じて異なるページにリダイレクトするようにしました。
今回はそのリダイレクト先のページを作成するので、複数のページを作成します。しかし、基本構造はどのページも同じなので、今回は2人用のページを主に確認していきます。

### HTML
“` html


素数判定関数を使って簡単なゲームを作った話②

ご覧いただきありがとうございます。
この内容は、複数に分けて投稿しています。全体をご覧になりたい方は、以下のリンク先よりご確認ください。

https://qiita.com/hitoki_univ/items/8e3feab0add17befc700

前回の内容については、こちらからどうぞ。

https://qiita.com/hitoki_univ/items/e1b8ec9e6c7c39d5e761

# 今回やること
前回は、これから作成するゲームの概要などについて説明しました。
今回は、そのタイトル画面を作成していきます。

# ゲームのタイトル画面
タイトル画面では、プレイヤー人数を選択し、人数に対応したプレイヤー名入力画面に遷移する機能を実装します
1. プレイヤー人数を選択し、人数に対応したプレイヤー名入力画面に遷移する機能
2. 過去のランキングを表示する画面に遷移する機能

具体的なコードは以下の通りです。

### HTML
“` html


素数判定関数を使って簡単なゲームを作った話①

ご覧いただきありがとうございます。
この内容は、複数に分けて投稿しています。全体をご覧になりたい方は、以下のリンク先よりご確認ください

https://qiita.com/hitoki_univ/items/8e3feab0add17befc700

# ゲームの概要
このゲームは、複数人による対戦形式を想定して作成しています。
動作の概要は以下の通りです。

①プレイヤーの人数を選択
②プレイヤーの名称を入力
③順番に素数を入力していく。この時、前回より大きな素数を入力する必要がある。制限時間内に前の人より大きな素数を見つけられないとゲームオーバー

今回は、生徒たちにより楽しみながらプレイしてもらえるように、ランキング機能も作成します。
ちなみに、前の人より大きな素数を入力していく、という遊び方は、学習支援事業で会った生徒さんの発案です。

# 次の投稿について
次回(第2回)は、このゲームのタイトル画面を作成します。
~~投稿次第、リンクを追加するので、ぜひご覧ください~~
以下のリンク先から、是非ご覧ください。

https://qiita.com/hitoki_univ/i

素数判定関数を使って簡単なゲームを作った話(目次用)

こんにちは。
私は、週に何度か某市の学習支援事業の指導員として活動しています。そこでは中学生に指導を行っているのですが、その休憩時間に、生徒たちに多少なり頭を使いながら遊んでもらえるものを作れないかと思い、今回のゲームの開発に至りました。
以前の大学の授業で、JavaScriptで素数判定を行うプログラムを作成していたので、今回はそれを活用して、Webアプリケーションの形式でゲームを作っています。

# この投稿の構成
一度にすべての内容を書くと長くなりそうなので、何回かに分けて投稿します。このページは、その目次のような形で使っていければと思います。

# 第1回
1回目は、作成したゲームの概要等について簡単に説明しています。
詳しくは、↓のリンク先をご参照ください。

https://qiita.com/hitoki_univ/items/e1b8ec9e6c7c39d5e761

# 第2回
2回目は、ゲームのタイトル画面を作成します。
詳しくは、↓のリンク先をご参照ください。

https://qiita.com/hitoki_univ/items/589378579724379

元記事を表示

UbuntuでphpとApacheを連携させる

# 概要
UbuntuでphpとApacheを連携させるのメモ。

# 現象
index.phpでechoしてもブラウザ上になにも表示されなかったので調べたところ、phpとApacheを必要があるらしい。

# 環境
Ubuntu
“`
$ cat /etc/issue
Ubuntu 22.04.3 LTS \n \l
“`
php
“`
$ php -v
PHP 8.3.2 (cli) (built: Jan 25 2024 15:18:05) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.2, Copyright (c) Zend Technologies
“`
Apache
“`
$ apachectl -v
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2023-10-26T13:44:44
“`
# 試したこと
1. 下記コマンドでphpモジュールを有効化する
“sudo a2enmod php“
下記エラーが出る
“ERROR: Mod

元記事を表示

Homebrew経由でサポートが終了したPHPをインストールする

# バージョン情報

Homebrew:4.2.5

# 事象

HomebrewでPHP8.0をインストールしようとしたら2023年11月でサポート期間が終了していたため、下記のエラーが発生してインストールできなかった。

今回は8.0をインストールする。

“` terminal
$ brew install php@8.0
Error: php@8.0 has been disabled because it is a versioned formula!
“`

2023/01/25時点でインストールできるのは8.1と8.2

# 対応策

①下記コマンドを叩く

“` terminal
$ brew tap shivammathur/php
“`

2024/01/25時点では5.6〜8.4がインストールできるっぽい。

“` terminal
$ brew search php
brew-php-switcher phpmd shivammathur/php

元記事を表示

Postmanで連想配列を送る方法

# はじめに
Web APIの設計・開発、テストをサポートするツールとして有名なPostman

https://www.postman.com

何となくGETで値を受け取ったり、POSTしてDBに値を保存したり、、、といった基本的な使い方はわかっているがある時

**「あれ??連想配列ってどうやって送るんだ???」**

と詰まったので、ここに記録します:persevere:

またLaravel + Open APIという開発環境の例で進めます

# どうやって配列をPOST送信するか
画像とともに手順を以下に記載していきます!

## まずはRequest内のBodyセクションを開きましょう
![Screenshot 2024-01-25 at 21.42.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/a4f36d83-19ab-1a1a-f261-6538571d588e.png)

今まではパラメーターで送ってばかりでParamsしか開いたことがありませんでした・・・
👇

元記事を表示

paizaレベルアップ問題集 標準出力メニュー【行によって長さが違う二次元配列の表示】FINAL問題 すべての行の長さと値が不定な 2 次元配列の出力 (paizaランク B 相当) 解答例

PHPで回答。コード公開可とのことなので復習も兼ねて共有します。
[問題文](https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_boss “paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_boss”)
## 解答例1
“`php

元記事を表示

PHPの静的コード解析ツールPHPMDの使い方

## まずは本家ドキュメント

### ルールの内容
https://phpmd.org/rules/index.html

### ルールセットの作り方
https://phpmd.org/documentation/creating-a-ruleset.html

英語だけど翻訳機能を使えば割りと良い感じで読める。

## 大枠の構成と方針

* ルールセットがあって、それらに単品のチェックルールが入っている構成
* ルールセットも、xmlで定義されている
* ルールのパラメータ上書きもできる(メソッド名は最低3文字など)
* ルールセットの複数指定もできる

今回は、ルールセットを指定して、セットの中の都合の悪いものだけ、無効化する方針とした。

## install
“`bash
composer require –dev “phpmd/phpmd=@stable”
“`

## help見る
“`bash
composer –help
“`
使えるrulesetとか、出力フォーマットの種類とか、cacheオプションなど色々書いてある

## 単品ファイルなど、手動

元記事を表示

【Laravel】マルチパートアップロードを使って動画をS3へアップロードする

## はじめに
この記事が私の初投稿になります。
アウトプットの機会を増やしていくため、継続的に記事を書いていこうと思います。

今回は実際の業務で苦戦した「マルチパートアップロードを使用したAWS S3へのファイル保存」についてです。
この辺のトピックはネットの情報が古かったり有益な情報に出会えなかったため、私と同じような状況の方の手助けになれば幸いです。

また間違いなどがございましたら、ご指摘のほどよろしくお願い致します。

## 背景
私が業務でS3を使用した背景ですが、以下のような理由から採用することにしました。
※S3の詳細は割愛しますが、サーバーとは別のところにファイルを保存したい場合に使用するドライブみたいなものですかね!(ざっくりしすぎかな、、、)

* 容量が1GBを超える動画コンテンツを扱うため
* S3に置いたコンテンツはCloudFront(詳細は[公式](https://aws.amazon.com/jp/cloudfront/)を参照してください)経由で高速でアクセスできるため

## 実行環境など
* PHP8.2
* Laravel10
* MySQL

元記事を表示

構造体の作成(もう一度挑戦)⇒Uncaught TypeError: Cannot assign null to property がでる

今Paizaラーニングを解いていて、もはやCレベルには達しており、
pythonも扱えるようになってきたので、Cクラスの残りの部分はもうストップして
Bクラスの問題集に行こうと思います。

https://paiza.jp/works/mondai/class_primer/class_primer__make

前回は、下記でやっていますが下手すぎたので
再度やります。

https://qiita.com/Atsulabo/items/122181b1778afeca677f

まず構造体ってなんだ?というところから始めたので、
そこらへんは前回のを見て下さい。
ただ、PHPのコードは修正します。
“`php

元記事を表示

LaravelでToDoアプリのAPIを実装してみよう②

# 前回の記事
https://qiita.com/kent0129/private/b991b2c0c32706fd337c
こちらの記事の続きになります。

# ToDoの詳細取得機能の実装

### コントローラーの編集
データを1件取得するメソッドをTodoControllerに書いていきましょう。

“`php:TodoController.php
/**
* ToDo詳細
*
* @param int $id
* @return JsonResponse
*/
public function show($id):JsonResponse
{
// $idが数値以外が送られてきた時にはエラー返す
if (!is_numeric($id) || $id <= 0) { return response()->json(
[
‘code’ => Response::HTTP_B

元記事を表示

LaravelでToDoアプリのAPIを実装してみよう①

# 前書き
初学者向けにLaravelでAPIを作る方法を記事にさせていただきます。
今回はシンプルなToDoアプリのAPIを実装していきます。
記事ではLaravel10系を使用しています。

# Laravelの環境構築
今回は手軽に環境構築を行いたいのでSailを使用しようと思います。
Docker Desktopは事前にインストールしておいてください。
以下のコマンドを実行してアプリケーションの作成を行ってください。
“`
curl -s “https://laravel.build/laravel-todo-api-sample” | bash
“`

上手くいかない方は以下のQiitaの記事や公式ドキュメントをを参考にしみてください。

https://qiita.com/y_sone/items/2bf510e551cd14d22042

公式ドキュメント

https://readouble.com/laravel/10.x/ja/sail.html

https://readouble.com/laravel/10.x/ja/installation.html#d

元記事を表示

Laravelでリレーション先のリレーションのデータを取得する時にHas Many Throughが便利っていう話

# 前書き
タイトルまんまですが、Laravelでリレーション先のリレーションのデータを取得する時にHas Many Throughが便利っていう話になります。
書き方とHas Many Throughを使わない場合との書き方の違い、簡単な活用方法等を書いていきます。

#### サービス概要
今回はユーザーが記事などを投稿して記事にコメントをできるようなサービスを考えてみます。

#### 環境
Laravel 10系

# テーブル設計

#### users(ユーザー)テーブル
| 論理名 | 物理名 | データ型 | 制約 |
| —- | —- | —- | —- |
| ユーザーID | id | UNSIGNED BIGINT | PRIMARY KEY,
AUTOINCREMENT |
| ユーザー名 | name | VARCHAR(255) | NOT NULL |
| 作成日時 | created_at | TIMESTAMP | NOT NULL |
| 更新日時 | updated_at | TIMESTAMP | |

#### po

元記事を表示

OTHERカテゴリの最新記事