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

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

【PHP】PHP7.4から8.1にバージョンアップしてみた

## はじめに

プロジェクトのPHPのバージョンを7.4から8.1にバージョンアップする作業を行いました。

今回のバージョンアップ作業で学んだ手順や考慮するべき点についてまとめていきたいと思います。

## この記事でやること

PHP7.4から8.1にバージョンアップする。

## 環境
– EC2を利用しています
– OSイメージ:Amazon Linux 2 Kernel 5.10
– PHPのバージョン: PHP 7.4.33 (cli)
– PHPUnitのバージョン: 9.5.28
– CakePHPのバージョン: 4.2.12
– nginx: nginx/1.22.0
– php-fpm: PHP 7.4.33 (fpm-fcgi)

## 事前調査・準備

### バージョンアップに関する情報を集める

#### PHP

PHPの各バージョンはリリースから3年間サポートされます(2年間のアクティブサポート+セキュリティサポート1年)が、PHP7.4はセキュリティサポートが2022年11月28日で終了しているため、今後の保守を考えてPHP8.1へのバージョ

元記事を表示

【PHP】Enumでの検証

## PHPのEnumでの検証
以下のようなEnumがあるとしたとき
“`php
enum Test: string
{
case Test1 = ‘test1’;
case Test2 = ‘test2’;
case Test3 = ‘test3’;
}
“`
検証の際いちいち
“`php
if ($test === Test::Test1) {}
“`
みたいなことを書くと可読性が悪くなる気がしたので

以下のようなトレイトを用意して
“`php
trait EnumIsTrait {
public static function tryFromName(string $name)
{
foreach (self::cases() as $case) {
if ($case->name === $name) {
return $case;
}
}
return null;
}

p

元記事を表示

【PHP】Fizz Buzz (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz

以下に、与えられた問題に基づくPHPプログラムを作成しました。このプログラムは、1からNまでの整数を順に表示し、条件に応じて特定の文字列を表示します。

“`php

元記事を表示

【PHP】正規表現でハッシュタグを抽出したい

### 環境
“`
$ php -v
PHP 8.3.8 (cli) (built: Jun 4 2024 14:53:17) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.8, Copyright (c) Zend Technologies
with Zend OPcache v8.3.8, Copyright (c), by Zend Technologies

$ php artisan –version
Laravel Framework 11.10.0
“`

### 困ったこと
趣味で開発しているアプリでハッシュタグを扱いたい!となり、文章から正規表現でハッシュタグを抽出する処理を実装するにあたりたくさんのサイトを参考にさせていただきました。

