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

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

OpenID Connectの実装について

## はじめに
この記事ではOpenID Connect認証の流れと、PHPを用いたアクセストークンおよびIDトークンの取得、公開鍵の検証方法について説明します。
OpenID Connectは、OAuth 2.0をベースにした認証プロトコルであり、
ユーザーが認証情報を直接提供することなく、第三者アプリケーションに安全にアクセス権を委任できる仕組みです。

## OpenID Connect基本的な処理の流れ
※Service Aは開発中のサイト
※Identity Providerは認証を行うサービス(例:Google、Facebookなど)

“`mermaid
sequenceDiagram
participant User
participant Service A
participant Identity Provider

User->>Service A: ログインボタンをクリック
Service A->>Identity Provider: 認証リクエストを送信
Identity Provider->

元記事を表示

【Stripe決済】laravel + JavaScriptでStripeクレジットカード決済をやってみた

## はじめに
決済機能を実装するにあたり、StripeAPIを使用して実装することになった。

今回の記事はstripeAPIに関しての決済備忘録になる。
忘れないようにメモしとく。

## ざっくりな環境
+ Docker
+ Laravel11
+ php8.3
+ MySQL8.0
+ JQuery
+ HTML
+ CSS
+ Bootstrap

## 流れ
まず流れから把握しておく。

+ **フロント側でPaymentMethodIDを作成する**
Stripe(多分他の決済機能も一緒)はクレジットカード情報を送信したり、取得したりするのはセキュリティ的に良くないため、カード情報を直接保存せず、トークン化された情報を使って、セキュリティを確保するらしい。これにより、PCI DSS(Payment Card Industry Data Security Standard)に準拠した安全な方法でカード情報を管理ができるようになるみたいやな。
ここでまあまあハマった。

+ **フロント側で作成したPaymentMethodIDを使用してサーバー側が決済**
上記記

元記事を表示

Perlプログラミング入門:初心者のための15ステップガイド

# はじめに

こんにちは!今日はPerlプログラミング言語について学んでいきましょう。Perlは強力でフレキシブルな言語で、特にテキスト処理が得意です。この記事では、15の章に分けてPerlの基礎を丁寧に解説していきます。各章にはサンプルコードも用意しましたので、ぜひ実際に試してみてくださいね。

## 第1章:Perlの基本

Perlは「実用的抽出・報告言語」(Practical Extraction and Report Language)の略称です。1987年にラリー・ウォールによって開発されました。

“`perl
#!/usr/bin/perl
use strict;
use warnings;

