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

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

PHPプロジェクトのComposerパッケージをRenovateで定期アップデートする

こんにちは! @takoba といいます。 [9日目](https://qiita.com/takoba/items/8f2d231303bcfdfd50bd) に続いて登場です?
改めて自己紹介すると、現在は [コネヒト株式会社](https://connehito.com/) でサーバーサイドを主戦場にしたエンジニアとして働いています。 CakePHP を主に触っています〜〜?‍♀️

このエントリは、 [PHP Advent Calendar 2021](https://qiita.com/advent-calendar/2021/php) の19日目のエントリです。
18日目は @tzmfreedom さんによる [PHPからGoを呼び出す方法](https://tech.yappli.io/entry/php_go) でした。

## 前提

### Renovate is 何
[WhiteSource Renovate](https://renovatebot.com/) は各種アプリケーションプロジェクトの依存パッケージを自動でアップデートするためのツールです。トップペ

元記事を表示

Yii Framework 1.1 の autoload を理解する

これは「[弁護士ドットコムアドベントカレンダー](https://qiita.com/advent-calendar/2021/bengo4com)」 の 19 日目の記事です。

18 日目の記事は @tttttt_621_s さんでした。

# はじめに

弁護士ドットコムには Yii Framework 1\.1(以下、Yii と表現します。) で作られたサービスがいくつかあります。
筆者は普段 Yii で作られたサービスの開発は行っていませんが、[TFD](https://qiita.com/mmorino/items/fd563703c22ccad9648f#tfd) という取り込みで開発に携わる機会があります。

本記事では TFD における [Dii](https://github.com/koriym/dii) の導入、 Yii 上に実装されたコードを解析する取り組みにおいてハマった、 Yii の autoload について解説します。

本記事ではまず Composer の autoload について簡単に紹介します。
その後、 Yii 独自の autoload の仕

元記事を表示

PHP財団にふるさと納税する手順の考察

先日設立の発表された「PHP財団」にふるさと納税する手順を考察してみた。

## PHP財団とは

PHP財団については、こちらの記事が詳しい。
[Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ](https://qiita.com/rana_kualu/items/eaf97694f25a62f93a7e)

## なぜ「ふるさと納税」?

先日の[【PHP8.1リリース記念】PHPerのためのPHP8.1をもっと語り合うPHP TechCafe](https://rakus.connpass.com/event/230475/)
で、「PHP財団に寄付してスポンサーになりたいね」みたいな話題があり、俺が「ふるさと納税したいね」と言ったら「その発想はなかった」と言われたことによる。

勤務中の8割に当たるヒマな時間(中間管理職が本気で管理したらみんな死ぬため)を少し使って考えた。

## ふるさと納税の手順

### 納税する自治体を担ぎ上げる

架空の実在する日本の地方自治体として[埼玉県和光市](https://ceron.jp/url/chaos2

元記事を表示

【PHP】Seleniumで要素が現れるまで待機する方法

SeleniumでWebブラウザの自動操作を行いながらスクレイピングを行う際、ページ遷移後に検索したい要素が現れていないのにFindElementしようとしてエラーが出ました。
一番簡単な解決方法はsleep処理で任意の秒数待機させるだと思うのですが、これだとスクレピングコードを実行するマシンの性能によって待機時間に過不足が発生する可能性が高いです。

# Pythonならできるらしい
しばらくネットの海を漂っていると、素晴らしい記事を見つけました。
[Seleniumを安定稼働させるために行うべき3つの設定](https://tanuhack.com/stable-selenium/)
PythonでSeleniumを利用する際は、指定した要素が表示されるまで待機する関数の他、待機系の関数が多数用意されているようです。
PHPにもこのような関数は用意されているのでしょうか?私は見つけることが出来なかったのですが、もしあれば教えていただきたいです。

# 要素が現れるまで待機する関数を作ってみた
ということで本題に入りますが、今回はPHPで要素が現れるまで待機する関数を作りました。作っ

元記事を表示

Laravel Ray 進化したDumpデバッグデスクトップアプリ

この記事は [ミライトデザイン Advent Calendar 2021](https://qiita.com/advent-calendar/2021/miraito-inc) 18日目の記事です。

[【超入門】Laravelのデバッグ手法22選](https://qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb)の記事でも紹介しています。

## Laravel Ray とは

https://myray.app

有償のデバッグデスクトップアプリです。
おしゃれなUIが特徴です。

Ray自体はLaravel専用というわけではなく他のPHPフレームワークや、JavaScript、NodeJS、Bash、Ruby、Go等の他の言語にも対応しています。

Laravelに導入する場合ですが、PHP拡張機能を別途インストールすることなく [spatie/laravel-ray](https://github.com/spatie/laravel-ray) のComposerライブラリをインストールするだけでokです。

ブレークポイントが張れ

元記事を表示

LaradockでDebugbarのインストールでkilledされる

## はじめに
こんにちは、[@kazuma_dev](https://twitter.com/kazuma_dev)です。

## 前提・実現したいこと
– LaradockでDebugbarのインストール

## 発生している問題・エラーメッセージ
1. `Updating dependencies (including require-dev) killed`されて、Debugbarがインストールできない
2. Debugbarインストール後、表示されない

“`zsh:zsh
~/laravel-sns/laradock $ COMPOSER_MEMORY_LIMIT=-1 composer require barryvdh/laravel-debugbar –dev
Updating dependencies (including require-dev)
Killed
“`

## 試したこと
– `.env`ファイルに`DEBUGBAR_ENABLED=TRUE`を追記

“`php:.env
DEBUGBAR_ENABLED=TRUE
“`

– `Dock

元記事を表示

Conoha WingでWordPressのSSL化ができない?

Conoha WingでWordPressをインストールするとき、SSLの設定をONにした状態で稼働するとCSSやJSが正常に読み込まれなくなった。どうも外部参照URLがhttpのままになっているせいで発生しているようだった。

Conohaのコントロールパネルからいわゆる簡単インストールを行うと上記の現象は発生しない。
手動でインストールした場合にのみ発生している。

いずれのconfig.phpを開いて違いを確認してみることにした。
すると簡単インストールしたほうのconfig.phpに以下の記述を発見。

“`php:config.php
if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’]) && $_SERVER[‘HTTP_X_FORWARDED_PROTO’] === “https”) {
$_SERVER[‘HTTPS’] = ‘on’;
define(‘FORCE_SSL_LOGIN’, true);
define(‘FORCE_SSL_ADMIN’, true);
}
“`
上記のグローバル変数を書き換

元記事を表示

PHPの名前空間を理解する

##結論

* クラスや関数名の衝突を防ぐために名前空間は存在する。
* 名前空間を使用することで違う名前空間同士であれば同じ名前のクラス名や関数名を定義できる。

##名前空間について

>名前空間とは何でしょう? 広義の「名前空間」とは、項目をカプセル化するもののことです。

PHPでは**同じ名前の関数名を使うことはできません。**もし関数名を定義して呼び出すとエラーが起きます。同じ関数名`greet`を2つのファイルに定義して呼び出すとエラーが起きます。

“`php:japanese.php

元記事を表示

reCAPTCHA v3 設置方法

#クライアントサイドの設定
headタグ内にAPI実行スクリプト記載
“recap”の部分はフォームのIDを設定する


フォームタグに関連付け

“`

“`

送信ボタンの設定

“`

“`

#サーバーサイドの設定
PHPにデータ受け取りと条件判定のプロセスを

元記事を表示

DynamoDBでBatchWriteItemを使用する際の注意点

## 概要
DynamoDBを使用していて複数データを保存、削除する際、`BatchWriteItem`を使用することになる。
具体的な使用例と注意点をまとめる。

## BatchWriteItem
データの保存、削除等をまとめて実行できる。
並列で処理されるため、パフォーマンスは上がる。
※レイテンシは低減されるが、消費キャパシティは変わらないのでコストが下がるわけではない。

## 基本的なルール
AWSのdocumentにはこのような記載がある。
[BatchWriteItem – Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)
>The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 16 MB of data,

元記事を表示

paiza(PHP)でよく使う処理をまとめてみた

#はじめに
rubyからスタートして約4か月。最近は次の仕事でよく使われるPHPを勉強している。paizaでよく使われる入力値の仕方をまとめてみました。

###➀入力値の取得
####ruby
“`
hoge = gets
“`
####PHP
“`
$hoge = fgets(STDIN);
“`

###➁空白や改行が与えられる場合
####ruby
“`
hoge = gets.chomp
“`
####PHP
“`
$hoge = trim(fgets(STDIN));
“`

###➂➁を配列で取得したい場合
####ruby
“`
hoge = gets.chomp.split
“`
###PHP
“`
$hoge = explode(” “,trim(fgets(STDIN)));
“`

##おわりに
学習していくうちに追加していこうと思います。
間違っていたらご指摘お願いします(笑)

てかセミコロンのつけ忘れてしまう。。

元記事を表示

【PMMP 4.0】 デスノートを作って運営にいたずらしよう

## 前書き
この記事を読んでおられる方にはサーバーを運営しているという方がいらっしゃると思います。
運営というのはサーバーの保守のみならず、人の管理などもしなければならず、とても大変なことです。
サーバーを運営されてる方々に感謝しきれません。

そんな運営の方々にさらなるストレスを与えるべく、
デスノートを使っていたずらをする方法を伝授していきます。

それでは、対戦よろしくお願いします。

## 動作環境
:::note warn
この環境以外での動作は保証できません
:::

サーバーソフト
PocketMine-MP 4.0.1

PHP
PHP 8.0.13

## 設計
まずは、やりたいことを羅列していきます。

##### 【やりたいこと】
– 本に死因と名前を書く
– 名前が書かれた人を殺す

非常にシンプルですね。
これだけだとプログラム上の流れを把握しにくいので図を作りましょう。

![draft.png](https://qiit

元記事を表示

Laravel x Pestの覚書

# 超絶マイナーキラキラクッキリテストフレームワークPest

## Pestとは?

https://pestphp.com/

[Pest](https://pestphp.com/)とは[Larastan](https://github.com/nunomaduro/larastan)や[Collision](https://github.com/nunomaduro/collision)などでお馴染みの[nunomaduro](https://github.com/nunomaduro)さんが携わっているPHPUnitの代替となる新しいテスティングフレームワークです。

PHPUnitの[Assertions](https://phpunit.readthedocs.io/ja/latest/assertions.html)が使え、更に独自で追加されたExpectationsによってよりシンプルに書くことが出来るようになっています。

### Jestの派生

[Jest](https://jestjs.io/ja/)を使った経験がある人であればPestはほとんどマスターした

元記事を表示

Twitter API v2で大量(<100)のツイートを一度に取得する in PHP

利用者の目線で、Twitter API v2を使ったツイート検索の実装例をPHPを使い紹介します。
一度に100件以上取得する際のPHPの実装例の記事がなかったのでAPI自体の仕様と共に軽く紹介します。(Pythonなどは有る)
Web APIアドベントカレンダーの18日目です!昨日17日目は@sugimomotoさんの[Mock API ライブラリ WireMock を使ってみた](https://www.cdatablog.jp/entry/wiremock)です。

https://github.com/ichii731/php-examples/tree/main/twitter_v2_search

# Twitter API v2検索概要
Twitter API v2とは2020年8月にリリースされた新しいAPIです。
また、ちょうど先月の11月中旬に**v2がデフォルトのAPIになり、v1.1からの移行が推奨されれています**
## 主要PHPライブラリの対応状況
今回は主にPHPでの実装を中心にご紹介します。
最も有名なTwitter APIのライブラリである「Twit

元記事を表示

Symfonyのパスポート

[Symfony Advent Calendar 2021](https://qiita.com/advent-calendar/2021/symfony)の記事です。
Symfony5.1あたりから新しくなった認証に必要なパスポートについて紹介します。

## 新しくなった認証まわり

Symfonyは以前まで主にGuardコンポーネントという認証の仕組みを利用していました。AbstractGuardAuthenticatorクラスを継承したクラスを作成し、そこに認証処理を書いていきました。Symfony5.1から新しくEvent-basedと呼ばれる仕組みが追加され、Symfony5.3からGuardコンポーネントがdeprecatedとなりました。

Event-basedでは、ざっくりと以下の3つのイベントが発火します。

| 名前 | 内容 |
|–|–|
| CheckPassportEvent | メインイベント。パスワードやCSRFなどの認証情報が正しいかチェック |
| LoginSuccessEvent | 認証情報が正しい場合に発火 |
| LoginFail

元記事を表示

【PHP】selenium_チートシート (Facebook/webdriver)

## Webdriver PHP API 使い方
[こちら](https://gist.github.com/aczietlow/7c4834f79a7afd920d8f)を日本語訳したものです。訳が変なところあると思いますが、温かい目で見て頂けると幸いです。

* ブラウザを開く
selenium-webdriverを使ってFirefoxのインスタンスをスタートする

“`php
$browser_type = ‘firefox’
$host = ‘http://localhost:4444/wd/hub’

$capabilities = array(\WebDriverCapabilityType::BROWSER_NAME => $browser_type);
$driver = RemoteWebDriver::create($host, $capabilities);

$browser_type
# :firefox => firefox
# :chrome => chrome
# :ie => iexplore
“`

* 指定された URL に移

元記事を表示

Docker PHPコンテナのタイムゾーンをAsia/Tokyoに設定する 個人メモ

# 目的

– DockerのPHPコンテナのタイムゾーンをAsia/Tokyoに設定する方法をメモ的にまとめる

# 方法

– 下記の一行をPHPのDockerfileに記載する。

“`Dockerfile
ENV TZ=Asia/Tokyo
“`

– `$ docker-compose up -d –build`コマンドなどでビルドし直すと反映される。

元記事を表示

実務でよく使うPHP8系 文法

PHP8がリリースされてから
なんだかんだ実務でよく使う新文法を羅列しました

# 名前付き引数
“`php
function funcA(
int $hoge = 0,
int $fuga = 0,
int $foo = 0,
int $bar = 0,
int $buzz = 0
) {
}

$this->funcA(foo: 20, fuga:3);
“`
https://www.php.net/releases/8.0/en.php#constructor-property-promotion

# コンストラクタでの、プロパティのプロモーション
“`php
public function __construct(
protected Staff $staff,
protected Customer $customer
) {
}

// これだけで下記を書いたことになる
// $this

元記事を表示

macでHomebrewを使ってPHPをインストールする

##PHPコマンドのセットアップ

MontereryOS以降のmacなどでは、デフォルトではPHPはインストールされない仕様へと変更されました。しかし、phpを使用したフレームワークでの制作などで、phpコマンドを使用するシーンは存在します。そういった場合には、自分でphpコマンドを使用できるようにセットアップする必要があります。
本項では、Homebrewというパッケージ管理ソフトを使用し、phpコマンドを使用できるようにセットアップを行っていきます。

##Homebrewインストール

まずは、ソフトのパッケージ管理ができるツールの「Homebrew」をインストールします。
下記のサイトからHomebrewのインストールコマンドを入力してください。

下記のサイトの「インストール」からコマンドをコピーしコマンドライン上で実行してください。
[Homebrew](https://brew.sh/index_ja “macOS(またはLinux)用パッケージマネージャー — Homebrew”)
![Homebrewインストールページ](https://qiita-image-st

元記事を表示

a-blog cmsで現在のエントリーを「関連エントリー」に登録しているエントリーを表示する

これは「a-blog cms Advent Calendar 2021」の、17日目の記事です。

https://adventar.org/calendars/6371

## 前置き

管理しているサイトで、数年前に「今表示しているエントリーが**関連付けられている**エントリーを表示できませんか」と相談されました。言い換えると現在のエントリーを**関連エントリーに登録している**エントリー、ということになります。

そのサイトでは、ブログを横断した関連エントリーを多用していました。ここでは*A→B*とします。
数十件くらい投稿してから、*B→A*の関連付けも追加して相互リンクにしようとしたところ、a-blog cmsの仕様上、エントリーBの編集画面へ行っても「関連付けをしているのがエントリーAである」ことがわからないので、AとBの編集画面を両方表示して作業している、とのことでした。

これは非常に難しいです。a-blog cmsのタグだけでは「関連付けられているエントリー」を調べる方法がないからです。相談された方は「これができたら助かるなー」レベルのご相談だったので、まとまった作

元記事を表示

OTHERカテゴリの最新記事