PHP関連のことを調べてみた2022年10月28日

PHP関連のことを調べてみた2022年10月28日

WooCommerce + Stripeで、クレジットカードの利用明細表記をカスタマイズする方法

WooCommerceでStripeを利用したクレジットカード決済を実施している場合、顧客のクレジットカード明細には、通常以下のどちらかが記載されます。

– Stripeアカウントで設定した「明細書表記」
– WooCommerce管理画面で設定した「明細書表記」

![スクリーンショット 2022-06-13 14.49.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/6424ff30-b40d-b975-d4fb-fe7489522618.png)

ですが、提供したい商品やサービスによっては、「特定の商品では、別の表記を記載したい」場合もあります。

今回は、WooCommerceのフックを利用して、明細書表記をカスタマイズする方法を紹介します。

## 明細書表記のカスタマイズは、`wc_stripe_generate_create_intent_request`フックを利用する

`wc_stripe_generate_create_intent_request`フックは

元記事を表示

PHP isset is_null emptyについて

# 概要

– PHPの`isset()`や`is_null()`や`empty()`について曖昧だったので自分のためにまとめる。(この手の記事は先人の皆さんがたくさん記載頂いているが自分の勉強のためにも自力でまとめてみる。)

# `isset()`

– PHPのドキュメントには下記のように記載されている。

::: note info
変数が宣言されていること、そして null とは異なることを検査する

– その変数が宣言されていて、かつ、nullではない場合trueを返す。それ以外の場合falseを返す。
– 複数の引数が渡された時、全て「その変数が宣言されていて、かつ、nullではない場合」のみtrueを返す。
– また、ドキュメントには下記のように記載されており、`isset()`は関数ではなく言語構造(`if`や`for`とかと同じでPHPにもとから組み込まれている処理)である。

::: note warn
これは、関数ではなく 言語構造のため、可変関数 や 名前付き引数 を用いてコールすることはできません。

– 例を下記に記載する。

元記事を表示

Stripeの決済時間を変更する方法

## ■目的
毎日決済が成功しているかを朝 9:30ごろに確認するため、その時間までにその日の決済が行われるようにしてほしい。
10/18 21:00:00 に決済されるものを -> 10/18 09:03 に決済されるようにしたい。

## ■補足
Stripeは基準の時間がUTC時間に準じて操作となるため、日本時間0:00〜08:59に決済される取引については、月初の決済日の場合、日に応じて決済日が変更される可能性があります。
https://tech.stmn.co.jp/entry/2021/01/28/093349

そのため、0:00〜08:59 に決済されるようにする候補がなくなり、9時過ぎに変更するということになりました。

## ■始めに考えたこと
無料期間を設定し、無料期間の終了のタイミングを決済日の9:03 に設定する方法を検討しました。

## ■問題点
しかし、この場合、カスタマーポータルをお客様が開いた時にプランが無料期間中という表示がなされます。
また、更新した時点で0円のインボイスが発生し履歴に残ります。
これでは、サブスクリプションを契約しているクライ

元記事を表示

【ポエム】レガシィPHPの中でも生き残る

