PHP関連のことを調べてみた2021年12月08日

PHP関連のことを調べてみた2021年12月08日
目次

PHP laravel dd()メソッドで簡単にデバッグする

# 目的

– PHPで`dd()`メソッドを用いて簡単にデバッグする方法をまとめる

# 環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Big Sur(11.6) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.11 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする](https://qiita.com/miriwo/items/cd54077aad7e139cf518) |
| Laravel バージョン | 8.X

元記事を表示

ZOOM APIを利用してミーティングのスケジュールを編集する (準備編)

前書き

社内のシステムからZOOMでスケジュールを編集する必要があったため調査内容をまとめておきます。
執筆時点(2021-11-23)ではこの内容で実現できました。
(スケジュールを編集する部分はこちら)

事前準備

APIキーを取得する

ZOOMのマーケットプレイスからAPIキーを有効にします。
有効にする手順等は以下の記事が詳しいです。

https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed

有効にした後、APIKeyやAPISecretが表示されるので保存しておきます。
![zoom.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2314585/74fd2796-42e2-4f48-9b6e-98897c9d3f58.png)

JWTの用意

元記事を表示

ZOOM APIを利用してミーティングのスケジュールを編集する (スケジュール操作編)

前書き

ZOOMのページにログインせずにスケジュールを編集する必要があったため調査内容をまとめておきます。
執筆時点(2021-11-23)ではこの内容で実現できました。
今回はZOOMのAPIからスケジュールの編集を行います。(準備する部分はこちら)

APIでスケジュールをいじる

スケジュールを作成する

スケジュールの作成もユーザ情報を取得した時と同じようにリクエストを投げてjsonのレスポンスを受けるだけです。
スケジュール作成は`https://api.zoom.us/v2/users/ユーザのID文字列/meetings`に設定内容をPOSTします。
今回は以下のようなjsonにしましたが詳細に設定をいじれるので公式のリファレンスを参考にユースケースに合わせて調整できます。
2022年の1月15日 15:00を設定する例

公式:https://marketplace.zoom.us/docs

元記事を表示

DockerでPHP/laravelの環境を作る時によく使われるコマンド pecl install や docker-php-ext-install について

`pecl install` も `docker-php-ext-install` も拡張モジュールをインストールするコマンド。
インストールできる拡張モジュールの種類が違う。

## pecl install

### PECLとは

>PHP Extension Community Libraryの略。
PHP言語を拡張するためのモジュールレポジトリ。C言語で記述されており、PEARよりも高速に動作する。ネットワーク経由でライブラリをインストールすることができる。

https://www.weblio.jp/content/PECL

C言語で記述されているPHP拡張モジュールがPECL

Dockerfile に記述する時は下記のように記述

“`Dockerfile
RUN pecl install xdebug && \ #インストール
docker-php-ext-enable xdebug #有効化
“`

`pecl install`した拡張モジュールは有効化する必要があります。
有効化で一般的な方法は2つあります
① php.ini に設定
extens

元記事を表示

【PHP】配列型の整数キャストは論理キャストの結果が使われている

