PHP関連のことを調べてみた2023年09月30日

PHP関連のことを調べてみた2023年09月30日

new PDO(‘mysql:host=localhost’)が遅すぎぃ~

`localhost`を`127.0.0.1`にすると1000倍早くなります。DNSが遅いみたい

https://stackoverflow.com/a/9800798/5602117

元記事を表示

php-astを利用しソースコードを安全にフォーマットする

## はじめに
「ソースコード全てフォーマットしたい」
「でも、テストケースが少ないからフォーマットしてデグレしてないか分からない」
「工数も限られているからできるだけ楽にチェックしたい」
これらは[php-ast](https://github.com/nikic/php-ast)を利用すれば可能です。
ただし、長期間にわたり運用されているプロダクトでは、容易に対処できない問題もあります。私が試した結果うまくいかなかったことと、それを解決する方法について共有したいと思います。

:::note warn
注意
掲載されている内容や情報を利用することにより、直接または間接的に生じたいかなる問題、トラブル、損害に対しても、一切の責任を負いません。ご利用は自己責任でお願いいたします。
:::

## 背景
php-cs-fixerを導入しましたが、フォーマットされた変更が修正と混ざり、レビューが難しくなってしまいました。そのため、LGTMをもらった後に修正ファイルをフォーマットして、再度レビューを依頼する運用を採用していました。しかし、この方法ではフォーマッタの真価を生かせていないと感じ、

元記事を表示

Laravel10でAutocomplete(自動補完)させる時に調べたこと

## はじめに

– TailwindCSS とか新しいフレームワーク使いたいけど、
まだまだ、Bootstrap のほうが慣れてるよっていう状況です

そこから選択肢をいろいろ調査しました

## 事前調査

– 最近はHTML5で登場した`datalist`を使うようになっている
– Bootstrapでも`datalist`を一応サポートしている風な雰囲気
– `Bootstrap-3-Typeahead`という以前からあるライブラリが存在する

というところまで

## 参考資料

https://getbootstrap.jp/docs/5.0/forms/form-control/#datalists

https://github.com/bassjobsen/Bootstrap-3-Typeahead

## 事前準備

– 対象となるModelは実装済み

## 手順

1. サーバーのレスポンス

とりあえずJSON形式で返しておけばなんとかなる

“`php:例
class AutocompleteController ext

元記事を表示

Laravel10でClosureTable(閉包テーブル)を使ってみた

## 実行環境

| framework | Laravel(10.20.0) |
| — | — |

## 本記事で得られる結果

– ClosureTable(閉包テーブル)をModelとした実装例

## 経緯

コメント機能実装時に編集や削除を考慮し、閉包テーブルとしようと思ったところ、当該ライブラリを見つけた。

使ってみるとあっさりとした実装ができて楽だったのでご紹介します。

(似たような記事がたくさんありますが、自己学習のためですのでお許しを)

## 参考資料

https://github.com/franzose/ClosureTable

## 事前準備

– [Laravel](https://laravel.com)の環境構築済みであること
– Laravel Sail を利用する

https://qiita.com/naoto24kawa/items/6848dc89df1514efcea5

## 手順

1. 公式の通りにインストール

Composerを使ってインストール

“`shell
sail comp

元記事を表示

EC-CUBEシリーズ!「独自項目追加カスタマイズ」

![ec_cube_additem.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/0fa3e580-186c-bcfd-ee78-c9cfa5c89498.jpeg)

エスプリフォートでは、ECによる請負開発やプロダクト(自社サービス)開発を長く行ってきました。
そしてECサイトを構築する際には、お客様の業種・業態やお客様独自の管理法などにあわせて運用・管理できるようにするために、管理項目を増やしたり、商品情報を増やすようなことはアドオン開発では当たり前にあります。

ECサイトを構築する際の一つの選択肢として、エスプリフォートが長年扱ってきましたEC-CUBEで、管理項目を増やしたり、商品情報を増やす方法をご紹介していきます。

## 1、画面の追加項目を作成
管理画面の商品登録画面に項目を追加してみます。
「/app/Customize/Form/Extension/Admin」ディレクトリに「ProductTypeExtension.php」というファイルを作成します。

“`

元記事を表示

PHP8.3の新機能について(part2)

以前PHP8.3の新機能について(part1)という内容でQiitaに投稿をしました。
その続きの内容を投稿したいと思います。
[前回の記事](https://qiita.com/HaruKado777/items/54e74936406262b2b39c)はこちらをご確認ください。

## [Randomizer Additions](https://wiki.php.net/rfc/randomizer_additions)
Randomizerクラスに以下の関数が追加されます。

① getBytesFromString()
与えられた文字列、文字列長を参照してランダムに文字列を生成します。
 第一引数$string:選択対象の文字列
 第二引数length:返り値の文字列長

“`php
$randomizer = new \Random\Randomizer();

// ランダムな文字列を生成する
$randomizer->getBytesFromString(‘abcdefghijklmnopqrstuvwxyz0123456789’, 16);

// aが75%、b

元記事を表示

[Laravel] EloquentでのEager LoadingとN+1問題: first()メソッドの罠

# はじめに
現在、laravelを使ってWebアプリの開発をしております。
実務中にfirst()メソッドを使ってデータを取得する際に、インスタンスの内容が変更してしまう現象が起きてしまいました。
原因を調べてみると、Eager LoadingとN+1問題が関わっていることが判明しました。

その**Eager LoadingとN+1問題**を実例とともに簡単にまとめました。

# 目次

1.環境
2.実際に起こった現象
3.Eager Loadingとは?
4.N+1問題とは?
5.Eager Loadingを使った解決策
5.まとめ

# 1.環境
PHP 8.0.10
Laravel Framework 8.83.25

# 2. 実際に起こった現象

下記のようにデータを取得しようとした時に起こりました。
“`
$users = User::query()
->whereIn(‘id’, $userIds)
->where(‘group_id’, auth()->user()->group_id)
->get();
// $users①

$

元記事を表示

【23年9月】Laravel10+ViteへのBootstrap導入手順

## 実行環境

| OS | macOS Ventura 13.5 |
| — | — |
| shell | zsh 5.8.1 (x86_64-apple-darwin21.0) |
| framework | laravel(10.20.0) |
| | vite(4.4.9) |

:::note info
検証日: 2023/09/25
:::

## 本記事で得られる結果

– Laravel10 + Vite環境にて利用できるようになる
– Bootstrap
– Bootstrap-icons

## 事前準備

– [Docker](https://www.docker.com/)がインストール済みであること
– [Laravel](https://laravel.com/)の環境構築済みであること

https://qiita.com/naoto24kawa/items/6848dc89df1514efcea5

## 手順

### Bootstrap本体

1. laravel-ui のインストール

“`shell

元記事を表示

【23年9月】Laravel10をとりあえず使いたい時のとりあえずの設定をする

## 実行環境

| OS | macOS Ventura 13.5 |
| — | — |
| shell | zsh 5.8.1 (x86_64-apple-darwin21.0) |
| middleware | Docker(24.0.6) |
| framework | laravel(10.20.0) |
| | vite(4.4.9) |

:::note info
検証日: 2023/09/25
:::

## 本記事で得られる結果

– 日本向けの最低限の設定を行った Laravel10 動作環境
– Laravel(10.20.0)
– PHP(8.2.9)
– MySQL(8.0.34)

## 前提

– Dockerインストール済み

## 手順

### Laravel

1. 公式を参照 (macOS向け)

https://laravel.com/docs/10.x#getting-started-on-macos

1. インストール

“`shell
curl -s “https://laravel.b

元記事を表示

Silence is golden.

ディレクトリインデックスで何のプラグインやテーマをインストールしているか隠すことができます。

https://github.com/WordPress/WordPress/blob/master/wp-content/index.php

https://github.com/WordPress/WordPress/blob/master/wp-content/plugins/index.php

https://github.com/WordPress/WordPress/blob/master/wp-content/themes/index.php

元記事を表示

WordPressでIntuitive Custom Post Orderが効かないときの対処メモ

直感的に記事などの表示順序並べ替えることができるIntuitive Custom Post Order。
管理画面上は入れ替わっているものの、肝心のサイトでは表示が入れ替わっていない部分があった。その際のメモ。

※ファイルの状態によってまちまちだと思うので「今回はこれで解決した」程度のメモです。要件を書くと果てしないのでファイルの構成などの細かいところの説明は省いています。また、諸事情で子テーマを作成していたため、該当の記述はその子テーマに行っています。
※WordPressとphp初心者なのでなにか間違いがあればご指摘いただけると幸いです!

https://blog.piece-web.jp/wordpress/1702.html

上記サイトによると
> WP_Query や pre_get_posts 等で「orderby」パラメータに、
「menu_order」を設定することで並べ替えが効くようになる場合があります。

とのこと。
が、そもそも上記の記述がうまいこと見つからない…。

ああでもないこうでもないとほかのサイトを見ながらいじり倒している中で、以下のサイトを発見。

元記事を表示

Heredoc / Nowdoc Converter【ヒアドキュメント】

See the Pen
Heredoc/Nowdoc Converter
by John Doe (@04)
on CodePen.