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

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

PHP8.3の変更点をチェックしよう

:::note
[ゆるWeb勉強会@札幌 Advent Calendar 2023](https://adventar.org/calendars/8767) 2日目
:::

# この記事について

PHPのバージョン8.3が先日2023年11月23日にリリースされました。このバージョンアップではどのような点が変更されたのか、個人的に気になったところをピックアップして紹介していきます。

https://www.php.net/releases/8.3/ja.php

## 変更点ピックアップ

## 新機能
### クラス定数の型付け

クラス定数に型を書けるようになりました。

“`php:PHP8.3
class HogeClass {
const string A = ‘hoge’;
}

interface HogeInterface {
const string A = ‘hoge’;
}

trait HogeTrait {
const string A = ‘hoge’;
}

enum HogeEnum {
const string

元記事を表示

Notion API+PHP(MySQL)でサークルのWebサイトを構築した話

こんにちは、KadoBloG(カドブログ)のKadoです。
今回は、しばらく前に作成した[サークルのWebサイト](https://engineer-egg.com/)で使用した技術として、Notion APIとPHPを使用してブログ型サイトを構築してみた、という話を解説していきます。

:::note info
本項は[Nihon University Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nihon-u)の6日目の記事になります。
:::

## 簡易自己紹介

– 日本大学工学部 情報工学科 3年
– 趣味がWeb開発 プログラミングは高校3年から
– 本格的に没頭したのは大学2年
– インターン募集しています(小声)
– 元々はHTML, CSS, JavaScript, PHPのフレームワークなし(バニラ)開発
– 現在はNext.jsも使う

## サークルのWebサイトについて

まずは簡単にWebサイトの概要をお伝えします。「起業サークル」は、本学部で2023年3月に落成されたばかりのサ

元記事を表示

いろいろ翻訳、”Translation”

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

## いろいろ翻訳、”Translation”

[Translation](https://symfony.com/doc/current/translation.html)は、翻訳を司るコンポーネントです。

### インストール

“`shell
composer require symfony/translation
“`

### 翻訳

翻訳を行うには、元の文と翻訳文をセットにした翻訳用のリソースを読み込ませます。

“`php
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;

$translator = new Translator(‘ja’);
$translator->addLoader(‘arr

元記事を表示

rectorとrector-laravelでLaravelをアップデートしてみる

こんにちは。Fusicの@hkusaba です。
[Fusic Advent Calendar 2023](https://qiita.com/advent-calendar/2023/fusic) の2日目ですね。

今回は、rectorとrector-laravelを使用して、PHP・Laravelをアップデートしたお話をします。
弊社内で行っている開発合宿で触る機会がありました!いい会社です。

## はじめに

### rectorとは何ぞや

公式がこちらです。

https://github.com/rectorphp/rector/tree/main

rectorには2つの特徴があります。 (Google翻訳です。

> 1. 即時アップグレード
Rector は、PHP 5.3 から 8.2 へのアップグレードと、 Symfony、PHPUnit、Doctrineなどの主要なオープンソース プロジェクトをサポートするようになりました。手間をかけずに常に最新の PHP とフレームワークを使用したいですか?
Rector を使用して即時アップグレードを処理します。
> 2

元記事を表示

YouTubeとローカルPCの混合メディアを同時に再生できるハイブリッドメディアプレイヤーを作ってみた

私はPCで作業しているとき、バックグラウンドで音楽を再生していることがよくある。このときに再生する曲は、アルバムCDからインポートしたオーディオメディアのときもあれば、YouTubeの動画だったりとさまざまだ。メディアの再生環境のバリエーションが多様なため、ローカルのオーディオソースを再生する場合はPCにインストールされているメディア・プレイヤーを使い、YouTubeの動画の場合はブラウザからアクセスしている。それはいたって一般的な方法ではあるのだが、PC上のメディアとお気に入りのYouTube動画を別々にしか取り扱えない不自由さには常々不満があった。

──両方のメディアを一元管理して、プレイヤーを切り替えることなく再生できればなぁ──

この要望を満たすソリューションは既に世の中にはいくつか存在している。それは例えば「CherryPlayer」とか「FreeTube」などだ。ただ、前者はWindowsでしか使えないうえ、私のPCでは挙動が安定せずエラーが頻発して使いものにならなかった。一方、後者はインストールしてみたもののUIが煩雑でとても使いづらく、これも継続的に使い続けるのに

元記事を表示

PHPイベントの世界

こんにちは! PHP Advent Calendarです! メリークリスマス!

ところで、みなさんはIT技術イベントに参加したことはありますでしょうか。世の中ではさまざまな趣旨・さまざまな規模のイベントが開催されています。PHP界隈においても、やはりいろいろなイベントが企画されているところです。

この記事では、このようなイベントについて紹介いたします。

## 勉強会・ミートアップ

「**勉強会**」は参加者間で技術的な知見を共有して交流ことを趣旨とするイベントです。小学生が放課後に宿題を持ち寄ったり中高生が集まって試験対策をするような会とはニュアンスが異なります。

集まって何をするのかというのも会によってさまざまです。特に参加者を公募せず社内や仲間うちで集まって本を読むという会も多くあるでしょうし、[ワールドカフェ]という参加者ひとりひとりが対話することが中心の会などもあります。

[ワールドカフェ]: https://world-cafe.net/about/

参加者を一般公募するスタイルのイベントで多いと思われるのが、参加者のうちの数名が発表者として資料を準備して、参加

元記事を表示

Laravelのジョブ・キューで詰まった話。

2023年も12月になります!1年間は本当にあっという間ですね。
今年初頭ですが、業務でメール送信対応を担当した際にLaravelで詰まった箇所がありまして
かなり個人的な話になりますが今回まとめさせていただきます。:bowling:

## 実装したかった内容
とあるwebアプリ(ビジネス上のマッチング系)を開発していました。

通知をユーザーのアドレスへメール送信する機能があり、アドレスが間違っていたり変わっていたりなどで送信エラーが発生した場合に、エラーメッセージや送信先情報などの情報をユーザーの権限ごとに作成したエラー専用テーブルに格納する実装をしたかったです。

仮にユーザーの権限を`company`・`user`とし、格納するエラーテーブル名を`company_mail_error_infos`・`user_mail_error_infos`テーブルとします。
“`
– company_mail_error_infos
– user_mail_error_infos
– …
– …
“`
今回の実装にはLaravelのジョブ・キュー機能を使うのが良いと考えました

元記事を表示

foreach前のifによる空確認は不要なのか

先程、コードレビューで指摘が入っていて、ふと気になったので。

# コード指摘部分と指摘(だいたいこんな感じ)
“`php
if (!empty($tags)) {
foreach ($tags as $tag) {
// 処理
}
}
“`

**指摘**
> この下にあるのがforeachなのでこのif($tags)は不要だと思います

割りと臆病なので、変数の存在確認やら空確認を冗長に挟んでしまう癖があった。

冗長なものと必要なものに関しては大体理解しているつもりであるものの、これに関しては必要なものという認識だった。
10年弱、foreach前の配列の空確認に関しては毎度おこなっていたので、「あれこれいらないの?」と結構カルチャーショック。

「foreach前 if 存在確認 不要」でggってもピンとくる記事がないので、ChatGPTに聞いた。

# ChatGPTに質問してみた

>質問「foreach前にifで配列の空確認するって無意味?」

>ChatGPT
>
>foreachの前にif文で配列の空確認を行うことは、一般的には無駄ではありません。

元記事を表示

PHP メモ

## PHPについて
### PHP
– PHPとは動的にWebページを生成することができるサーバーサイドのスクリプト言語です。
– [公式サイト](https://www.php.net/)
– [GitHub](https://github.com/php)

### Composer
– Composerは、PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理シス テムである。
– [公式サイト](https://getcomposer.org/)

### XAMPP/MAMPP
– XAMPPは、インストールすることで完全無償で利用できるApacheディストリビューションです。
– Webサーバ + データベース + Perl, Php, Rubyを一括してインストールすることができます。
– XAMPPは、Windowsで使用できます。
– MAMPPは、MacOSで使用できます。
– [公式サイト](https://www.a

元記事を表示

PHPでGoogleログインの実装をする方法(2023年11月時点動作)

本記事は、[めんどい太郎の Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mendoitarou_first_calendar) 1日目の記事です。

# はじめに

この記事は初心者が書いています。

皆さんは普段、様々なサービスにどのようにしてログイン・登録していますか?

今話題のPass Keyを使っている方や、登録したIDとパスワードを使用する人など様々だと思います。

そんなログイン・登録であると非常に便利なのがSNSログインです。

今回はそんなSNSログインの一つである「Googleでログイン」の実装方法をご紹介いたします。

正直、Googleのドキュメントはめちゃくちゃわかりやすいので[公式ドキュメント](https://developers.google.com/identity/gsi/web/guides/overview?hl=ja)を読んで見ることをおすすめします。

案外仕様変更が行われていたりします。

:::note info
2023年にGoogleログインが非推奨になり、

元記事を表示

PHPUnitでよく使うMockeryまとめ

# 背景

業務でモックを使用する機会があったのと、以前Mockeryを使用する際に苦戦したこともあって、業務で使用するMockeryの記法をまとめようと思いました。

# モックとは

モックとは、ある機能に似せたメソッドなどを簡易的に用意できるものです。中身を実装していない状態でも見かけだけ似せたものを簡単に作成できます。

※mock up = 実物に似せた模型という意味

PHPで使用できるモックにはMockeryというライブラリがあります。

## モックを利用できる場面

「メソッドAの中で、メソッドB、Cを使用している。しかし、メソッドBを実装していない段階でメソッドAのテストを行いたい」といった場面で使えます。

この例でメソッドBのモックを用意していない場合は、メソッドAのUnitテストを行った際にメソッドBが用意されていないことでエラーが発生してしまいます。

“`php
class A
{
public function a(int $number)
{
if ($this->b($number) && $this->c($num

元記事を表示

コマンドを実行、”Process”

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

## PHP内でコマンドを実行 “Process”

[Process](https://symfony.com/doc/current/components/process.html)は、PHP内でサブプロセスとしてコマンドを実行します。PHPでは、`exec`などでコマンド実行できますが、このコンポーネントはOSにより異なる引数のエスケープ処理を行ってくれます。Symfony以外でも使えます。

### インストール

“`shell
composer require symfony/process
“`

### サブプロセス実行

指定のコマンドで`Process`オブジェクトを作って、 `run()` を呼び出すことで実行できます。

“`php
use Symfony\Component\Process\Exception\ProcessFailedE

元記事を表示

郵便番号から住所を自動入力する時に極力ライブラリに振り回されない実装をしたい時の話

ラノベみたいなタイトルになっちゃいましたが許してください。

# 郵便番号から住所を自動入力させたい
そんな事よくありますよね。世の中には便利なAPIがたくさんありますが、有料だったりAPIの制限があったり、Formの形式にしか対応していなかったりで、実際のサービスに組み込む時に制限を受けてしまう事が多々あります。既に作ったformに良い感じに当てはめる方法を共有します。

## 前提
厳密なデータ管理は前提としません。もし厳密にデータを管理する必要があるのであれば、公開されている情報を取得し、自前でDBを用意して更新なども自分でやる必要があると思います。
郵便番号に対して紐づけられる住所は1:1ではないので、そこも考慮してのデータ設計が必要です。
今回想定している用途としては、ディレクターから「郵便番号を入力したらそれっぽい住所が補完される機能って欲しいよねー」って言われた時ぐらいのフランクなやつです。

## 使うもの
– https://github.com/yubinbango

以上です。

## 使い方

とにかくサンプルコードをクレ!って人のためにフロントっぽい感じのもの

元記事を表示

ChatGPTを使って自動FAQ回答Chatbotを作ってみた

## はじめに
はじめました。BitStar CTOの山下です。
BitStarでは主に160万件のデータを取り扱う日本最大級のソーシャルデータベースを開発しています。

## 開発の背景
2023年で一番盛り上がった話題といえばChatGPTではないでしょうか?
おそらくエンジニアの方であれば一度は触ったことあるのではないでしょうか?
BitStarでも社内でCPOの出水より「BitStar Labo」というワーキンググループを立ち上げまして、社内で勉強会を実施していました。エンジニアはもちろん映像企画・編集や営業の方も参加してChatGPTを活用したディスカッションを行っておりました。
大きく2つのチーム、画像生成系のCreationチームと、文章生成系のTransformationチームに分かれて週次で意見交換を行ってきました。
今回はその中でも実際に社内運用を始めたChatGPTによる自動FAQ回答Chatbotを作りました。

**BitStar Labo Kickoff 資料**
Laravelでcsvファイルを簡単インポート

## はじめに
選択したCSVファイルがインポートされるまでの流れを簡単に作ってみたいと思い、必要最低限で実装。

## テーブル定義
| カラム | 型 | CSVファイル読み込み対象 |
| —- | —- | —- |
| id | bigint(20) | |
| name | varchar(255) | ○ |
| age | varchar(255) | ○ |
| address | varchar(255) | ○ |
| created_at | timestamp | |
| rpdated_at | timestamp | |

### 今回使うcsvファイル
![スクリーンショット 2023-11-29 22.22.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634151/45383963-be4f-4bef-0e80-d7a707793b09.png)

## 実際の動き

### インポート画面
![スクリーンショット

元記事を表示

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)

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

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

元記事を表示

OTHERカテゴリの最新記事