例えばこんな感じ。
“`php
$value = ‘#思い出 この本は図書館で大人気でした。 #ウォーリーを探せ ’;
$matches = [];
preg_match_all(
‘/(?<=\s|^)#\S+/', $value,

元記事を表示

Laravelにおけるサロゲートキーと自然キーについて

## 1. はじめに

ふとしたことで自然キーとサロゲートキーについて知る機会がありました。Laravelではどのような扱い方をしているのか気になって調べてみました。

## 2. 対象読者

– Laravel利用者
– テーブル設計者

## 3. 目次

– [1. はじめに](#1-はじめに)
– [2. 対象読者](#2-対象読者)
– [3. 目次](#3-目次)
– [4. 自然キーとは](#4-自然キーとは)
– [5. サロゲートキーとは](#5-サロゲートキーとは)
– [6. Laravelにおけるサロゲートキー](#6-laravelにおけるサロゲートキー)
– [6-1. カスタムサロゲートキーの設定](#6-1-カスタムサロゲートキーの設定)
– [6-2. サロゲートキーを使用しない場合の主キーの設定方法](#6-2-サロゲートキーを使用しない場合の主キーの設定方法)
– [7. さいごに](#7-さいごに)
– [8. 参考サイト](#8-参考サイト)

## 4. 自然キーとは

自然キーとは、業務上の意味を持つデータ項目を使用してレコードを一

元記事を表示

【Laravel】メソッドインジェクションを利用してCookieの値を偽装する

前回の続きです。

https://qiita.com/KyongminS/items/c9be3334cc8a6189f25e

今回紹介するユースケースとしては、

**テストしたいCookie処理を含むメソッドがサービスファイルに存在しており、そのメソッド使用しているcontrollerのURLを呼ぶと色々副作用がありそうで面倒くさそうなので、そのメソッド単体を呼び出せるようにしてテストしたい**

というケースです。

Cookie関連の処理を含むメソッドは、Cookieの特性上、URLリクエストを通してテストする必要があります。

この方法で取得されるCookieは暗号化されているので、暗号化処理のミドルウェアを無効にします。use で WithoutMiddleware をインポートすると他のミドルウェアも無効になってしまうので、以下の記述を対象のテストケースの先頭に書きます。

“`php
$this->WithoutMiddleware(\App\Http\Middleware\EncryptCookies::class);
“`

テストしたいメソッドは以下です。

元記事を表示

【Laravel】メソッドインジェクションを利用してRequestを偽装しよう!

Laravelでリクエストを受け取ってゴニョゴニョしているメソッドをテストしたいとき、役に立つのが**メソッドインジェクション**です。
ここでは詳しく話しませんが、「サービスコンテナ」で調べると色々情報が出てきます。

https://laravel.com/docs/11.x/container

(Laravel8ですが)

https://readouble.com/laravel/8.x/ja/container.html

今回はこのメソッドインジェクションを利用して、`Request::xxx()` 系の処理をテストする方法を紹介したいと思います。

## Request::root

`Request::root()` と `request()->root()` の出力は一緒です。

“`php
$this->assertEquals(
request()->root() . “/sample”,
Request::root() . “/sample”
);
# => OK
“`

## Request::get

リクエスト偽装の方法として、`Re

元記事を表示

WordPressで自前のAPIを作成する方法

# 結論
`rest_api_ini` フィルタを使おう。
ついでに勝手に使われるといけないので以下のフィルタを使って、認証処理も実装しましょう。
– `determine_current_user`
– `rest_authentication_errors`

