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

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

【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`

# コード
“`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 () {
return current_user_can(‘read’); // 認証が必要
}

元記事を表示

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

元記事を表示

最近出たエラーのふりかえり、解決法

初心者ゆえのくだらないミスだけど、忘れないように残します。
あうとぷっちょ

## 環境
OS: Windows11 バージョン23H2
Laravel: 9.52.16
PHP: 8.1.0
開発環境:MAMP
## 目次
①「Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?)」

②「must not be greater than 11」

③「Log::●●();」「dd();」などを記入してもLaravel.logに反映されない。
***
## ①「Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?)」
●なんて言ってんの?
→「php_fileinfoという拡張モジュールがないからMIME typeがわからんやで。php_fileinfo持ってる?」

●解決法
*

元記事を表示

【BLOCS】テーブルタイプの入力画面を作る

# テーブルタイプの入力画面
複数件のレコードを一度に入力できる画面を、テーブルタイプの入力画面と呼びます。大量のデータを一度に入力したい時に便利です。

# テンプレートを作る
まず1件の入力画面のテンプレートを作ります。次に `data-loop` で入力フォームを複数件にして、テーブルタイプの入力画面にします。

“`html:create.blocs.html

*

“`

バリデーションは、ワイルドカードで項目を指定します。
“`html

OTHERカテゴリの最新記事