print “こんにちは、Perlの世界へようこそ!\n”;
“`

## 第2章:変数とデータ型

Perlには3つの主要な変数型があります:スカラー($)、配列(@)、ハッシュ(%)。

“`perl
my $name = “太郎”;
my @fruits = (“りんご”, “バナナ”, “オレンジ”);
my %ages = (“太郎” => 25, “花子” =

元記事を表示

Laravel/PHPの日付で起こり得るバグ4択!何個解けますか?

## あるある!日付計算がうまく行かないバグ

さっそくですが、このコードの中のバグが分かりますか?
“`
public function searchBookingsInWeek(CarbonInterface $start)
{
return BookingModel::query()
->whereBetween(‘date’, [$start->startOfWeek(), $start->endOfWeek()]);
}
“`
### 答え

**※1問目だけはネタバレ対策させていただきます。**
次からはスクロールの調整でご協力お願いします。バグ解決を検索している方になるべく不便なく届くため次から答えを隠しません。

クリックで正解を表示

正解は、Carbonのオブジェクトはミュータブルなせいで探してる期間が実質$start->endOfWeek()から$start->endOfWeek()になっちゃいます。

修正としては簡単

元記事を表示

CSVのパースで空文字とnullを区別する

## 背景
業務でCSV取込機能を作っていて、なめてかかっていたら詰まったので備忘録として残します

## 課題
以下のようなCSVを取り込む必要があり、
“`csvs
“dummy”,””,,dummy
“`
結果として、
“`json
[
“dummy”,
“”,
null,
“dummy”,
]
“`
を得たいとのこと
え…CSVはそもそも文字列しか扱えないものだと思ってた…`null`も考慮せなあかんの…

## PHPで頑張る
PHPには`fgetcsv`と`str_getcsv`があるけど、

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

https://www.php.net/manual/ja/function.str-getcsv.php

どっちも以下のような結果になる
“`php
str_getcsv(‘”dummy”,””,,dummy’);
/*
[
“dummy”,
“”,
“”,
“dummy”,
]
*/
“`
公式のオプション見て色々試したものの、全然上手くいかな

元記事を表示

Laravel10とJavaScriptのFetchAPIでいいね機能を実装する【非同期処理】

## 本記事の内容
記事に対するいいね機能の実装方法です。認証ライブラリであるBreezeがインストールされている前提となります。また、fetchAPIを使用した非同期処理の実装をします。

Breezeインストールとその他の準備

“`
composer require laravel/breeze –dev
“`

“`
php artisan breeze:install blade
“`

“`
npm install && npm run build
“`

### 使用する技術
・Laravel10.*
・MySQL
・JavaScript
・CSS
・Font Awesome
・Breeze
・Vite(Laravel Breezeを使用している人はデフォルトで用意されています)

### アプリ画面はこちら

![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486141/

元記事を表示

クソ雑魚のワイ、Symfonyのコードリーディングしてみた②

前回の記事に続きまして、Symfonyのコードリーディングを続けていきます。
以下は前回の記事です。

https://qiita.com/JonyTask/items/ce96c4afafd409d2b4ef

## Requestクラスについて
本記事で主に進めていく箇所は、以下のパスです。
./src/Symfony/Component/HttpFoundation/Request.php

### クロージャについて
このクラスのコードを読んでいくと、おそらくcreateRequestFromFacoryという関数が重要であることが分かります。

複数の関数において返されるインスタンスはこの静的関数を用いて作成されているようです。
この関数は以下のコードです。

“`
private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], arr

元記事を表示

Laravel Bladeテンプレートの基本とディレクティブの活用法

## はじめに
Bladeテンプレートエンジンは、Laravelでのフロントエンド開発において非常に重要な役割を果たします。Bladeは、PHPコードとHTMLを簡潔かつ効率的に混在させるための強力なツールであり、テンプレートの再利用性やコードの可読性を大幅に向上させます。

### Bladeテンプレートの重要性
1. テンプレートの継承によるコードの再利用性
Bladeの最大の強みの一つは、テンプレートの継承機能です。例えば、ウェブサイトの全ページに共通するヘッダーやフッター、ナビゲーションバーなどを一つのレイアウトファイルにまとめ、各ページの個別の内容だけを別ファイルで管理することができます。これにより、一貫性の確保と開発効率の向上に繋がります。

2. Bladeディレクティブによる簡潔なコード記述
Bladeは、@if、@foreach、@extends、@include などの独自ディレクティブを提供しています。これにより、複雑なPHPロジックをテンプレートに埋め込む必要がなく、コードが簡潔で理解しやすくなります。

3. セキュリティの向上
Bladeテンプレートエン

元記事を表示

OpenAI Assistants APIをPHPで実装する

– PHP 8.2.12
– “guzzlehttp/guzzle”: “^7.9”

OpenAI Assistants APIをPHPにて実装してみます。

HTTPクライアントはguzzleを使用します。Laravelでのシステムにて利用することを想定しています。

APIキーは、**OPENAI_API_KEY**という名前で環境変数に入れてあります。**phpdotenv**を使ってます。

“`bash
$ composer require guzzlehttp/guzzle
$ composer require vlucas/phpdotenv
“`

### Assistantの作成とファイルのアップロード

Assistantの作成とファイルのアップロードはダッシュボードから行います。

![スライド1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638071/ef0dd51d-cc88-e487-af8a-a5507048cb9a.jpeg)

![スライド2.JPG](htt

元記事を表示

OpenAI ChatGPT APIをPHPで実装する

– PHP 8.2.12
– “guzzlehttp/guzzle”: “^7.9”

OpenAI APIをPHPにて実装してみます。

HTTPクライアントはguzzleを使用します。Laravelでのシステムにて利用することを想定しています。

APIキーは、**OPENAI_API_KEY**という名前で環境変数に入れてあります。**phpdotenv**を使ってます。

“`bash
$ composer require guzzlehttp/guzzle
$ composer require vlucas/phpdotenv
“`

### 通常パターン

“`php:chatgpt1.php
load(

元記事を表示

JavaとPHPの文法の違い

## はじめに
JavaとPHPは、どちらも広く使われているプログラミング言語ですが、その文法には多くの違いがあります。本記事では、JavaとPHPの基本的な文法の違いを中心に解説します。これから両言語を学ぶ方や、どちらか一方の言語に慣れている方に役立つ内容となっています。

## 1. 変数の宣言と型指定

### Java
Javaでは、変数を宣言する際に必ずデータ型を指定します。これは、Javaが静的型付け言語であるためです。

“`java
int num = 10;
String text = “Hello, World!”;
“`

### PHP
一方、PHPでは変数にデータ型を明示的に指定する必要はありません。PHPは動的型付け言語であり、変数の型は実行時に決定されます。

“`php
$num = 10;
$text = “Hello, World!”;
“`

## 2. クラスとオブジェクトの定義

### Java
Javaは純粋なオブジェクト指向言語であり、すべてのコードはクラスの中に配置されます。以下は、クラスとオブジェクトの基本的な定義です。

`

元記事を表示

What is a PHP Developer?

In internet improvement, a PHP developer plays an essential position. PHP, a popular server-facet scripting language, is the spine of many dynamic websites and web programs. If you have ever wondered what a PHP developer does, what talents are required, and the way to become one, this text is for you.

What is PHP?
PHP (PHP) is an open-source server-aspect scripting language designed commonly for net improvement. It is embedded inside HTML and is used to manage dynamic content, databases, consul

元記事を表示

AstroでPHPを出力する

AstroでWordPressテーマを作成する際に使用した小物類の備忘録。

## PHPタグ出力コンポーネント

slotの中身をエスケープせずに `` の間に展開するだけの単純なもの。

“`tsx:PHP.astro

const php = await Astro.slots.render(‘default’);

`} />
“`

– 参照: [set:html (Astro Docs)](https://docs.astro.build/ja/reference/directives-reference/#sethtml)
– `replace(/\s+/gm, ‘ ‘)` などに通して簡易的にminifyするのもアリ

### 使用方法

PHPタグの代わりに使用する。

“`tsx:index.astro

import PHP from ‘path/to/PHP.astro’;

if($foo):

元記事を表示

自己紹介

# 名前
– はせそん
– 由来は後述
## 経歴
– 最終学歴は専門学校(非IT系)
– 販売業を8年
– 色々あってIT業界へ
– 今に至る
## 何者なのか
– アラサー
– 性別非公開(ご想像におまかせします)
## 趣味
– 競プロ
– AtcoderとPaizaの二拠点
– Pythonで挑んでます
– C++はわけわかんなかった…
– ちなみに学生時代1番苦手な科目は数学でした
– 西武ライオンズの応援
– 推しは長谷川信哉選手(愛称ハセシン)
– 偶然見てた試合で超ファインプレー
「推すぞ!!」と決意し今に至る
– 近くで見た時に「こんなかっこよくて野球上手いとかすげぇな」としみじみ思った
– 走攻守三拍子揃ってる+華がある
– 名前のはせはこの方から来てます
– 現地が遠いので主にDAZNで見てます
– トレーニング
– 前職で腰を痛めがちになったので軽い筋トレをするのが日課です
– 最近筋膜ローラーを買ったよ
– 部屋の置物と化す前に使おう
## 使

元記事を表示

Laravel11を使うためにWLS2のPHPのバージョンを8.2に上げる方法

ローカル環境でLaravelを構築しようとしたときに、PHPのバージョンが低く、Laravel8系が入ってしまった。
使いたいのはLaravel11系なのでそれに合わせてPHP8.2を入れる備忘録になります。

※備忘録なので細かいかもしれません
※間違いがあったらコメント頂けると助かります

## 環境と目的
– WSL2(ubuntu)
– PHP7系からPHP8系に上げる

## 経緯: composer create-projectをしてみたら・・・
ローカル環境で
“`
composer create-project laravel/laravel hoge-app
“`
としてLaravelを構築しようとしたときに、
> Cannot use laravel/laravel’s latest version v11.1.4 as it requires php ^8.2 which is not satisfied by your platform.

というメッセージが表示され、
“`
Installing laravel/laravel (v8.6.12)

元記事を表示

生年月日から年齢を計算する方法を各プログラミング言語で書いてみた

# はじめに

プログラミングでよくあるタスクの一つに、生年月日から年齢を計算することがあります。今回は、各プログラミング言語でこのタスクを1行で実装してみました。どの言語でも、標準ライブラリを活用すれば簡単に計算できます。

## Python
“`python
age = (datetime.datetime.now() – datetime.datetime(1984, 8, 21)).days // 365
“`
Pythonでは、`datetime`モジュールを使い、現在の日付と生年月日との差を日数で計算し、年数に換算しています。

## JavaScript
“`javascript
const age = Math.floor((new Date() – new Date(‘1984-08-21’)) / (365.25 * 24 * 60 * 60 * 1000));
“`
JavaScriptでは、`Date`オブジェクトを利用して、生年月日と現在の日付の差をミリ秒で計算し、年数に換算しています。

===
ミリ秒意識しない記載方法は以下(推奨)
“`ja

元記事を表示

#35 PHP CSVを読み込み、文字化けさせずに配列で出力する

## はじめに
今回はPHPでCSVを読み込み、配列として一行ずつ出力する方法について紹介します。
データのやり取りによく使われるCSVについてや、使用する関数について簡単に解説していますので、最後までご覧いただけましたら幸いです。

## CSVを用意する
### CSVとは
Comma Separated Valueの略で、カンマでフィールドを区切ったテキスト形式のファイルです。
ソフトウェア同士での互換性が高く、手元でのデータの修正ができたりのとデータの管理しやすくなります。

#### sample.csv
“`plaintext
商品名,値段
チョコレート,”100″
クッキー,”200″
ケーキ,”3,000″
“`
先頭行が表の見出し、2行目以降がデータとなります。

#### ダブルクオーテーションの意味
ダブルクオーテーション(“)で囲まれた文字列は、区切り文字があっても区切らず、一つの値とみなします。
例えば『10,000』という値があるときそれぞれ以下のようになります。
“`
『10,000』 → 『10』『000』
『”10,000″』 → 『10,000

元記事を表示

PHPで特定の日付からNヶ月前の月の初日を取得する方法

## はじめに
PHPで日付を操作する際、一見シンプルなタスクでも、特定の要件に合わせると予期しない問題が発生することがあります。この記事では、**特定の日付からNヶ月前の月の初日**を正確に取得する方法について説明します。

## 問題の背景
例えば、今日が8月20日の場合、2月1日を取得することが目標です。
最初は strtotime 関数を使用して、特定の日付から5ヶ月前の月の初日を取得しようとしました。以下は最初に書いたコードです:

“`
$today = date(‘Y-m-d’);
$end_date = date(‘Y-m-d’, strtotime(‘last day of last month’, strtotime($today)));
$start_date = date(‘Y-m-d’, strtotime(‘-5 months’, strtotime($end_date)));
$start_date = date(‘Y-m-01’, strtotime($start_date));
“`
しかし、このコードは特定のケースで問題を引き起こしました。例え

元記事を表示

??null;って何よ。三項演算子も一緒に 備忘録

chatgptさんにいつもの如く質問してたら、回答の一部にこんなのが…
“`
$edit_id = $_POST[“edit_id”] ?? null;
“`
何言ってんだかよくわからなかったので再度chatgptさんに聞き直したら、
「PHP 7.0 で導入された null 合体演算子(null coalescing operator)」
と言われました。簡単に言っちゃば、三項演算子をもっと簡略化したやつ(?)みたい。

## 三項演算子
構文: 条件式 ? trueで出力される値 : falseで出力される値;

例:
“`
echo isset($edit_comment) ? $edit_comment : “”;
“`

## NULL合体演算子
構文: 値1 ?? 値2;
動作: 左側の値が null または未定義であれば、右側の値を返します。左側の値が null でなければ、その値を返す。
例:
“`
$edit_id = $_POST[“edit_id”] ?? null;
“`
That’s all.

元記事を表示

Contact Form 7 で、メールテンプレート上でプルダウンのラベル値を取得する方法

# 結論:`[_raw_{field_name}]` と書く

お問い合わせ種別をContact Form 7で記述すると、以下のような記述になると思います。

“`
[select* type id:type class:form-select include_blank “イベントに関する問い合わせ|event” “IRに関する問い合わせ|ir” “求人に関する問い合わせ|recruit” “ホームページに関する問い合わせ|web” “その他|etc”]
“`

こうすれば、プルダウンの画面上に表示される選択肢では日本語名が表示され、POSTされる値はvalueに入っている英語名を送ることが出来ます。

でも、メールテンプレートでメールタグを使って出力すると、
valueに入っている値のほうが取得されます

“`
お問い合わせ種別: [type]

お問い合わせ種別: ir
“`

こういう場合、`[_raw_{field_name}]`のように書けば、ラベル値のほうを取得できます

“`
お問い合わせ種別: [_raw_type]

お問い合わせ種別: IRに関する

元記事を表示

OTHERカテゴリの最新記事