PHP関連のことを調べてみた

PHP関連のことを調べてみた
目次

[Laravel]nullが入る可能性のあるカスタムバリデーションを作成する場合

## 備忘記
– カスタムのバリデーションRuleを作成したときにnullの値のものがRuleを通ってないことが発覚。
– その解決策を記載します。

### 前提
Laravel Framework 10.46.0
PHP 8.3.1

### 方法

コマンドはこれ!
“`php
php artisan make:rule Uppercase –implicit
“`

もし無しで作成しちゃったら、、、?

“`php
class Uppercase implements DataAwareRule, ValidationRule
{
# ここの部分を追加する
/**
* Indicates whether the rule should be implicit.
*
* @var bool
*/
public $implicit = true;

“`

元記事を表示

【WordPress】「次回のコメントで使用するため…」を削除する方法

WordPress 4.9.6からコメント投稿フォームに追加された「次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。」を削除・非表示にする方法を紹介します。

:::note warn

※ これは2018-05-23に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## コメント投稿フォームにチェックマークが増えた

2018年5月19日に更新されたWordPress 4.9.6にアップデートすると、[`comment_form`](https://developer.wordpress.org/reference/functions/comment_form/)コマンドが用いられているテーマでコメント投稿コメント欄の送信ボタンの真上に次のスクリーンショットのようなチェックボックスとテキスト「次回のコメントで使用するため

元記事を表示

allow_url_fopenが0のサーバーで外部ファイルを取得する方法

allow_url_fopenに0が設定されたレンタルサーバーではPHPのfile_get_contentsなどを用いて外部のファイルが取得できません。これを回避して取得する方法を紹介します。

:::note warn

※ これは2017-07-19に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## レンタルサーバーのセキュリティが厳しい

(今は亡き)ウェブクロウというPHPが動作する無料サーバーにてPHPのfile_get_contentsを用いて外部ファイルを取得しようとしました。しかし、php.iniにてallow_url_fopen=0に設定されており、取得ができませんでした。

![取得エラーが発生したスクリーンショット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

レンタルサーバーにTiny Tiny RSSをインストール

レンタルサーバーにTiny Tiny RSSを簡単にインストールする方法を紹介します。今回はさくらのレンタルサーバでの例を紹介しますが、PHPとMySQLが動作する一般的なレンタルサーバーであれば、概ねインストールできます。

:::note warn

※ これは2017-05-28に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## Tiny Tiny RSS とは

Tiny Tiny RSS (略称tt-rss)とはサーバーサイドのオープンソースRSSクライアントです。インストールしたURLにアクセスするだけで見られるのでスマホなどからどこでも見られる・高頻度でRSSを取得しに行くので更新頻度が高いサイトでも逃さずキャッチしやすい・登録したレンタルサーバー業者以外に登録しているRSSの情報が知られないなどの特徴があります。一方、定期的にtt-rssを

元記事を表示

PHPerKaigi 2024 コードゴルフ挑戦記録

## はじめに
>PHPerKaigi(ペチパーカイギ)は、PHPer、つまり、現在PHPを使用している方、過去にPHPを使用していた方、これからPHPを使いたいと思っている方、そしてPHPが大好きな方たちが、技術的なノウハウとPHP愛を共有するためのイベントです。

2024年3月7日(木)〜 3月9日(土)開催でした。

https://phperkaigi.jp/2024/

## コードゴルフとは

https://t.nil.ninja/phperkaigi/2024/golf/

今年はコードゴルフが企画されていました。
与えられたお題を満たすコードをできるだけ短く書け、という競技です。

## 結果

時間がなくてあまりできなかったですが
問1: 9位
問2: 8位
問3: 6位
という結果でした。
こちらはどういった回答をしたのかを記事にしたいと思います。

## 解説

### 問1: FizzBuzz

![スクリーンショット 2024-03-11 16.12.54.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

PHPerKaigi 2024でレギュラーセッション登壇してきました!

## はじめに

>PHPerKaigi(ペチパーカイギ)は、PHPer、つまり、現在PHPを使用している方、過去にPHPを使用していた方、これからPHPを使いたいと思っている方、そしてPHPが大好きな方たちが、技術的なノウハウとPHP愛を共有するためのイベントです。

2024年3月7日(木)〜 3月9日(土)開催でした。

https://phperkaigi.jp/2024/

## 登壇セッション

https://fortee.jp/phperkaigi-2024/proposal/939533ae-f26a-4bd3-a8e4-c88d820943c6

去年に引き続きプロポーザル採択での登壇となりました。
([去年の記事](https://qiita.com/yamamoto_hiroya/items/5e3780f163093176f34e))
トーク聞いていただいた方、

元記事を表示

【Laravel】useした時に`Class not found`とでて困った話

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

今回は、`Class “Lib\UsePost” not found`というエラーがでてしまって困った話をします。

# 困ったこと

Laravelプロジェクト直下に`Lib`というディレクトリを作成し、’UsePost.php’というファイルを作成したのですが、

これをコントローラから読み込もうとしたときに`Class “Lib\UsePost” not found`となってしまい読み込むことができなくて困ってしまいました。

# 最初に実装した内容

最初に実装した内容としては、`PostController`と`UsePost`を以下のように実装しました。

“`php:PostController.php

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~イベント管理編~

# 初めに
「ある処理が実行された時に、別の処理を割り込みで実行させたい」という時ありますよね?「APIのレスポンスが作成されたら、それをログに書き出す」のような。
このような**イベント管理**の処理を実現するために、Flowには”**Signal & Slot**”と呼ばれる機能が備わっています。

# イベント管理とは
イベント管理は、「ある処理をトリガーとして別の処理が実行される」という概念です。GUIアプリケーションにおいて、ユーザの操作に応じて対応する処理が実行される仕組みを指します。バックエンドよりはフロントエンドの開発においてより頻繁に利用される印象です。

# Flowにおけるイベント管理
Flowでは、**Signal & Slot**という機能でイベント管理を行います。
特定のイベント(Signal)が発生したときに特定の処理(Slot)を実行するというものです。

※AOPと似てますよね。違いについては後述。

:::note info
Signal & Slotは、C++のQt(キュート)というフレームワークで利用されていた概念です。Flowではその概念を元

元記事を表示

「AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~」をPHPで解いてみた

# はじめに

[@drken](https://qiita.com/drken)さんの記事である[「AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~」](https://qiita.com/drken/items/fd4e5e3630d0f5859067#%E7%AC%AC-4-%E5%95%8F–abc-087-b—coins-200-%E7%82%B9)にはPHPの解答はないので、類題も含めてPHPで解いてみました。

※筆者はPHP初心者なので、解答は決してきれいなものではないです。
リファクタリングもしておらず、実際に一番最初に書いて、正解となったコードを載せています。
その点はご了承ください:bow:

また、こういう解き方もあるよ!という方は、優しくコメントで教えていただけますと幸いです:relaxed:

# まず、解いてみよう!

## 試行錯誤しよう
「よし、解き方がわからなかったからちょうどよかった。どれどれ、答えは?」
と思ったそこのあなた!

とにかく、**もう30分だけ粘ってみてください!**

「こうし

元記事を表示

2025年に開催される(かもしれない)全国のPHPカンファレンスのまとめ

# 2025年に開催される(かもしれない)全国のPHPカンファレンスのまとめ

## PHPカンファレンス関西 2025 ???

元記事を表示

PHPerKaigi 2024 コードゴルフを解く (DAY 0)

# PHPerKaigi 2024 ⛳️

コードゴルフを解きました。

—–

この記事はQiitaのスライドモードで作ってるよ!
DAY 1以降では僕より短い回答いっぱい出てたので、最短を狙うための記事はもっとほかの人が自分で書いてるのでは!

—–

以後、バイト数は行頭インデントと改行を抜いて計測します。

—–

# 問題 #1 FizzBuzz

——

![スクリーンショット 2024-03-07 1.35.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4121/08662d1b-669c-7008-c00d-818b722bd408.png)

——

標準回答 (182バイト)

“`php
for ($i = 1; $i <= 100; $i++) { echo match ([$i % 3 === 0, $i % 5 === 0]) { [true, true] => “FizzBuzz”,
[true, false]

元記事を表示

【Laravel】PHPUnitでテストコードを書く

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回は、以前作成したLaravelの環境をつかってコードテストを書いていきます。

https://qiita.com/keitaMax/items/7bc51212a32a6418aa1c

Laravelの公式サイトをもとに、PHPUnitを使用してテストコードを作成していきたいと思います。

# インストール
>Laravelはユニットテストも考慮して構築されています。実際、PHPUnitをサポートしており、最初から含まれています。
(引用元:https://readouble.com/laravel/10.x/ja/testing.html)

Laravel公式サイトによると、PHPUnitが最初から含まれているということなので、PHPUnitを使用したいと思っても新しく何かをインストールする不必要はなさそうです。

# テストを作成する

以下のようなコマンドを実行してあたらしいテストケースを作成します。

“`
php artisan make:test PostTest
“`

すると、`test

元記事を表示

Amazon linux 2023 にWordpress6.4.3をインストール

# なにしたの
とあるミッションがあり、Wordpressにプラグインを入れて動作確認をすることが必要になりました。
最近あまりwordpressを触っていないので、AWS上に軽く立てて動かそうというのが狙いです。
以下の解説はインストール開始以降に絞っており、事前にAWSでインスタンスを立ててnetwork設定したりするところは大いに割愛しています。

# 参考にしたもの

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/hosting-wordpress.html

## いろいろバージョン

EC2
Amazon Linux 2023 AMI 2023.3.20240304.0 x86_64 HVM kernel-6.1
mysql
Ver 8.0.36 for Linux on x86_64 (MySQL Community Server – GPL)
php
php8.2-mysq

元記事を表示

simplexml_load_fileで要素名にハイフンがついていると読み込めない

simplexml_load_fileで要素名にハイフンがついていると読み込めず、「`Parse error: syntax error, unexpected ‘[‘`」エラーが発生する場合の対処方法です。

:::note warn

※ これは2016-10-25に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## 現象

simplexml_load_fileで取得できなかったUser-Agents.orgのxmlは次のとおりになっていました(抜粋)。

“`xml





“`

次のPHPコードを実行するとエラーが発生しました。

“`php

元記事を表示

SiteGuardを導入するとHTTP_ACCEPT_ENCODINGなどのHTTPヘッダが削除されてしまう件

「SiteGuard」を導入にすると一部のHTTPヘッダーがとれなくなります。意外と気付かず条件設定などにおいてハマってしまうことがあります。

:::note warn

※ これは2016-09-28に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## 概要

さくらのレンタルサーバを使用しているサイトにおいてgzip圧縮データを返すようなPHPを作って動作確認していたのですが、いかなる環境で接続しても圧縮されたデータが返されませんでした。「`$_SERVER[‘HTTP_ACCEPT_ENCODING’];`」の値が常に空だったのです。

他のサーバーにあげたら利用できたのでさくらのレンタルサーバの環境が原因なのかと思っていました。他のサイトにあった記事ではさくらのレンタルサーバ固有の問題であるという書き方がなされていました。しかし、さくらのレンタルサ

元記事を表示

ランダムな値を生成する技を使い倒したい

## 前提
– ランダムな値を生成する技を使い倒したい!!!!というきもちでまとめます。

## 本編
### 1. PHP関数編

1. **random_int**:「0~10の間のランダムな整数」
“`php:
# (最小値, 最大値) をいれる!
random_int(int $min, int $max): int

$number = random_int(0, 10);
-> 6 # 結果1
-> 8 # 結果2
-> 0 # 結果3
“`
2. **mt_rand**:「0 ~ 10の間のランダムな数字」
※ 整数でも小数でもOK
“`php:
# (最小値, 最大値) をいれる!
mt_rand(int $min, int $max): int

$number = mt_rand(0, 10);
-> 6 # 結果1
-> 8 # 結果2
-> 0 # 結果3

# 1.0から9.0までの範囲
$nu

元記事を表示

PHP7.4 → PHP8.2にバージョンアップする手順

# 動作環境
– MacBook Air M1 2020
– macOS Sonoma 14.2.1
– Homebrew 4.1.18
“`
$ brew –version
Homebrew 4.1.18
Homebrew/homebrew-core (git revision addae16383c; last commit 2023-11-03)
“`
– PHP homebrewのパッケージphp@7.4を使用
“`
$ php -v
PHP 7.4.30 (cli) (built: Jun 9 2022 09:20:03) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies
$ which php
/opt/homebrew/opt/php@7.4/bin/php
“`

# php7.4からphp8.2へバ

元記事を表示

Homestead Vagrant 指令筆記

> PHP8.1 バージョンで `composer` コマンドを実行する必要がある場合は、次のようにします。
“`
php8.1 /usr/local/bin/composer update
“`

> プロジェクト内で PHP の実行バージョンを指定するには、`homestead.yaml` ファイル内のサイトでPHPバージョンを指定する必要があります。以下のようにします。
“`
– map: homestead.test
to: /home/vagrant/code/Laravel/public
php: “8.1”
“`

> `homestead.yaml` ファイルを変更した後、そのファイルの設定を再読み込みするには、以下のコマンドを使用します。
“`
vagrant provision && vagrant reload
“`

> CLI モード下の PHP バージョンを切り替える場合、次のコマンドを使用します。
“`
sudo update-alternatives –config php
sudo update-alternatives

元記事を表示

LibXL PHP Extensionでセルの文字列を読み取る

## はじめに
LibXL PHP Extensionを使って、Excelに入力されたデータを読み取るシステムを開発していた時、数式が入力されているセルで、read(row, column)を使うと数式だけが読み取られてしまって苦戦したので備忘録です。
## 本題
解決方法の調査に半日ほどかけた結果、公式(?)ドキュメントみたいなものに辿り着けました。

https://github.com/iliaal/php_excel/blob/master/docs/ExcelSheet.php

以下、私なりの解釈です。
“`php:controller.php
//概念の説明

read($row, //0から始まる行数
$column, //0から始まる列数
&$format = null, //フォーマット(参照渡しに設定されている)
$read_formula = true //←これが重要。デフォルトでtrue = 数式を拾う設定になっているので、これをfalseにすれば値を取ってくるよ

元記事を表示

WordPressを扱うエンジニアに対する質問事項

これまでWordPressを用いたWebサイト制作を多く手掛けてきましたが、フリーランスの方や他社様と制作業務をご一緒させていただくこともあります。

一口にWordPressを用いたWebサイト制作といっても、想定している進め方やレギュレーション、習得具合や期待などの認識がずれる懸念もありますので、このあたりを確認するとお互いのギャップが減るのではないかと質問事項を考えてみました。

この内容はWordPressでのサイト制作を行うエンジニア採用においても転用できる部分があると思います。

また、質問の意図を補完する意味で私の場合の回答例も記載しました。
この回答が正しいとも限りませんが、何を聞きたいかのイメージがしやすいかと思います。

## 質問事項

### CMS選定について

サイトのリニューアルを行う際に、WordPressを継続利用するかどうかも含めて提案して欲しいという要望があった場合、どのような観点で他のCMSの選定、もしくはWordPressの継続利用を判断しますか?

#### 回答例

下記の観点でヒアリングし検討します。

* 運用担当者の方のリテラシーや慣

元記事を表示

OTHERカテゴリの最新記事