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

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

GPTsでドキュメント生成ツールを作成しました。

# GPTsでドキュメント生成ツールの作成
GPTsでプロンプトにコードを貼り付けるだけで関数のドキュメントや1行1行に処理の説明を入れてくれる「**Coding Documentation GPT**」を作成しました。

使ってみてください。
使用した後に意見をいただけると幸いです。

https://chat.openai.com/g/g-6V7SNo6F2-coding-documentation-gpt

## 使い方
ドキュメントや生成したいコードを貼り付けるだけです。
下記みたいに雑にプロンプト投げてもらって大丈夫です笑

プロンプト例
“`text
User
import os
import tweepy

def tweet(consumer_key, consumer_secret, access_token, access_secret):
#オブジェクト作成
client = tweepy.Client(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_

元記事を表示

個人的メモ (PHPなど)

PHPやSQLなどの学習内容などを追加していく。
特にメモしておいた方が良さそうなことなど。
学習リポジトリは[ここ](https://github.com/Hiro710/PHP_learning)

頑張る🐘~

# PHP

### 共通事項

変数定義、代入、出力などの後ろに「;」を必ずつける。
つけないとエラーになる。

HTML内にPHPタグを挿入
PHPタグの詳しい説明は[公式サイト](https://www.php.net/manual/ja/language.basic-syntax.phptags.php)へ。

“`

“`

PHPではechoタグの省略形も使える

“`
// 以下は と同じ意味

“`

### PHPを外部ファイルから読み込みたい時

非常によくまとめられている。

https://qiita.com/nogson/items/db15d6e35433154fce8e

ほか参考

https://kanda-

元記事を表示

Laravelでドメイン別にルーティング

Laravelでドメインごとにルーティングを分ける方法は、公式ドキュメントにて丁寧に説明してあります。
その上で、実際に開発していく中で必要になった応用的な内容をまとめます。
## 基本形
https://readouble.com/laravel/10.x/ja/routing.html

公式ドキュメントから抜粋して追記
“`php:routes/web.php
Route::domain(‘{account}.example.com’)->group(function () {
Route::get(‘user/{id}’, function (string $account, string $id) {
// accountとidのように、パスとドメインからパラメータを取得できる。
});
Route::post(…
// ルーティングルールを列記していく
});
“`
この例の場合、例えばECプラットフォームやブログサービスのように、アカウントごとにサブドメインを分けたりする時に便利に使えるかと思います。
サブドメインの

元記事を表示

RUN pecl install imagickでインストールできないからソースからインストール

先日までpecl install imagickができていたのに出来なくなって
昔とった杵柄(phpize configure make make install)で頑張ってみた

## 駄目だったパターン

Dockerfile
“`Dockerfile
FROM php:8-apache-bullseye
〜〜
RUN apt install -y imagemagick libmagickwand-dev
RUN pecl install imagick
“`
“`
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/PrettyPrinterAbstract.php
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/Token.php
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/compatibility_tokens.php
#17 15.94 PHP-Parser-5.0.0alpha3/phpstan-baseline.neon

元記事を表示

【TypeScript × PHP】ReactとLaravelで経路共有アプリを作った話

# 🚙 はじめに
ReactとPHPを用いてwebアプリを開発したので制作記録として解説を掲載したいと思います.また筆者はフルスタック開発初心者であるため,至らぬ点があるかと思われますがご了承くだいさい.

# 🚙 自己紹介
初めまして.趣味でweb開発を勉強している273*(ツナサンド) / Kei.と申します.関西の大学生です.最近はフルスタック開発を行なっています.初心者です.

# 🚙 完成品
以下のリンクからwebアプリにアクセスできます.

https://github.com/273Do/Route8

[サイトURL](URL)

最終調整につき公開停止中

# 🚙 制作に至った経緯
私は趣味で友人とサイクリングやドライブによく行くのですが,経路を選定する際に他の人の経路を参考にしたいと感じたことが多々ありました.「経路を共有できるサービス」は既に存在しますが,私調べではただ経路を共有するだけのものばかりでした.そこで,独自のサービスを開発したいと思いました.走行時の感想や天候,移動手段なども併せて投稿できるようにすることで,より詳しく経路を選定することができるように

元記事を表示

【PHP/Slim4】1.軽量フレームワーク(Slim4-skeleton) 環境構築

軽量な機能のWeb APIを作成したい
Laravelのようなフルスタックではなく、軽量なフレームワークで簡単に構築したい
ということで、Slim4を使ってみたときのメモ書き

## Step1.Slim4-skeleton環境の構築
git bashなどcomposeが使える環境を用意し、以下のコマンドを実行
Slim4-skeletonプロジェクト一式がダウンロードされる
~~~js
composer create-project slim/slim-skeleton [任意のプロジェクト名]
~~~

#### 補足.フォルダ構成について
最上位の親ディレクトリは、上記のコマンドで入力した「プロジェクト名」でフォルダが生成される
|階層1|階層2|階層3|編集|概要|
|—|—|—|—|—|
|app|dependencies.php||〇|ライブラリのコンテナ生成
Twingなどのライブラリをcomposeで追加後、依存関係の解決|
||settings.php||〇|環境変数設定やライブラリの設定
||middleware.php||〇|ライブラリを

元記事を表示

【PHP】ファイルサーバーをPHPで作ってみた

こんにちは、技術猫です。
(初投稿です)

ApacheとPHP(とTailwind CSS)でファイルサーバーを作ってみました。
この記事では、ログイン機能に必要なJSONファイルの読み取りの方法や、
ファイルのアップロード機能の実装方法などを紹介します。
そしておまけで、PHPでのコマンドの実行方法などを紹介します。

:::note info
コード内のコメントアウトされてる部分を読むと意味がわかるよ!
:::

:::note alert
この記事で紹介するコードの一部は、セキュリティが万全ではない可能性があります。
社外などに公開することは推奨しません!
:::

## ソース

https://github.com/DiamondGotCat/tcloud

作成した全部のソースコードはGitHubのreleaseにてMITライセンスで配布しています。

一応ApacheとPHPがあれば使えます。(テスト環境はmacOS)

## ログイン機能
ログイン機能は、最初はパスワードハッシュをPHP内で書いていましたが、
後から出てくる「ユーザー追加機能」という機能が必要なため、

元記事を表示

ローカル環境にLaravelのプロジェクトを作成し、実行するだけ

開発環境はWindows10 Pro(64bit) + PHP 8.1.9 + Composer version 2.4.1。

1 コマンドプロンプト上でカレントディレクトリをCドライブ直下に移動
“`bat
cd c:\
“`

2 コマンドプロンプト上でLaravelのプロジェクトを実行
“`bat
composer create-project laravel/laravel laravel_test_repo
“`

:::note info
インストールが実行されるので、しばらく待機する。
Laravelのバージョンは10.2.9。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739418/f7d8d072-f93f-c0fd-a670-322663e63721.png)

