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

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

PHP returnで戻り値を返す

returnによって返される戻り値について下記の点を常に意識できるように備忘録として。
**returnが出来ること:** 処理結果を関数に戻すことができる。
これによりreturnによって返された関数の処理結果を使いまわすことができる。(変数に代入して他の関数の引数として使う等。)

**returnがされた時に起こること:** 関数の処理はreturnがされた時点で終了する。
例えば下記のような関数function convert()ではreturn①の時点でこの関数の処理は終了となるため、return②は発生しない。(ダブらない。)
“`php

元記事を表示

【WordPress独自関数】「JSON-LD」形式の構造化データ「Article」を実装する関数

SEO対策にもなる「JSON-LD」形式の構造化データ「Article」をWordPressに実装する方法を紹介します。
プラグインを使用すればインストールして管理画面から設定するだけで設置することも出来ますが、今回はプラグインを使わない方法を紹介したいと思います。

## 「JSON-LD」形式の構造化データ「Article」の記述方法

今回は「JSON-LD」形式の構造化データ「Article」の作成方法を紹介します。

“`

↑を見て、『あー、できるかもなー』と思ったのでやってみました。

## --printerオプションで出力をカスタマイズできる

PHPUnitには`--printer`オプションがあります。[ドキュメント](https://phpunit.readthedocs.io/ja/latest/textui.html?highlight=printer#textui-clioptions)には

```
結果を表示するために使うプリンタクラスを指定します。このプリンタクラスは PHPUnit\Util\Printer を継承し、  
かつPHPUnit\Framework\TestListener インターフェイスを実装したものでなければなりません。
```

と記載があります。独自のプリンタークラスを作ればいけそうです。ソースを追っていくとデフォルトでは、`PHPUnit\TextUI\DefaultResultPrinter`というクラスを使

元記事を表示

【Declined】PHP8に入ることのできなかった機能たち

PHP8では大量の[RFCが](https://qiita.com/rana_kualu/items/a6601b49e0591eb42200)[受理され](https://qiita.com/rana_kualu/items/fe7998fbe773544d5d25)、多くの文法の拡充が行われました。
光あるなら陰もまたあり、すなわち華々しく活躍するRFCの傍らには、却下され消えゆくRFCもまた存在するということです。

ということでPHP8に入り込むことを目指したものの[却下されたRFC](https://wiki.php.net/rfc#declined)を見てみることにしましょう。
採用されたRFCと却下されたRFCを見比べることで、PHPの今後の方向性とかがわかるかもしれませんよ。

# Declined RFC

## [Dump results of expressions in `php -a`](https://wiki.php.net/rfc/readline_interactive_shell_result_function)

賛成11、反対6で却下。

`

元記事を表示

【Laravel】「email」のバリデーションルールの注意

# 初めに
Laravelではデフォルトで様々な[バリデーションルール](https://readouble.com/laravel/8.x/ja/validation.html)を準備してくれており、生PHPと比べてかなり簡単にバリデーションを設定することができます。
しかし、デフォルトのものには実は注意が必要と言う事をお話しして行きます。

その中で、今回は **『email』のバリデーションルール**について紹介します。

# 問題点
デフォルトでは、emailの形式`ユーザー名(メールアカウント)@ドメイン名`でなければバリデーションエラーを出力してくれます。

```App\Http\Controllers\Auth\RegisterController.php
return Validator::make(
$data,
[
'name' => ['required', 'string', 'max:255'],
'email' => ['required', '

元記事を表示

Magentoのセキュリティは、サニタイズの脆弱性を修正するための追加パッチが必要です

本記事は2022年2月24日に@developersteveが公開した英語ブログ[Magento security requires additional patch to fix sanitization vulnerability](https://snyk.io/blog/magento-vulnerability-cve-2022-24087-sanitization/)を日本語化した内容です。

なお本ブログは、[CVE-2022-24086 Magento Ecommerce を使用しているウェブサイトに対する脆弱性警告](https://qiita.com/SnykSec/items/8fdecb03fe0f8fe275cf)で発表した内容から更新されている情報について記載しています。

[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/bc4c157c-64e2-ec7e-df18-147d2c279cb0.png)](htt

元記事を表示

[PHP]PHPUnitのassertSeeをリダイレクト先でも行いたい。

# きっかけ
laravelにてfeatureテストを記述していたときに、post処理後のリダイレクト先でフラッシュメッセージをassertSeeしたくなった。

## assertSee について
レスポンス内に指定の文字列があるかを確認してくれる。
基本的なアサートの一つ。
```php
public function test_テキストチェック()
{
$response = $this->get('user');
// /user に "user一覧" と記述されていればテストが通る
$response->assertStatus(200)->assertSee('user一覧');
}
```
この他にも、文字列を順番に記述されているかを確認してくれる「assertSeeInOrder」など、便利なものがいくつか存在します。
詳しくは、下記をご覧ください。

https://readouble.com/laravel/6.x/ja/http-tests.html#assert-see

## 問題
便利なassertSeeですが、下記のような記述ではリダイレクト

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part2

みなさん、こんにちは。
早速ですが自サービスの開発記録を残していこうと思います。

サービス作成の背景および要件定義はこちらへ
https://qiita.com/k-hayack884/items/e571138e8bf7f35f7502

さすがにインストールやマイグレーション作成などの設定は省きます。

## ログイン機能の作成
管理機能のライブラリはLaravel/ui,Breeze,Jetstreamなどがある。
ただし、Laravel/uiのcssはBootstrap,Breeze,Jetstreamはtailwindcssが初期設定されている模様
学習サイトや技術ブログなどの文献ではLaravel/uiを使っているものが多かったが、あえてBreeze,Jetstreamに行く。
理由は
- laravel8以降ではtailwindcssが推奨されていること。
- bootstrapでは自由なデザインをするのが難しいこと
- モダンなtailwind cssを使うワイ、カッコいい(ここ重要)

2段階認証などのセキュリティの機能面を考慮すれば、Jetstreamなん

元記事を表示

Ruby OpenSSL::PKCS5.pbkdf2_hmac_sha1 をPHPで置き換えたときのメモ

```ruby
def self.encrypt(data, pass, salt)
cipher = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 1000, cipher.key_len+cipher.iv_len)
key = key_iv[0, cipher.key_len]
iv = key_iv[cipher.key_len, cipher.iv_len]
cipher.encrypt
cipher.key = key
cipher.iv = iv
encryptvalue = cipher.update(data) + cipher.final
return Base64.b64encode(encryptvalue)
end

def self.decrypt(data, pass, salt)
enctyptvalue = Base64.d

元記事を表示

LaravelでCSVファイルのダウンロード機能を実装する

Laravelでの開発中、DBのデータが記載されたCSVファイルのダウンロード機能を実装する必要があり学習したのでまとめる。
ただし最後の1行だけ理解が及んでおらずのため悪しからず。。。

# そもそもCSVとは?
「Comma Separated Value」の略。
直訳すると、カンマで区切った値となる。

散々CSVファイルを見てきたがカンマなど見たことがない、、、
どこがComma Separated Valueなんだと思ってしまった。

まず大前提として自分の認識が間違っていたのが、CSVとExcelはほぼ同じだと思っていたことだ。
というかむしろ何が違うんだくらいの認識だった。

ただこれこそが最大の勘違いで、正確には普段目にしているCSVファイルはExcelで開かれていたため全く同じに見えていたということだ。
となるとCSVファイルの実体は何なのか。
試しにCSVファイルをエディターに投げてみると以下のように表示される。

```
id,name\n
1,"taro"\n
2,"mike"\n
3,"john"\n
``

元記事を表示

Adminer Editorでデータ更新依頼を自動化できないか検討

## 概要
データの修正依頼を受けてDB運用者が依頼に沿ってデータ修正するのではなく、直接依頼者がデータ修正できるようにできないかという想像から始まった。
phpmyadminやAdminerなどは機能豊富で生のSQLを叩けるのでなかなかハードルが高いし、だからといっていちいちツールを開発するのは大変。

そこで、いろいろ調べてみるとAdmin Editorというツールを見つけた。

https://www.adminer.org/en/editor/

Adminer Editorは非開発者でもわかりやすいようなUIを提供するデータ修正ツールで、Adminer同様多数のDBMSに対応している。
Adminerの機能制限版といった感じ?テーブルの作成やスキーマの修正などの機能を提供せずデータの追加、修正、削除のみを実施することができる。
そのため、アプリを立ち上げて依頼者にURLを提供すれば安全に修正できるようにならないか?という発想です。

公式サイトによると以下の制約があるようです。

* SQLは直接実行できない
* データベースは1つしか選べない

このページではAdmine

元記事を表示

【PHP】データ登録処理後、再読み込みしたら同じデータが再び登録される

## 環境
PHP 7

## はじめに
今回は、ユーザー登録機能を実装している時に、起きた問題です。ユーザー登録後リロードをすると同じデータが再び登録されてしまうという現象が起きました。
調べて分かった事などを備忘録として残していきたいと思います。

## リロードや再読み込みで再送信される
ユーザー登録後に、再読み込みをすると同じユーザーが再び登録される、、
URLを直撃ちしてページをみると、この現象は起きないのですが毎回こんなことできないですね、、

リロードをすると下記の画像のアラートが出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697259/ad0ffb28-37a2-e1e3-c4d2-6c3765bf869e.png)

「続行」を押すと同じデータが登録されます。
この現象は何度も繰り返されるため、無限にデータが増えることになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part1

# 概要

今まではスロットや掲示板、ネタ登録サイトなどを作ってみたけれど、自分自身で一つのサービスを作りたいと思い決意
せっかくlaravelを学んだので、laravelで開発したい
ポートフォリオにも使えるしね!

# 何を作るか?
ECサイトや予約サイト、マッチングアプリなど、laravelでできるサービスは多岐にある。
しかし、選択肢が多いってことは、それだけ迷ってしまうということ、自サービスの方向性が定まらないまま、yahooニュースを見て現実逃避をする。
![genjitsu_touhi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/ecfe987c-24bd-6267-40c0-0a8bc1fe75db.png)
そして、たどり着いたのがこの記事

https://news.yahoo.co.jp/articles/43d9b12fe338fd9f7193b48e4590d1caacb0f486

#### 世の中にはこの胡蝶蘭のように、使われてポイ

元記事を表示

OTHERカテゴリの最新記事