- 1. 初学者によるGETメソッド、POSTメソッドの違い
- 2. $_SERVER[‘DOCUMENT_ROOT’]に関する考察 そもそもドキュメントルートって?
- 3. 【Laravel × livewire × FullCalendar】動的なスケジュールアプリを作ろう。Part1【予定表示〜作成編】
- 4. 【PHP】strtotime(‘+1 month’)で次月を求める時には注意が必要
- 5. 【Laravel】「配列やコレクションの中身に何が入っているか分からない…」を解決する
- 6. GoToEatで学ぶgoto文
- 7. SQLSTATE[HY000] [1044] Access denied for user 解決方法
- 8. WooCommerce + Stripeで、クレジットカードの利用明細表記をカスタマイズする方法
- 9. PHP isset is_null emptyについて
- 10. Stripeの決済時間を変更する方法
- 11. 【ポエム】レガシィPHPの中でも生き残る
- 12. 正規表現メモ
- 13. 開発環境の構築(VirtualBox + Vagrant + Homestead + Composer)で発生したエラー集
- 14. WooCommerce7.0で「外出先から注文できます。アプリを取得しましょう。」が表示される
- 15. Python,Ruby,PHP,Java,JavaScript,Perlの論理演算子の比較 | プログラミング言語比較
- 16. 関数外の変数の初期値をコール
- 17. AlmaLinux9 + PHP7.4でMongoDBを使う(初期設定及び使い方)
- 18. Python,Ruby,PHP,Java,JavaScript,Perlの算術演算子の比較 | プログラミング言語比較
- 19. 【PHP フレームワーク】学習コストとリターンについて
- 20. PHPファイルをブラウザで確認する方法(VSCode)
初学者によるGETメソッド、POSTメソッドの違い
PHPの学習を進める際に、初めに引っかかり、判別がややこしかったのが「GETメソッド」と「POSTメソッド」の違いです。今回はその違いを調べてみました。コードを書く際に、はっきりと理解して、適切に使い分けられるようになりたいと思います。
GETメソッドとPOSTメソッドの違いを考える前に、前提として「HTTP」、「HTTP通信」について理解する必要があります。
# HTTPとは?
**HTTP**は「HyperText Trasfer Protocol」の略称で、WebサーバーとWebブラウザの間で通信し、情報をやりとりするための通信プロトコルです。
簡単に言うと、インターネットでサーバーとブラウザが通信するときに使われるルール、約束事のようなものです。
### HTTP通信
HTTPを使って通信することを**HTTP通信**と呼びます。
例えば、ホームページを閲覧する時には、**クライアント**である「ブラウザ(Google ChromeやMicrosoft Edge)」から「このページが見たい!」という要求を送ります。これが**HTTPリクエスト**です。
その要求に対して、情報
$_SERVER[‘DOCUMENT_ROOT’]に関する考察 そもそもドキュメントルートって?
Movable Type引っ越しシミュレーションをする際に、$_SERVER[‘DOCUMENT_ROOT’]で引っかかったので考察を記す。
今回は、エックスサーバーで検証してみよう。
まず、ドキュメントルートを表示するためのindex.phpを準備する。
“`
【Laravel × livewire × FullCalendar】動的なスケジュールアプリを作ろう。Part1【予定表示〜作成編】
# 概要
今激アツなLaravelライブラリ livewireとFullCalendarを使ってカレンダーアプリを作っていきます。example的なものなのでカスタムして使ってください。
## 記事の背景
exmaple的なものから逆引きしてドキュメントを読んだりする方が、理解がしやすいのではないか?
と思い、他の人や自分が似たような事をする時に役立つんじゃないかなと思い記述に至りました。## この記事の対象
– livewireとfullcalendarでカレンダー機能を作りたい人
– fullcalendarで機能を作りたいけど使い方とかドキュメントが分からない人## 作る機能
– 非同期更新するカレンダー ← 今回の記事
– 予定の作成 ← 今回の記事
– 予定の編集
– ドラッグ&ドロップでの予定の移動
# 使用するフレームワーク/ライブラリ
– Laravel9
– livewire/livewire
– jsレスで動的な機能が作れる最強ライブラリ
– jeroennoten/laravel-adminlte
– 見た目用に使うデザインパッケージ
【PHP】strtotime(‘+1 month’)で次月を求める時には注意が必要
# はじめに
`strtotime(‘+1 month’)`を使用して下記のようなプログラムを書いた。“`php
$date = “2022-01-31”;
var_dump(date(‘Y-m’, strtotime($date.’+1 month’))); // 2022-03
var_dump(date(‘Y-m’, strtotime($date.’+2 month’))); // 2022-03
var_dump(date(‘Y-m’, strtotime($date.’+3 month’))); // 2022-05
“`
ただ、月の日数関係で次月をうまく取得することができなかった…# 結論
月に必ず存在している1日を指定することで解決!
“`php
// 解決策1
var_dump(date(‘Y-m’, strtotime(date(“Y-m-01”).’+1 month’)));// 解決策2
var_dump(date(‘Y-m’, strtotime(‘first day of next month’)));
“`# 参考文献
https
【Laravel】「配列やコレクションの中身に何が入っているか分からない…」を解決する
## はじめに
PHP(Laravel)ではGoやTypeScript等とは違い配列やコレクションの「**中身の構造や型**」を定義する術がありません。こんな現象に見舞われたことはないでしょうか?
“`php:Purchase.php
class Purchase
{
/**
* @param array $data
*/
public function get(array $data) // ← ?
{
// $dataを使って何かをする処理
}
}“`
**「`$data`…?」**
これは`$data`の命名が抽象的すぎて何を表してるのか分からない、という話ではなく、**`array`と型定義されてはいるもののその中身がどうなっているのか(どういう構造をしているのか)全くわからない**、という問題です。
仮に引数の名前を分かりやすく、さらにアノテーションを詳しくしてみることにします。
“`php:Purchase.php
class Purchase
{
/**
GoToEatで学ぶgoto文
## コード
### GoToEat使った場合
“`php:goto_eat.php
SQLSTATE[HY000] [1044] Access denied for user 解決方法
SQLSTATE[HY000] [1044] Access denied for user
↑
エラーが出たときの解決方法zamppでmysqlのAdminを開く
mysqlのデータベースを開き、中にあるテーブルを全てチェックする
その隣のチェックしたものを:のリストボックスの中になる「テーブルを修復する」を選択する
そしたら、解決した。
友人から解決方法を教えてもらいましたが、どのような仕組みで解決したのかわかる方教えてほしいです。
エラーの意味は権限のエラーということは理解しています。
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の論理演算子の比較 | プログラミング言語比較
プログラミング言語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の算術演算子の比較 | プログラミング言語比較
プログラミング言語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)## 解決に至るまで
まず上記参考サイトを見つけたのでそちらに書いてある下記のことを