:::

3 インストールが終了したら、コマンドプロンプト上で、プロジェクトのディレクトリへ移動する
“`bat
cd laravel_test_repo
“`

4 コマンドプロンプ

元記事を表示

ブラウザでやり取りできるようにしてみた。

![Animation_xampp_on2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625232/9c1feb9c-b853-c831-814d-665762e559a8.gif)
備忘録 ホームページにも忘れずに書いておくこと。
やったことは、インストールと立ち上げ。
apache のconfigに書き足す事。
textを作り、書き込んで保存すること。
アドレスは忘れないようにメモをしておくこと。
Apach2_4 php8apach2_4.dllのためXampp3を導入。ruby,pythonはapache2.2でも動く。
サーバーアドレスは127.0.0.1 ネームはlocalhost メールアドレスは内緒や。
後は、出たとこ勝負。xamppは警告出すから、フォルダーを作っておく。他もアドレスのため独立させた「-」はプログラムでまいなすに間違わない様に「_(アンダースコア)」わからんことはcopilotiに聞く。
VSCoodo,terapad,Screen To Gif,Visual S

元記事を表示

Amazon SESを用いてHTMLメールを送信する

# SDKをインストールする
“`
composer require aws/aws-sdk-php
“`

# SDKを用いたコード
“`PHP
use Aws\Ses\Exception\SesException;
use Aws\Ses\SesClient;

$ses = new SesClient([
‘profile’ => ‘default’,
‘region’ => ‘us-west-2’, //任意のもの
‘version’ => ‘2010-12-01’
])

//送信対象のメールのリスト
$mailList = [‘aaa@aaa.com’, ‘bbb@bbb.com’];

//HTMlメールのボディ
$html = ‘

AWS Amazon Simple Email Service Test Email

‘.

This email was sent with ‘.
‘Amazon SES

元記事を表示

あなたの作った画像アップローダー、投稿者の個人情報ダダ洩れだよ!

# 自前のアップローダーで起きる問題

## 開発者 ――
インフルエンサーとファンをつなぐコミュニティサイト「Qitter」を作ったぞ!
テキストと画像をPOSTするだけのシステムだから、全部自前の実装で作っちゃったぞ。

![job_programmer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/c22ba9e5-5df0-8906-6dbf-ca44cccc30b2.png)

## 投稿者 ――
今日もQitterに投稿しなくちゃ!
「晩ご飯なう!」

![photo_jidori.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/be600a9a-44fa-5be4-6d0b-353de9dec033.png)

## 閲覧者 ――
「推しちゃんの投稿キター!」
「推しちゃんの投稿した画像は全部保存しちゃうぞ!」

![kanki.png](https://qiita-image-s

元記事を表示

ドメイン駆動設計(DDD)とクリーンアーキテクチャの違いについて覚え書き

[こちら](https://qiita.com/remi_ts/items/cf6d1b3b131db4cd1e79)の記事にも書いた事のおさらいと補足。
その後、サンプルプログラムによる差異を掲載。

# 二つの違い

:::note info
ドメイン駆動設計(DDD)
焦点
DDDは、複雑なビジネスロジックの専門知識をソフトウェア設計の中心に置き、ドメイン内での言語(ユビキタス言語)やモデルを重視

主要概念
* ドメインモデル
ビジネスドメインの概念とその関係をモデル化したもの。
* ユビキタス言語
ビジネスと開発チーム間のコミュニケーションギャップを埋める共通言語
* 集約
関連するオブジェクトの集まりで、一貫性のある変更単位を提供

メリットとデメリット

利点
ビジネス要件と密接に連携した設計が可能。

欠点
* 複雑性
ビジネスロジックが複雑なアプリケーションに適している分、小規模あるいは単純なアプリケーションでは過剰となる。
* 実装の難

【PHP8.3】ランディングページが日本語訳されてなかったので深い悲しみに包まれた

[PHP8.3のランディングページ](https://www.php.net/releases/8.3/)がありますね。

右上のChange languageに日本語がありませんね。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/86f5c968-9802-a18c-fabf-889824e4204f.png)

深い悲しみに包まれたので増やした。

![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/eb7a4ef4-3541-d577-3c91-d537afc638fa.png)

# fork

ランディングページの最下段、`View Source`ってところから[ドキュメントのソース](https://github.com/php/web-php)に進めます。
そこで右上の`Fork`ボタンを押せば、自分のスペースにforkされます。

# branch

作業用にブ

microCMS × PHP レンタルサーバーで構築

## お客さんのレンタルサーバー
クライアントが用意したレンタルサーバーへftp接続している状況でmicroCMSを使用したい、というパターンではJamstack構成を組めない。

PHPが使用できるなら、それが最も手っ取り早くmicroCMSを組むこめる方法かもしれない。

## microCMSが提供しているSDKを利用するべきか
microCMSでは、PHPを使用するためのSDKが用意されている。
しかし、このSDKを利用するためには、composerというPHPのバージョン管理アプリが必要となる。

このcomposerを、**人さまのサーバーに勝手にインストールしてよいはずがない。**

## SDKを利用せず、PHPのみの実装
SDKは使わないでPHPだけで書く方法はあって、それは簡単に実装できた。
一覧ページと個別ページだけなら、2ファイルだけで済む。
実際にはAPIキーの隠蔽は別途行うのでアクセス権限を設定したディレクトリに変数を格納しておく必要があるが、わかりやすく2ファイルだけにすると以下のようになる。

### 一覧ページ

“`archive.php

