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

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

PHP 絵文字を削除

## 用途
PHPで絵文字を削除したいときに使う。
データベースに絵文字を保存したくない時などに、あらかじめ値から絵文字を削除したい時などに使う。

:::note info
4バイトの絵文字を削除するものです。(3バイトの絵文字は今回のコードでは削除できません)
:::

## 使用方法
“`php:4バイトの絵文字を削除
preg_replace(‘/[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]/’, ”, $hoge);
“`
第1引数 → 4バイトの絵文字の正規表現
第2引数 → 空にするためにクオーテーションのみ
第3引数 → 対象の値

元記事を表示

WordPress JSなしで投稿記事のループをアコーディオン表示する方法 備忘録

いちばん最初に参考にした記事:
https://webdesignday.jp/inspiration/technique/css/5316/

困ったこと

チェックボックスをフラグにするのですが、input(id=””)とlabel(for=””)を同じにしないと、チェックボックスを消した時に動作しない・・・。foreachで回している記事に連番を付けるには・・・
あれこれ試行錯誤して、できたのがPHPのループを使ってしまうこと。

解決法



[PHP/Laravel]やろうぜ、静的解析

# はじめに

## きっかけ

この話題を話そうと思ったきっかけは主に2点

– 主催している勉強会で話題になった。
– 意外と導入している企業少ない?
– 結構PHP Conferenseで定期的に話題になってる
– 2021 [https://youtu.be/-XcpNC-5P4I](https://youtu.be/-XcpNC-5P4I)
– 2021 [https://youtu.be/jDtlylId9Gk](https://youtu.be/jDtlylId9Gk)
– 2020 [https://youtu.be/1A75v3gsjZE](https://youtu.be/1A75v3gsjZE)

## 想定読者
– PHPで既存のコードによるバグに悩んでいる人
– これからプロジェクトの基盤を作る人(僕はこれだった)

# 静的解析とは?

https://ja.wikipedia.org/wiki/%E9%9D%99%E7%9A%84%E3%82%B3%E3%83%BC%E3%83%89%E8%A7%A3%E6%9E%90

>

元記事を表示

Alma Linux 8にPHP 8.1, PHP-FPM 8.1をインストール(Remi’s RPM repository)

# はじめに

Remi’s RPM repositoryを利用してAlma Linux8にPHP8.1をインストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)
参考:[Remi’s RPM repository](https://rpms.remirepo.net/wizard/)

## サポート

本手法で導入した場合、[PHP: Supported Versions] (https://www.php.net/supported-versions.php) / [PHP: Unsupported Branches](https://www.php.net/eol.php)より、2024-11-25がEOLになると思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## note

– 他のPHPモジュールを入れていた場合、下記コマンドでモジュールのリセットが必要

“`shell-session
#

元記事を表示

RockyLinux 8にPHP 8.1, PHP-FPM 8.1をインストール(Remi’s RPM repository)

# はじめに

Remi’s RPM repositoryを利用してRockyLinux8にPHP8.1をインストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)
参考:[Remi’s RPM repository](https://rpms.remirepo.net/wizard/)

## サポート

本手法で導入した場合、[PHP: Supported Versions] (https://www.php.net/supported-versions.php) / [PHP: Unsupported Branches](https://www.php.net/eol.php)より、2024-11-25がEOLになると思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## note

– 他のPHPモジュールを入れていた場合、下記コマンドでモジュールのリセットが必要

“`shell-session
#

元記事を表示

Alma Linux 8にPHP 8.0, PHP-FPM 8.0をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してAlma Linux8にPHP8.0をインストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)
参考:[RHEL8のパッケージ構成 – BaseOSとApplication Stream – 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)
   [第4章 新機能 Red Hat Enterprise Linux 8 \| Red Hat Customer Portal](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/8.3_release_notes/new-features#enhancement_dynamic-programming-languag

元記事を表示

RockyLinux 8にPHP 8.0, PHP-FPM 8.0をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してRockyLinux8にPHP8.0をインストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)
参考:[RHEL8のパッケージ構成 – BaseOSとApplication Stream – 赤帽エンジニアブログ]( https://rheb.hatenablog.com/entry/rhel8_baseos_and_appstream)
   [第4章 新機能 Red Hat Enterprise Linux 8 \| Red Hat Customer Portal](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/8.3_release_notes/new-features#enhancement_dynamic-programming-languag

元記事を表示

Ubuntu 22.04にPHP 8.1をインストール(OS標準)

# はじめに

Ubuntu22.04にPHPを標準インストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)

## LOG

### インストール

“`shell-session
# cat /etc/os-release
PRETTY_NAME=”Ubuntu 22.04 LTS”
NAME=”Ubuntu”
VERSION_ID=”22.04″
VERSION=”22.04 LTS (Jammy Jellyfish)”
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/”
BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/”
PRIVACY_POLICY_URL=”https://www.ubunt

元記事を表示

CakePHP4でbelongsToManyのアソシエーションのモデルに条件を記載してデータを取得する方法

# はじめに
CakePHP4を実務で仕様した際、タイトルの内容の対処法がわからず困ったので、備忘録としてこの記事に記載したいと思います。
タイトルの内容以外にも、CakePHP4のデータの結合に関してまとめておりますので、CakePHPを実務で利用している方、特に初心者の方で公式ドキュメントを読んだだけでは理解が難しいと思った方向けの記事になりますのでよろしくお願いします。

# ER図
![20220413_ER図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419781/5841e445-a890-45ec-5dab-a66dcc7c1104.png)

私が書いた下記記事と同じものになります。
[CakaPHP4でユーザ追加時に関連するテーブルも同時に追加を行う方法](https://qiita.com/aktwelve/items/5f1844d3637b9d32bd88 “CakaPHP4でユーザ追加時に関連するテーブルも同時に追加を行う方法”)

今回は、ユーザの一覧を表示する際に、**

元記事を表示

PHP の && と and って同じなの?

最近 PHP の資格を取ろうとしているんですが、どうせなら国際資格にしようと思って Zend 社の [Zend Certified PHP Engineer](https://www.zend.com/training/php-certification-exam) を勉強しています。

その中で、論理演算について目からウロコ(ただし使うかどうかは不明)な情報があったので紹介したいと思います。

## TL;DR

– PHP の論理演算子は英語でも書ける
– **記号で書く方が英語で書く方より処理が先に行われる**
– うまいこと使えば括弧地獄を軽減できる(が、おすすめはしない)
– **「かつ」「または」の意味で使うなら記号で書いた方が安全**

## 論理演算子とは

論理演算子は真偽値同士の演算をするための演算子です。

– `&&`: 演算子の両側が `true` の場合に限り、結果が `true` となる。「論理積」ともいう。
– `||`: 演算子の片側が `true` の場合に結果が `true` となる。両側が `true` でもよい。「論理和」ともいう。
– `!`

元記事を表示

PHPの三項演算子とは

# 三項演算子
三項演算子は演算子のひとつで3つの項目を使用する唯一の演算子です。書式は次の通りです。

`条件式 ? 式1 : 式2`

“`php5
$a = 100;
$b = 100;
if ($a === $b) {
echo ‘$aと$bは同じ値’;
} else {
echo ‘$aと$bは異なる値’;
}

“`

↑矢印これが、、

“`php
$a = 100;
$b = 100;
echo $a === $b ? ‘$aと$bは同じ値’ : ‘$aと$bは異なる値’;

“`

たったのこれだけで済んでしまうのです。

コード量が減るメリットがある一方で、多用しすぎると可読性が下がるというデミリットも含むため、三項演算子の中で三項演算子を呼び出すなどはやめましょう。

# 参照
[PHPの便利な演算子でコードを短くしよう!](https://tatsuno-system.co.jp/2021/06/15/blog_php-code/)

元記事を表示

最近知ったVSCodeの便利機能 3選

## はじめに
本記事では、私が最近知った**VSCodeの便利機能**を3つご紹介します。

すべて以下の本から学んだことです。

https://book.impress.co.jp/books/1121101051

とてもわかりやすくてためになる本なので、おすすめです!

では、ここから便利機能をご紹介していきます。

## 便利機能① 独自のスニペット

スニペットとは、「**再利用可能なソースコードのまとまり**」を指します。

独自のスニペットを作成すると、自分のよく書くコードを**自動入力**できるようになります!

↓`var_export($array, true);`を自動入力する例
![391aa1df28ad0fe5f0956877da76470f.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/d51ca446-dfeb-7f2c-e0c0-69b098e4e11a.gif)

IF文を記述する際などに、VSCodeが補完候補を提示してくれることがありますよね。

元記事を表示

PHPを使ってSymbolブロックチェーンのトランザクションを送信する

この記事は「自分の得意なプログラミング言語でSymbolブロックチェーンを動かす方法」をPHPで実践したものです。

https://qiita.com/nem_takanobu/items/09b6b687f3cbe10af945

### アカウント作成

“`php
$sign_pair = sodium_crypto_sign_keypair();
$sign_secret = sodium_crypto_sign_secretkey($sign_pair);
$sign_public = sodium_crypto_sign_publickey($sign_pair);

echo ‘Secretkey: ‘ . substr(sodium_bin2hex($sign_secret), 0, 64) . PHP_EOL;
echo ‘PublicKey: ‘ . sodium_bin2hex($sign_public) . PHP_EOL;
“`

### アカウント復元

“`php
//Secretkey: 94ee0f4d7fe388ac4b04a6a6ae

元記事を表示

EC-CUBE4 フォントの追加方法

## フォントの追加方法
EC-CUBE4系はPDFの出力にTCPDFを利用している。
TCPDFのフォント追加ツールを利用し、フォントファイルを変換し追加する。

“`
vendor/tecnickcom/tcpdf/tools/tcpdf_addfont.php -i 追加するフォントファイル(ttf形式)
“`

`Process successfully completed!`と表示されれば成功。

下記は、HG行書体を追加する場合
“`
vendor/tecnickcom/tcpdf/tools/tcpdf_addfont.php -i HGGyoshotai.ttf

>>> Converting fonts for TCPDF:
*** Output dir set to /vendor/tecnickcom/tcpdf/fonts/
+++ OK : HGGyoshotai.ttf added as hggyoshotai
>>> Process successfully completed!
“`

`vendor/tecnickcom/tcpdf/fo

元記事を表示

PHPUnit x Laravel よく使うスニペット まとめ

laravel x PHPUnit で開発する際に忘れがちな処理をまとめました。

## リダイレクト先で assertSee
“`php
$response = $this->post(‘users’, [
‘name’ => ‘test_user’,
]);

$response
->assertRedirect(‘/users’)
->assertStatus(302);

$response->get(‘users’)->assertSee(‘user一覧’);
// or $this->followRedirects($response)->assertSee(‘user一覧’);
“`

## DB定義からfactoryを自動生成
https://github.com/TheDoctor0/laravel-factory-generator

“`sh
composer require thedoctor0/laravel-factory-generator –dev

# –recursive でdirectory構成に沿って生成してくれ

元記事を表示

docker+php5系でxdebugを使う方法

# はじめに
仕事でphp5.5の環境構築をすることになったのですが、xdebugが動作しませんでした。
解決するのに結構嵌ってしまったので、対処法を残します。

# 環境
– VSCode
– Docker
– php5.5
– mysql5.7

# 結論
xdebug3を使用していたため、動作しませんでした。

xdebug2.6.0からphp5系がサポート対象外になったようです。
http://xdebug.org/announcements/2018-01-29

php5.5を使用する場合はxdebug2.5.5を使用しましょう。

:::note warn
php5.3以前を使用する場合は、xdebug2.2.7をインストールしてください。
xdebug2.3.0からphp5.3以前がサポート対象外のようです。
http://xdebug.org/announcements/2015-02-22
:::

# フォルダ構成
“`
├── .vscode
│ └── launch.json
├── docker
│ ├── Dockerfile
│ └── p

元記事を表示

phpunit のメモ

## 繰り返しのテスト
`@dataProvider`

“`php
/**
* @dataProvider testData
* @params int $year1
* @params int $year2
* @params bool $expected
*/
public function testGroupNameValidate($year1, $year2, $expected)
{
$this->assertSame($expected, $year1 === $year2);
}

public function testData()
{
return [
[2022, 2022, true],
[2022, 2023, false],

];
}
“`

## 繰り返しが少なければ
`@testWith`

“`php
/**
* @testWith [2022, 2022, true]
* [2022, 2023, false]
*/
pub

元記事を表示

PHP_CodeSnifferの導入方法と解説

## はじめに
今回は、コーディング規約に[CakePHP Code Sniffer](https://github.com/cakephp/cakephp-codesniffer)を使用します。

## PHP_CodeSnifferとは
PHP_CodeSnifferとは、**指定したコーディング規約に沿った構文チェック**を行ったり、
違反があったら**自動で修正することが出来る静的解析ツール**のことです。

– [PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer)
> **PHP_CodeSniffer**
>
> PHP_CodeSniffer is a set of two PHP scripts; the main phpcs script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second phpcbf script to aut

元記事を表示

[Stripe]Stripeで決済を実装できるぞ!のまとめ

# TL;DR

StripeとはAPIベースのヘッドレスな**決済サービス**であり、
カードはもちろん銀行振込やコンビニ決済の代行もできます。
そして、**通常の決済**はもちろん、**サブスクリプション決済**の実装も可能です。
サイト側にフォームをもたせない**セキュア**な実装ができ、
ドキュメントも充実している(最初理解するのに時間かかったけど)ため
使い所も多いのではないかと思いましたので記事にまとめておきます。

# Stripeでできること・できないこと
## できること

– 商品の作成
– 商品の数量に応じた段階的な割引
– 各種決済
– カード決済
– コンビニ決済
– 決済先の発行と自動入金確認
– 銀行振込
– 振込先の発行と自動入金確認
– 決済フォームの実装
– 商品の料金をもとに決済できる
– 商品が登録されていなくとも任意の金額でも決済できる
– サブスクリプションの実装
– ユーザー情報の作成
– 各種決済・サブスクリプションのキャンセル
– 各種決済・サブスクリプショ

元記事を表示

Laravelでデフォルト以外のディレクトリでfactoryを読み込む

# 背景

先日ユニットテストを実装中に、factoryを規定のディレクトリ以外から読み込みたいことがあった。

そのプロジェクトではリポジトリパターンを採用していて、

factoryがvendor配下にあるという特殊な作りをしていたため。

# 実装方法
“`
app()->useDatabasePath(‘vendor/models/database’);
“`

これでvendor配下がfactoryの置き場所として読み込まれる。

元記事を表示

OTHERカテゴリの最新記事