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

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

[Laravel] グループ化したURLでバリデーションが通らなかった

# なぜ?
これだと通らなかった
“`php
Route::group([‘prefix’ => ‘{id}’]function() {
Route::get(‘/’, [TestController::class, ‘index’])->name(‘index’);
Route::get(‘/detail’, [TestController::class, ‘details’])->name(‘detail’);
})->whereNumber(‘id’);
“`

こいつはいけたけど、いちいち`->whereNumber(‘id’)`をつけるんか?って話
“`php
Route::group([‘prefix’ => ‘{id}’]function() {
Route::get(‘/’, [TestController::class, ‘index’])->name(‘index’)->whereNumber(‘id’);
Route::get(‘/detail’, [TestController::class, ‘detail’])->nam

元記事を表示

Insomnia入門:環境変数の使い方

Insomniaは、API設計、デバッグ、自動テスト、負荷テストを行うための強力なツールです。

![Insomnia api.png](https://assets.echoapi.com/upload/user/216769532487155712/log/8d668166-732d-4b65-bf75-10e00aba24bf.png “Insomnia api.png”)

Insomniaは、開発、プロダクション、サンドボックス、モックサーバーなど、さまざまな目的で利用できる環境の概念をサポートしています。この記事では、Insomniaで環境変数を活用する方法について詳しく説明します。具体的には、OpenAPIドキュメントからインポートした値を含む「OpenAPI環境」の設定方法を例示します。

## ステップ1: 環境の選択
Insomniaを開くと、デフォルトでは「Base Environment」という環境が選択されています。これを「OpenAPI env」に変更するためには、ドロップダウンメニューをクリックして「OpenAPI env」を選択します。これにより、インポ

元記事を表示

PHPでpreg_replaceのエラーが出て動かない

PHPをアップデートしたら以下のエラーがでるようになって、Webアプリが動かなくなりました。

“`
preg_replace(): Compilation failed: unrecognised compile-time option bit(s) at offset 0
“`

おかしいと思って調べたら、libpcreの問題らしいことが分かりました。

ChromebookのLinux環境だったので、以下のようにライブラリをアップデートしたら直りました。

“`sh
sudo apt install libpcre2-8-0
sudo apt install libpcre2-16-0
“`

### 参考

https://let.blog.jp/article/31724231

https://stackoverflow.com/questions/70040287/php7-4-
preg-replace-compilation-failed-unrecognised-compile-time-option-bi

元記事を表示

[PHP]オブジェクト指向でさっそく躓いたって話。

# オブジェクト指向とは
細かい話は先人が山ほど解説しているのでここでは、
プログラムを「オブジェクト」と呼ばれる細かいパーツに分けて組み立てていくよ、という考え方とだけ。
#### $this を付け忘れてエラーが多発
学び始めてからすぐに、`$this`というものに悩まされました。コードを書いていると、よくエラーが出てしまい、原因を探してみるとどうやら`$this`を付け忘れていたのが原因でした。
###### よく陥った悪い例
最初こんな感じでコードを書いていました。
“`php
class OmochaBox {
private $omochas = [];

public function addOmocha($omochaname) {
// おもちゃを追加するメソッド
$omochas[] = $omochaname; // これが間違い
}
}
“`
これだとエラーが出るか、もしくは欲しい実行結果にならないか。
###### 正しいコード
“`php
class OmochaBox {
private

元記事を表示

AI機能を付けたSNSを開発してみました!

このSNSでは、**AI**と共に言葉を交わしながら、皆で会話を楽しむことができます。AIが会話に参加することで、より深く、質の高いコミュニケーションを体験していただけます。

ぜひご参加ください!
**[新しいSNS Avis](https://avis.city/)**

## 特徴

– **ユーザー登録不要**:すぐに誰でも利用可能!
– **AIと共に楽しむ会話**:人間同士の会話にAIの分析、回答、解説を織り交ぜることで、深みのあるコミュニケーションが可能。
– **リアルタイム反応**:AIがコメントに反応するまで、少し時間がかかりますが(約5分)、その分、深い分析をしてくれます。

## 使い方

1. **コミュニティ作成**
コミュニティを作成すると、**自動的にAI分析**がONになります。

2. **コメント投稿**
投稿時、AI分析の**ON/OFF**を自由に切り替えることができます。

## 今後の展開

現在は**簡単な構造**にしていますが、機能は随時追加中です。
皆さんのフィードバ

元記事を表示

Webサーバ上で生成した画像データをWebクライアントに出力する

# 概要
Webサーバ上で画像を動的に生成し、Webブラウザ等のクライアントに表示させたりダウンロードさせたりしたいことがあります。
本稿ではその手順についてPerl, PHPでのサンプルコードを紹介します。

# 前提
## 画像データの生成方法について
本稿では、簡略化のため、画像データについてはファイルから読み込んでそのまま出力することとします。
GDライブラリを使用した画像データの生成方法については別途説明したいと思います。

# サンプルコード
## 基本的な流れ
1. 画像データを生成する
ここでは、スクリプトと同じディレクトリのsample.pngという名前の画像ファイルを読み込むようにします。
1. HTTPヘッダを出力する
Content-TypeヘッダでPNG形式を指定し、Content-Dispositionヘッダで出力するファイル名を指定します。(後者は必須ではありません。)
Perl版ではロジックの関係上画像ファイルの長さを取得できるので、Content-Lengthヘッダをサボらずに出力しています。
1. 画像データを出力する

PHP, Perlの順にコー

元記事を表示

【Laravel】テーブル変更(カラム追加)

運用中のテーブルに対し、
カラムを追加する際の流れについて説明します
## マイグレーションファイルの作成
下記コマンドで、マイグレーションファイルを作成します
~~~
php artisan make:migrattion add_new_column_to_books_table –table=books
~~~
コマンド内容は、
`php artisan make:migration` `ファイル名` `–table=テーブル名`
これで __database/migrations__ の中に __作成日時_ファイル名.php__ が作成されます
## マイグレーションファイルの編集
database/migrations の中に作成されているので編集します
~~~database/migrations/2024_10_20_000000_add_new_column_to_books_table.php

元記事を表示

【Laravel】テーブル作成#1

## マイグレーションファイルの作成
下記コマンドで、マイグレーションファイルを作成します
~~~
php artisan make:migrattion create_books_table –create=books
~~~
コマンド内容は、
`php artisan make:migration` `ファイル名` `–create=テーブル名`
これで __database/migrations__ の中に __作成日時_create_books_table.php__ が作成されます
## マイグレーションファイルの編集
database/migrations の中に作成されているので編集します
~~~database/migrations/2024_10_20_000000_create_books_table.php

元記事を表示

名前空間(namespace)とuseの違いを、例えを用いて初心者にも分かりやすく

名前空間(namespace)とuseの違いを、図書館と本の例えを使って説明します。

### 名前空間(namespace)は図書館のセクション
想像してみてください。大きな図書館があって、その中にはたくさんのセクションがあります。それぞれのセクションには異なる種類の本が並んでいます。

* 名前空間はそのセクションの名前:
たとえば、図書館に「科学」セクションと「歴史」セクションがあるとします。これらのセクション名は、名前空間に相当します。科学の本は科学セクション、歴史の本は歴史セクションにあります。
* 目的:
「同じタイトルだけど内容が異なる本」(たとえば「地球の成り立ち」というタイトルの科学用の本と歴史用の本)が名前の衝突をしないようにするためです。それぞれの本はセクション名(名前空間)を持つことで、それがどの領域に属しているのかを明確に区別できます。

PHPでの例
~~~PHP

namespace Science;

class Earth {
// 科学セクションに関連したクラス
}

namespace History;

class Earth {

元記事を表示

【CakePHP】登録フォームからデータベースに登録する方法

# 対象の読者
CakePHPで登録フォームからデータベースに登録する方法を知りたい方

# 検証環境
■Windows11
■CakePHP(version 4.5.7)

# TableRegistry(ORMクラス)を使うと便利
TableRegistryクラスとは、テーブルを作るための様々な依存関係を提供します。
今回だと、TableRegistryクラスを使って、①エンティティの作成と②save()メソッドを使って登録できるといった
恩恵を受けられます。(CakePHPのTableRegiostryに関する公式情報はこちら↓)

https://book.cakephp.org/3/ja/orm/table-objects.html

早速ですが、TableRegistryクラスを使ったケースを見てみましょう。
【処理の流れ】
①RegisterController.phpの名前空間の下に、TableRegistryをインポートしておく。
“`RegisterController.php

元記事を表示

CakePHPでCSRF対策したフォームを送信する方法

# 対象の読者
CakePHPでフォーム画面の内容をサーバに送信する際、CSRF対策をしてなかったために、エラーが出て悩んでる方向けの記事です。

# 検証環境
■Windows11
■CakePHP(version 4.5.7)

# CSRF対策とは?
:::note warn
CakePHPとLaravelではCSRF対策をしているForm以外はサーバに送信できません!!

:::

クロスサイトリクエストフォージェリ(CSRF)とは、Webアプリケの「セッション管理」機能に対して、セキュリティ上の欠陥をピンポイントで狙ったサイバー攻撃の一種です。

このような攻撃からwebアプリケーションを防御するにあたって、CakePHPやLaravelではCSRF対策の技術が搭載されています。

今回は、CakePHPのアプリにおけるフォーム画面のCSRF対策の記述方法を見ていきましょう。

# 書き方はとてもカンタンです!

タグのすぐ下に、下記のコードを記載するだけです!

“`

元記事を表示

【CakePHPで検証】

タグの外側に送信ボタンを配置した時のマークアップ記法

# 対象の読者
フォーム画面の作成について、少し悩んでいるフロントエンジニアの方。

# 検証環境
■Windows11
■CakePHP(version 4.5.7)

# 記事を作成したきっかけ

タグを記載しているときに、タグの外側に送信ボタンを配置した時の書き方が新鮮で、しかもHTMLだけで

タグと送信ボタンが紐づけられる利点があったため、さっそく共有したかったから。

# さっそくコードを見てみよう

記載方法はとってもカンタン(^^♪
【手順】

タグにId属性を付ける。
元記事を表示

指定日に記事を削除するWPのプラグインの雛形.

おはようございます.指定日に記事を削除するWPのプラグインの雛形を作りましたが記事の削除部分(article_del_R)はご自身で作ってください.削除部分をご自身で作り自分のサイト(WP)を定期的にcronで叩けば削除される仕組みです.
毎度のことですみませんがソースコードを解析してお使いいただければと思います.また、このコードは試作品になります.

WPプラグインの画面はこんな感じです.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779064/69ebe3e6-c897-8780-b8dc-f75c0b937910.png)

ソースコードはこちら
“`php:article-del-R/article-del-R.php

元記事を表示

PHPStorm日本語化の手順が変わってた 2024.2

## 環境

2024.2.3

## 手順

`Settings` -> `Appearance & Behavior` -> `System Settings` -> `Language & Region`で日本語を選択

日本語を選択するにはプラグインがONになってることが前提
Shitキー2回押して `japanese`でプラグインがONになってることを確認する

https://blog.jetbrains.com/ja/2024/08/07/202402changejpui/

## 雑記

今まではプラグインでON・OFFすれば切り替えられたがデフォルトで中国語や韓国語が追加されたため切替が必要になった様子
ちなみにRegionを選択しても現時点は中国以外は関係ないらしい(2024.10.18現在)
自分は基本は英語で作業して(英語版に慣れてしまったし`rebase`が`リベース`になってたりするのをみて直感的に理解できなかった)細かいところを設定するときだけ日本語にするので遭遇した

元記事を表示

Docker の PHP で DBをインポートするときに upload limit of 2048KiB を解決する方法

# 背景
Docker で DB をインポートしたら、POST なんちゃらエラーが出た。
php.ini を確認するために、
docker exec -it image_name -1 bash を実行した。
“`Dockerfile:Dockerfile
# PHP 設定ファイル
COPY php.ini /usr/local/etc/php/php.ini
“`
“`bash:vi
vi /usr/local/etc/php/php.ini
“`

“`php.ini
post_max_size = 512M
upload_max_filesize = 512M
“`
と記載されている。

# 解決策
設定を docker-compose.yml に記載する

“`docker-compose.yml
phpmyadmin:
image: phpmyadmin:latest
ports:
– 8180:80
environment:
– PMA_HOST=app

元記事を表示

DockerでPHPのLaravel環境作り直し

# 概要

私用PC(Windows10)が壊れました。
なので新PC(Windows11)で同等の環境(Vagrant、VMware、CentOS7)を作ろうとしたら、CentOSのEOLやVagrant実行時のHyper-Vなどに阻まれうまいこといかなかったため、Dockerにて作り直すことにしました。

## 構築したい環境
過去に作成した環境が古めなのですがそちらに合わせたいため、以下の構築をゴールとしました。

– PHP 7.4
– Apache2
– MySQL5.7
– Laravel8([筆者の運用している音ゲーツールを動かせる状態にする](https://github.com/shioharugit/iidxmemo))

# Docker

## Docker Desktopをインストール
https://www.docker.com/ja-jp/products/docker-desktop/

## ディレクトリ・設定ファイルの作成

“`.txt:ディレクトリ構造
プロジェクトフォルダ
┣━ docker
┃ ┣━ MySQL
┃ ┃ ┗━ Dockerf

元記事を表示

DockerイメージPHP/ PHP-FPMについて振り返り

## はじめに
今までDockerを何気なく使用していたが、Dockerイメージについて一度簡単に振り返ろうと思い、振り返り勉強しました。
その中で何気なく使用していたPHP-FPMについて気になったので記します。

## Dockerイメージとは?
DockerイメージはDockerコンテナを動かすためのテンプレートファイルです。OS、アプリケーションだけでなく、アプリケーション実行に使われるコマンド、メタデータまで含まれています。
Dockerコンテナはテンプレートファイルに基に環境を作るので、Dockerイメージが必須です。

[カゴヤのサーバー研究室](https://www.kagoya.jp/howto/cloud/container/dockerimage/)

## PHP-FPMとは?
PHPにおけるFastCGI実装のことを指します。基本的にはWEBサーバー(NginxやApache)と連携して、PHPスクリプトを実行することが多いです。

[FastCGI Process Manager (FPM)](https://www.php.net/manual/ja/i

元記事を表示

コーディング初心者が知っておくべき基本テクニック

# 新米コーダーが知っておくべきプログラミングの基本
my site:https://edusupportbd.com
こんにちは、皆さん!私は新米コーダーで、プログラミングの世界に足を踏み入れたばかりです。このブログでは、私が学んだことや、初心者が知っておくべき重要なテクニックについて紹介します。これからプログラミングを始める方や、基礎を再確認したい方にとって役立つ情報となれば幸いです。

## プログラミング言語の選択

プログラミングを始める際に、どの言語を学ぶかは非常に重要です。以下の言語は初心者におすすめです。

### 1. Python
Pythonはシンプルで読みやすい文法を持ち、データ分析やAI、Web開発など幅広い分野で使われています。初心者でも学びやすいので、まずはこの言語から始めることをお勧めします。

### 2. JavaScript
Web開発に興味がある方にはJavaScriptが必須です。ブラウザ上で動作するため、すぐに成果を確認できるのが魅力です。フロントエンドだけでなく、Node.jsを使ってバックエンド開発も可能です。

### 3.

元記事を表示

PHPでcsvファイルのすべての値にダブルクォーテーションをつける

## はじめに
こんにちは。
気分転換したくて全然業務と関係ないし、需要も無さそうな記事を書きました。
5分で読めます。

## ところでcsvファイルって何

恥ずかしながらIT業界に入るまでcsvというファイル形式を知らずに生きてきました。

:::note info
CSVファイルとは、Comma Separated Valuesの略で、各項目がカンマ(,)で区切られたテキストデータのことです。
データの容量が軽く、読み書きや編集が容易であるという特徴があります。
:::

[こちらの記事](https://am.arara.com/blog/028)が大変分かりやすいです。感謝。

## 本題

案件でcsvファイルを使ってのデータのインポート機能を作ったのですが、csvファイルはダブルクォーテーションで囲まれている必要がありました。
ただ、インポートするためのcsvファイルをExcelで開いて編集するとダブルクォーテーションが消えてしまうということを経験しました。
(常識なのかもしれません。ポンコツですみません)

テキストエディタで置換する方法は結構あったのですが、だるすぎ

元記事を表示

OTHERカテゴリの最新記事