LaravelでAuth::attempt()には’password’を渡すこと

## 前書き
以下の環境で実行した内容となります。

– PHP 8.2
– Laravel 10.31.0

## 背景
Laravel10を使って開発中、認証機能を使いたいものの既存テーブルにあるユーザー情報を活用したいと思いました。
そのまま利用してもLaravelのusersテーブルを探しに行ってしまうので、既存テーブルに指定すればよいと楽観視していました。
ここでは例として以下のような構造とします。

テーブル名:login
| userID | pass |
|:-:|:-:|
|user1|\\$2y\\$..|

## 変更点

– Models\User のクラスにテーブルを指定
– テーブル構造が異なるのでその他設定を追加

“`
class User extends Authenticatable
{

//既存のログインテーブルを使う
protected $table = ‘login’;
protected $primaryKey = ‘userID’;
//remember_tokenはないためfal

【Laravel】「500エラー」時はDB接続を確認!

## 環境
Laravel v9.5.1 (PHP 8.1.2)
AWS
Fly.io(サーバー)
Supabase(データベース)

## 要約
500エラーはDB接続が上手くいっていないときに起こりやすいので、環境変数などをもう一度確認しよう

## 問題
PHPの練習がてら、Xのクローンアプリを作成。いざFly.ioでデプロイを試みる。
![a08be6b8c3ba304fd4b220099ac40d41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620668/0b2a43b0-85e5-adf8-189e-9b8684449d9f.png)
おっ、ローカル環境通り上手くいったのでは???
という淡い期待もつかの間、ログイン情報を入力後の画面で「***500 | SERVER ERROR***」が表示された。
![80ce346364a562718ad8ec21ffab3e8f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

PHP ファイルの内容をブラウザに表示し、意図的に文字化けさせたい場合

# PHP ファイルをあえて文字化けさせたかったのだが・・・
* PHP ファイルの文字コード:UTF-8
* PHP ファイル内の `` の charset:Shift_JIS

上の条件で、PHP ファイルを表示して文字化けを起こそうとした。しかし、結果は **文字化けせず**。「?」となったが、**原因は単純だった**。

![article4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3601609/6379344d-9326-d514-90e8-57252e82752a.png)

### ブラウザの表示
![article4-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3601609/03e62ce4-fcf9-346d-21e8-8972c3eae71f.png)

### 使用環境
Windows + Apache + PHP
ブラウザ:Google Chrome

# 文字化け

Laravel(PHPのフレームワークの1つ)CSS罠 ※CSSは当たっていても反映されないときがある件

Laravelは個人的に一番CSSが沼でした。

 私は、Progateと↓の本から、HTML&CSSから、プログラミングを始めたのですが、その後、上記の某プログラミングスクールで、PHP、Laravelを中心にプログラミングの学習カリキュラムを受けました。そのときに感じたというか、個人的に沼にはまり溺れたLaravelでCSSで当てるときの注意点をいくつか挙げます。

https://www.amazon.co.jp/%E3%81%93%E3%82%8C%E3%81%A0%E3%81%91%E3%81%A7%E5%9F%BA%E6%9C%AC%E3%81%8C%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8F-HTML-CSS%EF%BC%86Web%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B31%E5%86%8A%E7%9B%AE%E3%81%AE%E6%9C%AC-Capybara-Design-ebook/dp/B09DPJ1JCT/ref=sr_

変数のスコープ JavaScriptとPHPの違い

## JavaScript(letとconst)
1. {}でエリアが形成される
1. 内のエリアで、外のエリアで宣言された変数を扱うことはできる
1. 外のエリアで、内のエリアで宣言された変数を扱うことはできない
1. 外の複数のエリアで同名の変数が宣言されているとき、最も近いものが扱われる
#### 2. 内のエリアで、外のエリアで宣言された変数を扱うことはできる
“`test.js
const a = ‘aaa’
{
console.log(a) // aaa
}
“`
#### 3. 外のエリアで、内のエリアで宣言された変数を扱うことはできない
“`test.js
{
const b = ‘bbb’
}
console.log(b) // ReferenceError: b is not defined
“`
#### 4. 外の複数のエリアで同名の変数が宣言されているとき、最も近いものが扱われる
“`test.js
const a = ‘a1’, b = ‘b1’
{
const a = ‘a2’
console.log(a, b)

【PHP】マイナーフレームワーク「Flow」を試してみる~DB接続&データ登録編~

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/2b9f647d6130a098345f)の記事でマイナフレームワークFlowを使った簡単なAPI作成を行いました。
今回はMySQLにデータを登録するAPIを作成していきます。

# FlowにおけるDB接続処理
Flowはdoctrineと呼ばれるORMを内包しています。
今回はこのライブラリを用いてTBL作成やDB接続を行っていきます。

https://www.doctrine-project.org/

## doctrineでできること
doctrineはORM形式でDB操作を行います。
具体的には以下のような特徴を持ちます。
* SELECTなどのDMLを記載する必要がなく、doctrineで用意されているメソッドを利用してDB操作を行う。
* 事前のテーブル作成が不要。1つのTBL対応するデータクラスを作成し、doctrine のmigrateコマンドを実行することでTBL作成を行う。

# DB接続試してみた
ということで、DB接続を行うAPIを作成していきましょう。
今回は