# 作成するエンドポイント
“`
https://ブログドメイン/wp-json/myapi/v1/helloWorld
“`
# コード
“`php:完成系
// 使いたいAPIの中身を書こう
function helloWorld()
{
echo ‘Hello World!’;
}

// 自作のAPIを作る
add_action(‘rest_api_init’, function () {
register_rest_route(‘myapi/v1’, ‘/hello’, array(
‘methods’ => ‘GET’,
‘callback’ => ‘helloWorld’,
‘permission_callback’ => function ()

元記事を表示

WordPress.comでREST API経由で画像にalt属性を付与するときの罠

今日の懲りずにWordpress.comの記事です。

:::note warn
Wordpress.comでWordpress.orgのREST APIを使っています。
:::

Wordopress.comのREST APIにはalt属性を設定するインターフェースがあります。

**Wordpress.com のREST API**

https://developer.wordpress.com/docs/api/1.1/post/sites/%24site/media/new/

**Wordpress.org のREST API**

Media

これを使う上で注意しないといけないのは、ここでalt属性を設定した画像を記事中で使用するとき、
– REST API経由で文章を投稿している
– 投稿した画像のURLを記事中に `img` タグで埋め込んでいる
– 記事の文書をHTMLやMarkdownで作成している

ときは、**imgタグのalt属性を自分で取得してあげる

元記事を表示

Docker,Laravel,ReactのSPA開発【開発編】

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はDocker、Laravel、Reactを用いたSPA開発のハンズオンについて記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
本記事では、Dockerを使用してLaravelバックエンドとReactフロントエンドの環境を構築し、SPA(Single Page Application)を開発する手法を解説します。Docker Composeを使用して複数のサービスを簡単に管理し、効率的な開発環境を整えます。

# 開発
## Laravel APIの作成
routes/api.php ファイルを編集し、APIルートを追加します。

“` php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::middleware(‘auth:api’)->get(‘/user’, function (R

元記事を表示

Docker,Laravel,ReactのSPA開発【環境構築編】

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はDocker、Laravel、Reactを用いたSPA開発のハンズオンについて記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
本記事では、Dockerを使用してLaravelバックエンドとReactフロントエンドの環境を構築し、SPA(Single Page Application)を開発する手法を解説します。Docker Composeを使用して複数のサービスを簡単に管理し、効率的な開発環境を整えます。

# 前提条件
以下のツールがインストールされていることを前提とします:

– Docker
– Docker Compose
– Node.js
– npm または yarn

# 環境構築
## プロジェクトディレクトリの作成
まず、新しいディレクトリを作成し、プロジェクトのルートディレクトリとします。

“` bash
mkdir laravel-react-spa
cd la

元記事を表示

WordPress.comの「Application Manager」を使って認証処理を実装してみる

# WordPress.comの認証
Wordpress.com 上のデータを外部から扱うには認証(OAuth2.0)が必要です
Wordpress.comから提供されている認証エンドポイントを利用して、外部からWordpress.comのデータを扱えるようにしましょう。

# 手順
1. Application manager で認証アプリを作る
1. アプリケーションパスワードを発行する
1. 認証処理を実装する

# Application manager で認証アプリを作る
Application Managerのリンクは以下。

https://developer.wordpress.com/apps/

このリンクの右上に「Create New Application」があるのでクリックすると、以下のようなアプリ作成が出ます。

![スクリーンショット 2024-07-09 1.31.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/374872/dc3fc83f-7a61-ea37-31

元記事を表示

Laravelのenvの値はどの優先順位で参照されるのか

# 結論
1. コマンドラインオプション(php artisan test **–env=test** ←コレ)
1. サーバ環境変数
1. `phpunit.xml` の設定値(テスト実行時)
1. `.env` の値
1. `.env.production`
1. `.env.example`

# 補足
サーバ環境変数は
“`zsh
export ENV=production
“`
としたら
“`php
$env = env(‘KEY’);
“`
で参照できます。

無理やりDBのコネクションを変えたりオプションを書き換えたい場合は、コマンドラインオプションを使うのがいいですね。

元記事を表示

Dockerを用いたLaravelの環境構築

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はDockerを用いたLaravelの環境構築について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
Dockerを使用することで、ローカル開発環境を迅速かつ一貫してセットアップできます。このガイドでは、Laravelアプリケーションの開発環境をDockerで構築する手順を紹介します。

# 前提条件
– Dockerがインストールされていること
– Docker Composeがインストールされていること

# 手順概要
1. Laravelプロジェクトの作成
2. Dockerファイルの作成
3. Docker Composeファイルの作成
4. 環境設定ファイルの編集
5. Dockerコンテナのビルドと起動

# 1. Laravelプロジェクトの作成
まず、Laravelプロジェクトを作成します。以下のコマンドを実行して、新しいLaravelプロジェクトを作成します。

“`

元記事を表示

LaravelでAWS S3を利用してみた

# はじめに
こんにちは、Webエンジニアの岩田史門([@SI_Monxy](https://x.com/SI_Monxy))です!
今回はLaravelでのAWS S3の利用について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

# 概要
AWS S3(Amazon Simple Storage Service)は、高い可用性とスケーラビリティを持つクラウドストレージサービスです。Laravelは、その柔軟なストレージシステムを介して、簡単にS3を利用することができます。本記事では、LaravelアプリケーションからAWS S3ストレージを利用する方法について詳しく解説します。

# 前提条件
– Laravelプロジェクトがセットアップされていること
– AWSアカウントがあること
– AWS CLIがインストールされていること

# AWS S3バケットの作成
まず、AWSマネジメントコンソールにログインし、S3バケットを作成します。

## 1. S3コンソールにアクセス
AWSマネジメントコンソールから「S3」を選択します。

元記事を表示

[Vue/Laravel]APIを実装してみる

## はじめに
こんにちは、ゆきおです。
[こちらの記事](https://qiita.com/kazuyuki_11E0/items/2cbd2e14f5108ac3f891)で作った環境でAPIを実行する簡単なサンプルを作ろうと思います。
もともとあるUserモデルを使ってログイン、ログアウトを実装してみます。

## バックエンド
まずSanctumのマイグレーションを行います
“`php
sail artisan vendor:publish –provider=”Laravel\Sanctum\SanctumServiceProvider”
sail artisan migrate
“`
Sanctumの設定ファイルをプロジェクトにコピーし、新たに追加されるpersonal_access_tokens_tableをデータベースに反映させます。

次にデフォルトのUser.phpにSanctumのトレイトを追加します。
“`php
namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenti

元記事を表示

tsunagi-functions(0.1.0.3.5)をLaravelで使う

# はじめに

こんにちは。だい(@ishidad2)です。
晴れ時々SymbolということでSymbolネタの記事を書いていこうと思います。
今回は@nem_takanobu(Taka Nobu)さんが公開されているtsunagi-functionsを使ってPHPからトランザクションを飛ばしてみようと思います。
ちなみに、PHPから飛ばす書いたのですが色々な諸事情あり、Laravel10を使って試してみました。
なお、Lravel10のインストール方法などは割愛させてもらいます。

それでは行ってみましょう!

# Base32 ライブラリのインストール

SymbolHelpers関数内でBase32ライブラリを使うのでインストールしておきます。

“`bash
composer require christian-riesen/base32
“`

# `app/Helpers/SymbolHelpers.php`を作成

ソースコード

“`php

元記事を表示

PHP8 以降で「throw を式として扱える」

PHPマニュアル読んでたら見かけたけどどういう意味やねん!!!

> PHP 8.0.0 以降では、throw キーワードは式として扱えるようになり、 様々なコンテクストで使えるようになりました。 これより前のバージョンでは、throw は文であり、 それが現れる行でだけでしか使えませんでした。

https://www.php.net/manual/ja/language.exceptions.php

ちょっと何言っているか分からなかったので調べてみたら言葉通りでした。
条件式に throw を書けるということですね…。

# サンプルコード

– value が 0 より大きければ value を返却
– value が 0 以下の場合は例外 InvalidArgumentException を投げる

## PHP7以前

“`php
if ($value > 0) {
return $value;
}

throw new InvalidArgumentException(__CLASS__ . ” に範囲外の値が渡されました。” . $value);
“`

#

元記事を表示

令和にやるWordPress

昨今やや下火となってしまった(主観)WordPressですが、かつて世界のウェブサイトの4割がWordPressとまで言わしめたそれがある日突然消えてなくなるわけもなく、当然のように保守業務はやってきます。

以下では、これといって情熱を注ぐこともなく、ざっくり消極的にWordPressをやっつけるための雑な勘所をご紹介します。

ちなみに**私はWordPress好き**です。

# WordPressのテーマファイル

WordPressは根幹となるブログシステムに「Theme」と呼ばれるテンプレートファイル群を充てがうことでウェブサイトを構築します。

構成としては、下記のような形になっています。
なお、`assets`や`templates`等のディレクトリ名は特に制約のない部分なので、基本的には趣味です。
人によっては`common`だったり`template-parts`(たぶん関数名由来)だったりします。

“`
theme
└── ORIGINAL_THEME_NAME
├── assets
│ ├── images
│ │

元記事を表示

Laravelまとめその1 Laravel Sailで11および10環境を構築しよう編

## はじめに
以前まではMWの導入、インストールなどインフラに関する自身のナレッジをアウトプットとしていましたが、どちらかというとアプリよりなPHPのFWであるLaravelを記事としてまとめます。

実務含めいくつかLaravelでプログラムを作ってみたのですが、慣れるまでは覚えることが多く大変でしたが、1度慣れてしまえば便利でとてもいい物だと感じています。

## 環境
今回Laravelを実行する環境はWSL2とDocker Desktopを使用したLaravel Sail環境を活用します。
それぞれの環境のバージョンは以下の通りです。
WSLとかまではバージョン書かなくてもいいような気もしましたが、折角なので残しておきます。

・Docker Desktop:4.32.0
・Docker Engine:27.0.3
・WSL2:2.2.4.0
・Ubuntu:22.04.4 LTS

## インストール前の余談
2024年7月現在ですと、Laravelは11がリリースされており、公式のインストール方法を利用すると、Laravel11がインストールされます。
今回はLarave

元記事を表示

OTHERカテゴリの最新記事