先日行われたカンファレンスでは相変わらず「[静的解析をCIに取り入れてみました!」や「レガシィシステム改善してるぜ!」というようなキラキラした発表が多かったように感じます(カンファレンスというのはそういう場なのでそれはそう)。少し前のPHPerKaigiを含めマイクロサービスやモジュラモノリスのようなアーキテクチャの話やフィーチャートグルでシステムを安定させるようなマクロ的話も印象的でした。

しかしながらリアルワールドなPHPの現場には未だにレガシーな環境も数多く存在することは言うまでもなくまた事実。
PHPConference2022の[『PHPの今とこれから』](https://fortee.jp/phpcon-2022/proposal/e67d6f03-ecc5-4fc8-a794-db8097b645af)という発表恒例のアンケートでははとっくにEOLを過ぎているPHP5系のシェアが少なくなったものの、未だに20%以上を占めているということからも、様々なしがらみからバージョンアップができずにレガシー化しているプロジェクトがまだまだ相当数あるのだなぁということが感じられました

元記事を表示

正規表現メモ

よく使う正規表現のメモ

PHP

“`php
$h = ‘Google‘;

if(preg_match(‘!([\\s\\S]*?)!’, $h, $m)) {
print_r($m); // ==> Array ( [0] => Google [1] => https://google.com [2] => Google )
}

“`

Nodejs

“`Javascript
let h = ‘Google‘;
let result = /([\s\S]*?)<\/a>/.exec(h);
if(result){
console.log(result);
/*
[
開発環境の構築(VirtualBox + Vagrant + Homestead + Composer)で発生したエラー集

## 前提
OS:Windows10 64bit
PHP:7.3
VirtualBox:6.1.38
Vagrant:2.2.6

どうも。Qiita初投稿のPHP初心者エンジニアです。
先日環境構築を行ったのですが、Homestead? Composer?となりながら進めてだいぶ時間を費やしました。
備忘録がてらタイトルにある通り、途中ではまったエラーを載せていくので誰かの参考になればうれしいです。

## 目次
第1章 Composer installでエラーが発生した場合
第2章 502:Bad GateWayが発生した場合

## 第1章 Composer install

まずcomposerとはPHPのパッケージ管理システムです。
開発にはさまざまなライブラリが必要になってきますが、公式サイトにアクセスしzipファイルをダウンロードしローカルに展開することが求められ、何を使用するかは個人の裁量に依存しがちです。
パッケージ管理システムはそれらを個人の裁量に依存せずに導入できる仕組みを提供します。

ぜひ欲しいですよね。さっそくインストールをしましょう。
“`rb
Comp

元記事を表示

WooCommerce7.0で「外出先から注文できます。アプリを取得しましょう。」が表示される

## 概要
WooCommerce をバージョン7.0に引き上げると、購入完了時に管理者に送られてくるメールの末尾に「外出先から注文できます。アプリを取得しましょう。」という文言が挿入されます。

![スクリーンショット 2022-10-21 194014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1261074/796083a6-c32e-64a7-dd29-ce84a7e3863a.png)

「アプリを取得しましょう」をクリックするとスマホ用の WooCommerce アプリの紹介ページに遷移するので、おそらく宣伝のためのものだと思われます。

購入者宛のメールに表示されるわけではないですし、こちらの業務の妨げになるものでもないですが、鬱陶しいことには変わりないので表示しないようにしてみました。

## 環境
WordPress:6.0.3
WooCommerce:7.0.0
PHP:7.4

## 原因
今回上記の文言が追加された原因は、WooCommerce のプラグインファイル “`

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの論理演算子の比較 | プログラミング言語比較

Qiita > プログラミング言語の比較

プログラミング言語Python,Ruby,PHP,Java,JavaScript,Perlの論理演算子の比較

# Python

https://qiita.com/dondondon/items/0b7de45078bee0ba2b13

# Ruby

https://qiita.com/yusuke_blog1026/items/ab33bdfa495597d04f0b

# PHP

https://qiita.com/tsukishimaao/items/b4a2f30c89ea16ef6eb1

# Java

https://qiita.com/takahirocook/items/748990882f2de7a630a1

# JavaScript

https://qiita.com/TakeshiNickOsanai/items/e180777619f1a49f30e5

# Pe

元記事を表示

関数外の変数の初期値をコール

関数外の変数
“`ruby:qiita.php
$number = 1
“`

をstatic(静的)変数を使用する

“`php:qiita.php
function test(){
static $number;
$number++;
}
“`

とすると最初にコールされたときのみ初期値を代入

別の処理で`$number`が変わっても関数外で宣言した初期値が参照される

# 参考
https://www.php.net/manual/ja/language.variables.scope.php

元記事を表示

AlmaLinux9 + PHP7.4でMongoDBを使う(初期設定及び使い方)

# はじめに

[MongoDBの公式サイト](https://www.mongodb.com/docs/drivers/php/)に書かれている内容を実際に試してみました.
* MongoDB PHP Driver(mongodb-1.14.1)の導入
* MongoDB PHP Library(mongodb-php-library-1.13)の導入
* PHPから実際に書き込み/読み込み

なお,以下の記事の通り,AlmaLinux9にMongoDBをインストール済みの状態を前提とします.

https://qiita.com/THaruka/items/a8376c089f1b70277b75

また,以下の記事を参考にLAMP環境を構築済みの状態です.

https://qiita.com/heimaru1231/items/3786e6a2b0d548bd76f1

### 前提条件
* AlmaLinux 9.0
* Apache 2.4.51
* PHP 7.4.32
* MongoDB 6.0.2

## MongoDB PHP Driverの導入
### 1. 必要

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの算術演算子の比較 | プログラミング言語比較

Qiita > プログラミング言語の比較

プログラミング言語Python,Ruby,PHP,Java,JavaScript,Perlの算術演算子の比較

# Python

https://qiita.com/G-Rape/items/cd3f2f284ba990164564

# Ruby

https://qiita.com/SUZUKI_Masaya/items/eeea6cd36cc265d2dbf0

# PHP

https://qiita.com/mzmz__02/items/8bfbcf2cd48d9e9f2806

# Java

https://qiita.com/morioheisei/items/63088c61e8234dc1f7f5

# JavaScript

https://qiita.com/uhyo/items/cc92a553059274d85403

# Perl

https://perlzemi.c

元記事を表示

【PHP フレームワーク】学習コストとリターンについて

「プログラミングを始めたは良いけど、どこから勉強したらいいのか?」
「PHPのフレームワークは多いけど、どれを習得する?」

プログラミングを始めたばかりだと、そもそも何から手を付けたらいいか分からない状況ってあると思います。
PHPは一通り理解したけど、その次マスターすべきフレームワークを何にするか。。。

かくいう、私も当時は分からなかったので、とりあえず何でも覚えてきました。
(色々試してみて、cakePHP→Laravel→WordPress→Zend→Symfony→EC-CUBE→AWSと覚えてきました笑)

メンターや師匠など業務面、勉強面でもサポートしてくれる人がいると、困らないです。
しかし、そういうサポートしてくれる人がいない時は、自分で調べ続けるしかありません。
そんな時に、次勉強するものを選ぶ時の考え方を書き残します。

## 次に勉強するものの選び方
人生はゲームと同じです。
**何かをする時には、「コスト」が必要であり、今あるもの(リソース)から、どうやって支払い、レベルアップをするかです。**
ポケモンだったら、限られたお金でわざマシンやタウリンなどの強く

元記事を表示

PHPファイルをブラウザで確認する方法(VSCode)

## はじめに
PHPファイルをブラウザで確認する方法を先程解決出来ましたので、記録としてここに残します。

##### 補足情報
Mac(OS 12.5.1 Monterey)
PHP 8.0
Chrome
注)MAMPなどは使用していません。

## 経緯
HTMLのサイトをコーディング中にVSCodeの拡張機能のLive Serverで.phpの拡張子のファイル(index.php)をブラウザにて確認しようとしたところフォルダ一覧の画面になってしまい、確認出来なかったため調べ始めました。
注)index.htmlなら問題無くLive Serverで見れる。

## 見れなかった原因
調べたところ、Live Serverはサーバーサイドの言語を処理する機能を持っていないということが分かりました。(PHPはサーバーサイドの言語)

参考サイト:[Visual Studio CodeでPHPファイルをブラウズできません
](https://teratail.com/questions/268757)

## 解決に至るまで
まず上記参考サイトを見つけたのでそちらに書いてある下記のことを

元記事を表示

スマートホームデバイス的な何かを作る

# 1.はじめに
 前回の[OAuth 2.0 Server PHP と Google OAuth2.0 Playground を接続する](https://qiita.com/SSaitou/items/26fc907aa1ef9c5dba88 ) でOAuth2.0サーバーが使えるようになったので、本稿ではデバイスのような振る舞いをするものを作って行こうと思います。正確にはデバイスを管理するスマートフォンアプリ的なものです。デバイスがあるかのような応答をさせようというものです。あくまでもテストとして。

 流れとしては以下の通りです。
1. アカウントリンクを作成する
2. フルフィルメントを登録する
3. モックアップを作る
4. グーグルホームアプリに登録する

 フルフィルメントは要するにAPIですが、とりあえず応答らしきものをするモックアップを作成し、デバイスとして登録されることを本稿の目標にします。
# 2.アカウントリンクを作成する
 アカウントリンク実装についての概要は[ドキュメント](https://developers.google.com/assistant/s

元記事を表示

#1293 – Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

Xfreeのサーバーを使ってPHPファイルとphpMyAdminを連携してデプロイに上記のエラーが発生しました。

原因としてはXfreeのmyadminのバージョンが低いため上記のエラーが発生しました。

Xfreeのバージョン(phpmyadminのバージョン)
5.0.95

localhostのバージョン(phpmyadminのバージョン)
5.1.0

原因
phpMyAdiminのバージョンが古いため、CURRENT_TIMESTAMPが1つしか使えないため

対策
CURRENT_TIMESTAMPを1つにする。
php MyAdminの構造をクリックして
タイプカラムを「datetime」へ全て変更する。
デフォルト値カラムを1つは「TIMESTAMP」残りは「null」に変更する。
他にテーブルがある場合も同様の対応をする。

元記事を表示

LaravelでEager Loadingしていたつもりが、まったくしていなくて泣いた

普段LT会のネタ用に取っておいたりするのですが、**感情が爆発**しているので産地直送でお届けします。

追記:**未解決**でしたが**解決**しました
# 泣くことになった経緯
趣味で「[かどで日記](https://kadode.usuyuki.net)」という日記サービスを運営していて、そこでのお話です。
## 戦犯となるページ
指定した月の日記を表示するページです。何の変哲も無いですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621241/6a234746-e8b1-1a70-4ff8-5f2af5bf0974.png)

## 環境
Laravel:9系
PHP:8.1

**今回の登場人物となるテーブル**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621241/0b3cc0fd-4f10-cc63-d2d

元記事を表示

【WPテーマ】ページ名|サイト名のtitleタグを出力する

## 概要

WordPressテーマの開発において、titleタグを次の形式のように出力する方法を紹介する。

“`html

サイト名

ページ名|サイト名
“`

## 課題

サイト名:テックブログ

ページ名:【WPテーマ】ページ名|サイト名のtitleタグを出力する

WordPressテンプレートタグのwp_titleは次の文法である。

“`php

“`

titleタグ内にページ名|サイト名を出力するためwp_tit

元記事を表示

PHP traitとは

## traitとは

– php5.4以降で導入
– 単一継承言語(PHPなど)でコードを再利用するための仕組みの一つ
– メソッド群を異なるクラス階層にある独立したクラスで再利用が可能

– **多重継承などの問題を回避することができる**
– **クラスと似ているがいくつかの機能をまとめるだけももの**
– **継承クラスと同様にインスタンス作成は不可**
– 継承しなくても他クラスでも使用可能
– 優先順位
– **現在のクラスのメソッド>トレイトのメソッド> 継承したメソッド**

[PHP: トレイト – Manual](https://www.php.net/manual/ja/language.oop5.traits.php)

## 使い所

– 機能をパーツとして使いたい場合
– Interfaceと一緒に使うことでデフォルトの実装を提供したい場合
– 機能をグルーピングすることによって、可読性を向上させたい場合

## 使い方

– 定義クラス

“`php
trait トレイト名 {
function メソッドA() {
// 処理
}

元記事を表示

【PHP】PHP 基礎

## 概要
PHPの基本文法についてまとめました!
ご指摘等あればぜひお願いいたします。

## はじめに
“`index.php

“` というようにすることでphpとして出力する事ができます。

## echo
phpの中でもかなり重要な`echo`について解説します。
“`index.php

“`
上記のように`echo`の後に半角スペース区切りで値を指定すると、値が出力されます。phpでの出力というのはHTMLへ書き込むということです。

そして、phpは文の終わりに必ず`;`セミコロンをつけてください。
phpでは、シングルクォーテーション`”`やダブルクォーテーション`””`で囲まれた値は、`文字列`というデータとして扱われます。ちなみに文字列というデータは、`string型`と呼ばれます。

プログラミングにおいて`型`という概念は非常に大切なので後に解説します。

## 変数
変数というのは、データを一時的に保存できる箱というイメージです。
`

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの比較演算子の比較 | プログラミング言語比較

Qiita > プログラミング言語の比較

プログラミング言語Python,Ruby,PHP,Java,JavaScript,Perlの比較演算子の比較

# Python

https://qiita.com/G-Rape/items/cd3f2f284ba990164564

# Ruby

https://qiita.com/yusuke_blog1026/items/ab33bdfa495597d04f0b

# PHP

https://qiita.com/yukachin0414/items/cfb02cbbdd31a52902e8

# Java

https://qiita.com/takahirocook/items/748990882f2de7a630a1

# JavaScript

https://qiita.com/miriwo/items/e9ca0a2779ed2c8117c3

# Perl

https://p

元記事を表示

OTHERカテゴリの最新記事