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

PHP関連のことを調べてみた2022年11月02日
目次

WordPressで、Stripe SDKを使わずにStripeのWebhookイベントを受け付けるAPIを作る方法

Stripeでは、決済や顧客・サブスクリプションの「状態変化」をシステムに通知するために、Webhook APIを登録できます。

![スクリーンショット 2022-10-28 14.48.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/018ffed5-b841-28fa-320a-54c387a64b9b.png)

WordPressにStripeを組み込む際にも、このWebhook APIを実装する必要があります。

ですが、容量削減やComposerの導入が難しい環境などの問題から、StripeのPHP SDKを利用したくないケースも少なからず存在します。

この記事では、WP APIを利用してStripe Webhookのリクエストを受け付ける方法を紹介します。

:::note warn
注意点
本記事で紹介するコードは、GPLv3でライセンスしています。

これは、コードの一部に「[WooCommerce Stripe Payment Gateway](https:/

元記事を表示

レガシーなPJにはPHP Insightsをぶち込むのがいいんじゃない?って話

# はじめに

昨今のPHPシステム開発において、静的解析ツールは当然入っている前提で話が進んでいくような気がする。

私の周りでは**既存のコードが汚く、ツールは昔入れたがほとんど何もチェックしてない**、、、みたいな事例が多く観測されている。(これはフィクションです。

一行のエラーを許さない0か100みたいな静的解析じゃなくて、**少しずつ漸進的に**静的解析を導入していきたい、、、

そんな思いを解決する神ツールを発見。

https://phpinsights.com/

ここからはPHPStan等の他ツールと比較しながらPHP Insightsを紹介する。

# 使用方法

## 環境情報

今回はLaravelでの開発を想定する。

“`shell
$ php -v
PHP 8.1.12 (cli) (built: Oct 28 2022 18:32:20) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.12, Copyright (c) Zend Technologies

$ php artisan -V
La

元記事を表示

MVCモデル

## MVCとは
Model (モデル)
View (ビュー)
Controller (コントローラー)

主に`データの処理`を行うModel、`入出力`を行うView、`ViewとModelを制御する`Controller。

それぞれ役割を持たせた3つのプログラムの総称をMVCと言います。

## 図解
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2851087/70049935-d1fd-20bf-53b2-9f933b9b4a8b.png)

## ルーティング
ルーティングとは、ブラウザから送られてきたURLでMVCのどの部分のどのような処理をすれば良いのかを判断するプログラムです。
ブラウザからリクエストがきたら、そのトップページを呼び出す命令があるControllerを探してくれます。

## Model
Modelはデータの処理や操作を担当するプログラムで、データベースへのアクセスや、データベースを検索し

元記事を表示

関数の型定義を正しく指定していない場合の挙動で少しハマったお話

例として下記のような関数を作ったとします。

“`php

function say_hoge():bool
{
return ‘hoge’;
}

“`

この関数をよんでいる場所で、この関数の結果を見ると、なぜか「1」で返っている。

原因としては、 **関数の返り値の定義を「bool」に指定している** から。
関数内のコードが少し複雑なこともあり(上の見本はシンプルですが)
どっかで真偽値に変わってるのか?としばらく調査してしまっていました。。。
ちなみに、定義をarrayにすると Fatal error: Uncaught TypeErrorエラーになります。こっちはすぐ分かるのですが、
上記の例の場合だと原因が分かりづらいので、型定義はちゃんとしようというお話でした。

__実行例__(outputのところに出力)

型定義をboolにしちゃったケース
![bool.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287983/2e8b39dd-2eb8-3ca8-9191-894f

元記事を表示

Laravel9アプリをDocker+nginxでRender.comにデプロイする方法

# はじめに
Render.com公式でLaravelアプリをデプロイする方法が紹介されていますが、古いバージョン(Laravel 5.8)の方法しか記載されていません。
本記事ではLaravel 9.37.0に対応したDocker+nginxを用いたデプロイ方法を紹介します。
解説したコードはhttps://github.com/ppputtyo/laravel-render-example に置いています。

# Render.comとは
さまざまなアプリをGitHub連携で簡単に運用できるPaaSで、近年はHerokuの移行先として注目されています。
また、[Render.com公式の記述](https://render.com/render-vs-heroku-comparison)によると、実際に次世代Herokuを目指して開発されたことがわかります。
>We’ve built Render to help developers and businesses avoid the cost and inflexibility traps of legacy Platform-

元記事を表示

WordPressの管理画面からアップロードできるファイルサイズ上限の変更

## はじめに
##### info.php・・・サーバーの情報をFTPから知れる(見るだけ、ファイルの中身は以下のみ、ルート直下に配置し、そのURLにアクセスすれば見れる)
“`php:php.info

“`

##### php.ini・・・サーバーの情報を司るマスターファイル
##### .user.ini・・・php.iniの設定を上書きできるファイル(ディレクトリごとに設定可能、ルート直下に置けばその下層のファイルに全て適応される)

## .user.iniファイルの書き換え

以下のコードを書いたファイルをルート直下に設置(ディレクトリ単位に入れれば個別に設定変更も可)
“`php:.user.ini
upload_max_filesize = 200M
post_max_size = 200M
“`

元記事を表示

初心者に学ぶ 脆弱なWebアプリケーションの作り方〜入社時研修で作ったWebアプリの脆弱性についてのコードレビュー3選

# はじめに

実務未経験でWebエンジニアとして入社してからの2カ月で受けた社内研修についての振り返りです。

今回は「Webアプリケーション基礎」の課題について、 **セキュリティ** に関するレビュー内容に焦点を当てて、整理します(レビューで色々と指摘をいただいた、かつ、重要と感じたため)。

結論としては、 **SQLインジェクション対策** や、 **クロスサイトスクリプティング(XSS)対策** 、 **バリデーション** がうまくできていなかった、という初歩的な内容です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/5ba786e9-4294-7e3f-5a45-7a0a89345010.png)

https://wasbook.org/

タイトルは、こちらの徳丸本を意識しています。(最近読了しましたが、今回の記事では直接的に触れていません)

## 記事の目的

同時期に実務未経験でWebエンジニアになって交流している方々(他社の)が、

**「他の

元記事を表示

【PHP】多次元連想配列

## はじめに
PHPの初学者向けに多次元連想配列の使い方などをまとめました。

## 連想配列
PHPには、基本となるデータ型として`スカラ型`があります。

スカラ型は主に4種類
|型 日本語|型 英語|説明|
|—|—|—|
文字列型| string |’Hello’や’こんにちわ’などの文字列|
|整数型| integer |1、2、3などの整数|
|浮動小数点型|float|1.4や3.4などの小数|
|論理型|boolean|TrueかFalse|

このスカラ型だけでデータを表現しようとすると表現力が弱いので、そこで使われるのが複数のスカラ型を組み合わせた`複合データ型`です。
連想配列やクラスのオブジェクトなどがそれに該当します。

例として人間というデータを連想配列で表してみます。
“`php
$human = [
‘name’ => ‘みうら’,
‘birthday’ => ‘5月12日’,
‘height’ => 180,
‘weight’ => 65
];
“`
連想配列は、キーを使って各データに名前をつけ、キーとバリューを対応付けたもの

元記事を表示

Laravel php artisan make:model -a オプションで作られるファイル 一覧

“`terminal:terminal
php artisan make:model -a
“`

# 自動で生成されるファイル

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/09c33e28-6f62-5f62-f232-c2a3580cfa51.png)

“`php:TodoController.php

元記事を表示

今頃VScode + php-debug + xdebugに取り組む

PHPのデバッグって print_r($data);exit();ばかりやってました・・
とても効率悪い・・

なぜ、いままでxdebugに取り組まなかったのかが不思議・・

ということで、xdebugを入れてみました。

最近はDocker,docker-composeで環境を作ることがほとんどですので、その前提で・・

でも、そもそもxdebugってどうやって動いてるのかわからなかったけど
どうも、PHP実行環境にインストールするxdebugは言ってしまえばクライアント。
サーバに当たるのはvscodeにインストールしたphp-debug側になるようです。

ググってるとよく出てくるPort9003は要はphp-debugがListenしているポートを指定し、
xdebug(PHPを実行している)側は、php-debugが起動・ListenしているIP/Portに向けて、
どう振る舞えばいいかを聞く感じだった。

こんな構成
“`
[Mac [vscode/PHP-debug (listen port 9003)]] <-- [Docker container [server P

元記事を表示

VSCodeでPHPのprettierを設定する方法

Run on saveなどいろいろ試したんですが機能しなかったので
シンプルにnpmモジュールをインストールする方法でいけました。

プロジェクト配下のpackage.jsonに下記を記載
“`package.json
{
“devDependencies”: {
“@prettier/plugin-php”: “*”,
“prettier”: “*”
}
}
“`
プロジェクト配下のディレクトリでnpm installを実行

VSCodeの設定で「Editor: Format On Save」をon
VSCodeを再起動でprettierは有効になってます。(htmlを含むphpファイルは効かないようです)

なお、VSCodeの拡張機能の方のprettierは使わないため
その設定Editor: Default Formatterは「なし」のままです。

元記事を表示

ターミナルから「pstorm」コマンドでPhpStormが起動できない

### 背景
毎回PhpStormを開く→プロジェクト選択するの面倒だな、ターミナルから開けば楽じゃん、と調べると
ちゃんとPhpStormを起動する方法があるじゃない。
コマンドは以下
“`
$ pstorm .
“`

結果は、、、、ダメ。。
“`
zsh: command not found: pstorm
“`

whichコマンドで確認すると確かにない
“`
pstorm not found
“`
### 対応
1. PhpStorm > ツール > コマンドラインランチャーの作成を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360742/d88a702f-7fd5-48fc-9aac-8dba0ba05730.png)

2. デフォルトで`/usr/local/bin/pstorm`になっているのでそのままOKを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

WordPressプラグイン(設定画面追加+データ保存)のはじめかた

## はじめに

[こちら](https://qiita.com/TanakanoAnchan/items/f1191c4c008f0a2b7c2e)のページのソースが正しくないため修正しました。細かい説明は元記事をご確認ください。

[0からわかるWordPressプラグイン開発(スッテプ・バイ・ステップ)](https://qiita.com/TanakanoAnchan/items/f1191c4c008f0a2b7c2e)

* 実行時エラーの修正
* 更新後のメッセージ表示を追加

(元記事はWordPress4.9でしたが、 6.0.3で確認)

## 機能
* 管理画面のメニューに項目追加
* 設定画面を追加
* DBに入力した項目を保存する

![img40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276579/e7db2710-beac-f430-fdc5-ca6f8d4a3b7b.png)

## チュートリアル

1. プラグインの雛形を作成する
2. メニュー

元記事を表示

スマートホームデバイスとして操作できるようにする

# 1.はじめに
 前回の[スマートホームデバイス的な何かを作る](https://qiita.com/SSaitou/items/ec0b3a252934a371a82e )でGoogle Assistantに疑似デバイス(疑似アウトレット)を登録することができましたが、操作はできません。正確には、アプリ側で疑似アウトレットのオン・オフ操作はできるのですが、サーバー側ではそのステータスを持っていません。そもそもデバイス操作を扱うEXECUTEインテンツを扱っていないので取り扱えるようにロジックを追加する必要があります。
 また、APIはGoogleから呼ばれた時に動くだけで、サービスとして常駐しない作りを今はしているので、ステータスを変更しても処理が終われば消えてしまいます。常駐化してメモリに格納してしまうのも一つの手ですが、ここでは単純にシングルファイルへ書き込むことでステータスを保存することにします。もちろんこれはシングル実行が前提となりますが、今はモックアップとして一通り動作するものを作ることを優先することにします。
 ただ、ファイルの読み書きでステータスを保存するにしても、g

元記事を表示

実家の創業60年の木材店のDX化を35歳非エンジニアが試みる。

(2022/10/30 初投稿)
(2022/10/31 タイトルと本文を微修正)
(2022/10/31 業務内容に関して詳細追求)

初めまして、都内の実家の家族経営の木材店(従業員5名、全員家族)で事務兼IT担当をしている35歳の非エンジニアです。

![10024904-4113-4D7A-BF67-61DE84427551.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951542/e52fcbbe-171a-68a8-8f6c-be0b12d055d4.jpeg)
実家はこんな感じ。資材置き場です。

私は元々IT系の人材会社で営業やらコーディネーターやらを経験し10年ほど働いていましたが、
実際のプログラミング等には携わったことはなく、UiPathで簡単なワークフローの自動化をした程度でした。

その後、コロナ禍で家業の先行き等も考えた時に、一度2年間ほど携わらせてもらい、ある程度のDX化への貢献とその上での実績をつけて他の業種に転職を…と考えて2021年4月に退職をし現在に至りま

元記事を表示

PHPのDB接続の時に、SQLSTATE[HY000] [2002] No such file or directory.と出た時の対応

# 環境
+ PC:Mac
+ サーバー:ロリポップサーバー
+ 言語:PHP8.1.7

# 内容
ログインフォームなどで、DBに接続しようとすると、
“`
SQLSTATE[HY000] [2002] No such file or directory
“`
というエラーが出た。MySQL接続エラーらしい。

# 解決策
mysql:の後の空白を消してあげる。
“`Login.php
$dsn = sprintf(‘mysql: host=%s; dbname=%s; charset=utf8’, $db[‘host’], $db[‘dbname’]);
“`
消した後
“`Login.php
$dsn = sprintf(‘mysql:host=%s; dbname=%s; charset=utf8’, $db[‘host’], $db[‘dbname’]);
“`
これで無事にmysqlに接続ができ、ログインできました。

# 参考記事
https://xiyuan.jp/php/272/

元記事を表示

Laravel よく使う関数の返り値早見表

## 概要
Laravelを用いて開発をしている際に関数の返り値とその型がどのようなものであるかを毎回調べるのがめんどくさいので、よく使う関数については早見表にしました。
ご参考になさってください。

## 返り値早見表

| 関数名 | 返り値 | 型 |
| —- | —- | —- |
| get | コレクション(中身はModelのオブジェクト) | Illuminate\Database\Eloquent\Collection |
| all | コレクション(中身はModelのオブジェクト) | Illuminate\Database\Eloquent\Collection |
| pluck | コレクション | Illuminate\Support\Collection |
| find | Modelのオブジェクト | 対象のモデルクラス or null |
| first | Modelのオブジェクト | 対象のモデルクラス or null |
| create | 新規作成さ

元記事を表示

デバッグツール Xdebug がおすすめじゃけぇ、いっぺん見てみんさい!(VSCode、Docker、PHP)

# はじめに

PHP の定番のデバッグツールの Xdebug のおすすめの設定や使用方法をご紹介する記事です。
(おすすめしたい気持ちが高ぶり、故郷の方言が出てしまいました。)

![xdebug.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/6739edf1-feb1-92c2-f8ce-789e23798016.gif)

コンソール画面で操作するブラックジャックゲーム開発の際に Xdebug を導入していたので、その環境をサンプルとして使用します。

https://qiita.com/ryamate/items/f77efb0888bb025e5f5b

その環境で Xdebug を起動させて、プログラムを実行したときにどんなことができるかを実際に見ていきます。

## Xdebug とは

**Xdebug** は、 **PHP** の **デバッグツール** です。

https://xdebug.org/

**デバッグツール** は、 **バグの原因を見つける作業を手伝っ

元記事を表示

Brefを使いPHPのコードをLabmdaにデプロイする

# はじめに
はじめまして!
ジョージと申します。
先日PHPで書かれた業務委託先のサブシステムを既存サーバーからLambdaに移行する作業を行いました。
その時にPHPでLambdaにデプロイしている記事が少ないように感じたため、今回の記事を書こうと思いました。

# 前提
今回は[bref](https://bref.sh/docs/)というライブラリを使用するため以下の公式ページの手順を事前に行う
– [イントール手順公式ドキュメント](https://bref.sh/docs/installation.html)
– サーバーレスをインストールする
– AWSのアクセスキーを作成する
– Brefをインストールする

# 初期化
次のコマンドを打ってファイルを作成する
“`cmd
vendor/bin/bref init
“`

以下のように聞かれるため今回は「0」をコマンドで打つ
“`cmd
What kind of lambda do you want to create? (you will be able to add more functions

元記事を表示

PHPでSQL文を生成する関数を作ってみた SELECT編

SELECT文をPHPで簡単に生成しよう

皆さんは苦手な物はありますか?
私は,SQL文が大の苦手です。
しかし,最近は業務の都合でDB周りに触れ始めてきました。
業務で使うとなれば嫌いだの苦手など言ってられませんがSQLは書きたくない,そんな私のような人に向けて
SQL文を生成する関数を作ってみました。
>環境
>PHP : 8.1.6
>MariaDB : 10.4.24
Apache : 2.4.53 (Win64)

テーブル構成

テーブル名:thread

今回は2チャンネルのような掲示板の簡易版を制作をすることを仮定して進めていきます。

SELECT文の生成

SELECTで受け取ったデータを一覧表示するdisp.php

“`php:di

元記事を表示

OTHERカテゴリの最新記事