配列型の整数キャストでハマったので、そもそもキャストがどのように行われるのか調べました。
参考になれば幸いです。
[公式ドキュメント 型の相互変換](https://www.php.net/manual/ja/language.types.type-juggling.php)

# array(array())の整数型は1
“array(array())“を整数へ型キャストした結果は“1“です。

“`php
var_dump((int) array(array())); // int(1)
“`

# どうして1になるの?
## 整数への型キャストについて
公式ドキュメントでは「booleans」「浮動小数点数」「文字列」「NULL」からの変換について説明された後、下記の警告が記述されています。

[公式ドキュメント 整数への変換](https://www.php.net/manual/ja/language.types.integer.php#language.types.integer.casting)より
>警告
整数への変換の動作は、他の型については定義されません

元記事を表示

ハッシュ化のソルト(salt)とペッパー(pepper)についてまとめた

## はじめに
業務で上司が書いたハッシュ化のコードの中に**”salt”**という記述がありました。
**「パスワードに塩をかけるとはどういうこと?」**と思い、調べてみたら意外と奥が深かったのでまとめました。
![塩](https://media.giphy.com/media/l4Jz3a8jO92crUlWM/giphy.gif “塩”)

## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者
– ログインまわりを初めて実装する人
– PHPのmd5関数を使ってる人

## 結論
パスワードの漏洩対策に使用されるハッシュ化ですが、**ソルト(salt)やペッパー(pepper)**という手法を用いるとより安全に運用できます。

| 不安 | まぁまぁ安心 | 安心! |
|:—:|:————-:|:————:|
| ハッシュ化のみ | ハッシュ化+ソルト(salt)| ハッシュ化+ペッパー(pepper) |

## ハッシュ化とは
ハッシュ化とは、**元

元記事を表示

Amazon Linux 2のPHP 7.4環境に、OPcacheを導入する

# What’s?

PHPソースコードのコンパイル結果をキャッシュして、高速化するにはOPcacheということで。

PHP 7.4環境にOPcacheを導入してみます。

# OPcache

OPcacheについてのドキュメントは、こちら。

https://www.php.net/manual/ja/book.opcache.php

「はじめに」に説明が書かれています。

> OPcache はコンパイル済みのバイトコードを共有メモリに保存し、PHP がリクエストのたびにスクリプトを読み込み、パースする手間を省くことでパフォーマンスを向上させます。

https://www.php.net/manual/ja/intro.opcache.php

このOPcacheを導入してみます。

# 環境

今回の環境は、Amazon Linux 2です。

“`shell
$ cat /etc/os-release
NAME=”Amazon Linux”
VERSION=”2″
ID=”amzn”
ID_LIKE=”centos rhel fedora”
VERSION_ID=”

元記事を表示

CloudVisionAPIのPHPクライアントライブラリでOCR処理の状態を非同期で取得したい

# 前提

– PDFファイルのドキュメントをデータ化するPHPアプリケーションを作りたい
– Google Cloud Vision APIの公式PHPクライアントライブラリをcomposerでインストール
– google/cloud-vision
– google/cloud-storage(PDFファイルや変換後のjsonデータはCloud Strageに保存されます)

# 状況
Cloud Vision APIでOCRを使いたいシーンでは、多くの方がGithub上の公式サンプルコードを参考にすると思います。

https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/vision/src/detect_pdf_gcs.php

上記コードではasyncBatchAnnotateFilesメソッドでOCRを実行しています。
解析結果はGoogle Coud Strageの指定パス以下にjsonファイルとして出力されます。

OCR処理自体は非同期で実行されますが、このサンプルではpollUnt

元記事を表示

PHPでスクレイピングのさわりをやってみる

スクレイピングといえばPythonやRubyを思い浮かべる人も多いが、なんかPHPでもできるらしいのでやってみる。

##今回やってみること
PHPによるWebページのスクレイピング、具体的には、
私のポートフォリオサイトから、貼り付けているリンクを引っ張ってくるというものを作ろうかなと。
スクレイピングとかってサーバーへ与える負担だったり、法律面で規制されていることがあるので、今回は自分のサイトを使うことで他人へ迷惑をかけるリスクをなくしてやる。

“`
$ php -version
PHP 7.3
“`
とは言ってもライブラリが何個かあったのだが、調べて一番上に出てきたPHPQueryはなんか古いらしいので今回はphp-html-parserを使ってみる。
>https://github.com/paquettg/php-html-parser

##実際にやってみる
ということでcomposerを使って実行するファイルと同じ階層にインストールする。

“`
$ composer require pa

元記事を表示

LaravelでJSONのValidationを行う簡単な方法

## 目的

JavaScriptのSPAアプリからPOSTでJSONをサーバーに送るときに、そのJSONの内容でCRUDを行う前に確認する。

## 試して失敗したこと

Illuminate\Http\Requestのvalidate関数で下記の通りやってみたら、

“`php
$validate = $request->validate([
“title” => [“required”, “unique:posts”],
“contents” => [“required”],
]);

“`

JavaScriptアプリ側にValidationが失敗した時に、自動でHTMLのページが送られていたようで、Errorの内容をJSONにて送ることができなくなっていたのです。

## 解決法

Illuminate\Support\Facades\Validatorを使い、自前でValidatorを作ることにします。

“`php
$validator = Validator::make($request->all()

元記事を表示

Amazon Linux 2のPHP 7.4環境に、xhprofを導入する

# What’s?

タイトルとおり、xhprofをPHP 7.4に導入したいなと思ったのですが。

xhprofに関する情報は、もうメンテナンスさあれてないよ、forkがあるよ、代替があるよ等いろいろあってよくわからなくなり、最終的にはPECLでインストールするようにしました。

よく見かけた情報は、こちらについてのものですね。

https://github.com/tideways/php-xhprof-extension

# xhprof

xhprofは、PHPのプロファイラーです。

https://www.php.net/manual/ja/book.xhprof.php

PECLではこちら。

https://pecl.php.net/package/xhprof

プロファイリングの機能と、Web UIが含まれており、プロファイル結果を確認することができます。

最新バージョンは2.3.5で、現在メンテナンスされているリポジトリはこちらになります。

https://github.com/longxinH/xhprof

今回は、こちらを使っていきましょう。

#

元記事を表示

ブラウザーで録音、アップロード

こちらのプログラムを参考にしました。
[addpipe/simple-recorderjs-demo](https://github.com/addpipe/simple-recorderjs-demo)
![recorder_dec07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/7b700597-c7a0-8e3b-aa12-319630d92cec.png)

PHP ファイルを改造して、work_dir に wav ファイルが保存されるようにしました。

フォルダー構造

“`text
$ tree
.
├── index.html
├── js
│   └── app.js
├── README.md
├── style.css
├── upload.php
└── work_dir
└── 2021-12-07T03:01:49.170Z.wav
“`

インストール方法

“`bash
git clone https://github.com/addpipe

元記事を表示

ログの仕込み方について考えてみる

最近案件で学んだのでまとめてみます。

PHPやRubyで開発していると、「データが無い」エラーとか、シンタックスエラーとかよしなに出してくれますよね。

そこで、ログ周りを実装する場合の自分なりの観点をまとめていきたいと思います。

※例として、LaravelのLogファサードを使用しています。適宜読み替えていただければと思います。

## そもそも何でログが必要なの?
これは、人それぞれ観点があると思いますが、僕は主に「トラブルシューティング」の際に役立つと考えています。
想定外のエラーが起きた時、「誰が」「いつ」「何をしようとして」「結果どうなったか」
ということをログから特定することによって、エラー原因の解消に役立ちます。

## ログ出力(修正前)
“`php
public function createAction(){
// フォームから入力された内容を取得(省略)

try {
// Articleテーブルにレコード登録
$article_repository = new ArticleRepository();
$article_re

元記事を表示

PHPでのTwilio自動音声の実装方法と日本語の読ませ方のコツ

##はじめに
株式会社じげんの前川です。
リフォームマッチングサイト リショップナビの開発を担当しています。

今回は、phpで[Twilio](https://cloudapi.kddi-web.com/)を使った自動音声機能について書いていきます。
Twilioでは、取得した電話番号にwebhookを設定することで、APIを使って、音声を流したり、別の電話番号に転送をしたりすることができます。
今回は、電話がかかってきた際に、自動音声を流し、発信者の入力した郵便番号を取得するということを行いましたので、その実装方法と自動音声としてテキストを読み上げてもらうときに工夫した点について書いていきます。

##環境
・PHP7.2以上
・Twilio Sdk をインストール済み(twilio/sdk: 5.24)
※Laravel5系を使用しております

##前提
* Twilioのアカウントを所有
* (電話可能な)電話番号を取得済み

##目次
1. 概要
2. 実装 
3. Twilio側の設定
4. 最後に

##1.概要
下図の構成を実装します
![Twilio概要.png]

元記事を表示

【超入門】Laravelのデバッグ手法22選

## はじめに

[Laravel Advent Calendar 2021](https://qiita.com/advent-calendar/2021/laravel) 7日目の投稿です。
枠があまっていたので1日目に続いて7日目も投稿します。

他の記事のタイトルを見ると応用的な内容が多かったのでLaravel初心者の方向けにおすすめのLaravelデバッグ方法(tips)を22個ご紹介します。

思ったより数が多くなったので、1つ1つは掘り下げず概要と簡単な使い方をご紹介します。
公式ドキュメントや参考リンクも載せているので詳細はそちらを見てください。

どれか一つでもLaravel開発のヒントになれれば幸いです。

## 1. PHP標準関数の紹介

### 1.1. var_dump

[var_dump](https://www.php.net/manual/ja/function.var-dump) 関数はPHPの標準関数です。
指定した変数をダンプします。

“`php
var_dump($value);

var_dump($value1, $value2, $

元記事を表示

「PHPエンジニアにおくるCakePHP3 予習入門」を読み終えて

### 目的
初めてのPHPを勉強にて、こちらの著書でCakePHPに触れたので振り返りもかねて。
【2021/09/01】
転職先で古めのCakeを使うとのことなので3系でやったが予想以上に古く、実際使っていたのはCake2.xだった…。
###著者
辛島信芳

###対象読者(抜粋)
>・次の案件で、CakePHP3を使っているので予習をしておきたい
>・今後のために、あらかじめCakePHP3を学習したいと思っ て いる
>・スピーディーにPHP開発の出来るフレームワークに興味がある

~~KindleUnlimitedで無料だったので~~
私の境遇も上記に当てはまるので本書を選びました。

本書ではCakePHP3を対象としていますが、私の環境は最新を使いましたのでCakePHP4.2.7となっています。

第1章:CakePHPの導入~第2章:基本的なディレクトリ構成

特筆すべき内容はあまりないので省略。
強いて上げるなら`本書はすでにPHPの環境は整っている前提`という点くらい。

第3章:簡単チュートリアル

・MySQLサーバを使用する

元記事を表示

Laravel Eloquentとクエリビルダの違いを整理してみた

## はじめに
株式会社じげんの藤井です。
リフォームマッチングサイト リショップナビの開発を担当しています。

今年度の6月に現場配属され、半年ほどLaravelを使った開発に携わってきたので、
混同しがちなクエリビルダとEloquentとの相違点をまとめます。

これからLaravelを触り始める方の参考になれば幸いです。
## クエリビルダとは?
LaravelのDB関連の機能として代表的なものに、クエリビルダがあります。

こちらはPHPを使ってSQL文を構築する仕組みで、メソッドチェーンでSQL関連のメソッドを並べてSQLを発行できるので、SQLがわかる人には直観的に理解しやすいという特徴があります。

具体的には、以下のように使用します。

“`PHP
use \Iluminate\Support\Facades\DB;

$posts = DB::table(‘posts’)
->select(‘id’, ‘author_id’)
->where(‘author_id’, ’10’)
->orderBy(‘created_at’, ‘desc’)
->g

元記事を表示

その女の子との出会いはあまりに唐突で、衝撃的でした。

初めまして、趣味でwebエンジニアをやってるニートこと、もがたろうです。

今日で左第五中足骨骨折歴1ヶ月になりましたので記念に記事を書いてみました。

僕がどのように骨折したのかは最後に書いていますので、気になる方は大変お手数ですが、文末までスクロールをお願いします。
気にならないって?
ですよね。

初めましてと言いましたけども、なんやかんやで実は左第五中足骨骨折する2年9ヶ月前に1つ目の記事を書いています。
でも骨折して生まれ変わったので初めましてです。

自己紹介として僕のスキルレベルを公開します。
松葉杖歴: 10ヶ月、骨折歴: 10ヶ月、左外果剥離骨折: 9ヶ月、左第五中足骨骨折: 1ヶ月、片松葉: 6ヶ月

うーん、まだまだ初心者って感じですね。骨折してから雨の日に1度転んで悶絶しましたしね。精進します。。
最近は松葉杖で歩くときに、肩甲骨を寄せて加速する、エクストリームバーストという技の練習しています。

さてさてところで、閑話休題。
みなさんはこんなコードを見てどう思うでしょうか。
CakePHPのビューです。

ニートの癖に昨日は夢の中で仕事していました。
バリデ

元記事を表示

Laravel 保守性向上の為、キーワード検索機能をTrait(トレイト)にまとめて何度も使い回す

# はじめに
検索機能をモデル内に記述すると中々ファットモデルになっちゃいます。
業務で管理画面を実装する時に同じ様な検索機能を5つくらい作ってしまった事もあり、保守性や可読性が悪くなります。

そんな時に便利なのがPHPの機能であるトレイトです!!
トレイトを使えば、どのモデルでも同じ処理を使う事が出来ます。その為、色々なモデルに共通した処理を書いている場合はその処理をトレイトに記述する事で、すっきりしたコードを書く事が出来ます!!

これから検索機能をきれいにまとめますが、実務経験半年程度ですので、何か間違ってたり他にいい方法があれば教えてください!

# 目次

1. [テーブル設計](#テーブル設計)
2. [検索フォーム](#検索フォーム)
3. [コントローラー](#コントローラー)
4. [Traitsフォルダとファイル作成](#traitsフォルダとファイル作成)
5. [Traitsファイル](#Traitsファイル)
6. [Postモデル](#Postモデル)
7. [使い回す](#使い回す)

OTHERカテゴリの最新記事