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

PHP関連のことを調べてみた2023年10月15日
目次

Array and string offset access syntax with curly braces is no longer supported

PHP8を使うのはやめましょう

“`bash
sudo apt update
sudo apt install -y php7.4
php7.4 -S localhost:8080 -t www
“`

元記事を表示

Your configuration does not allow connections to http://www.smarty.net/files/Smarty-2.6.28.zip. See https://getcomposer.org/doc/06-config.md#secure-http for details.

グローバルのフラグをオフにしてみよう

“`bash
composer config -g secure-http false
“`

https://stackoverflow.com/questions/36151172/secure-http-flag-in-a-composer-json-doesnt-work

元記事を表示

LaravelにDDDを導入する

# はじめに
本記事では**PHP**のフレームワーク**Laravel**に**DDD**を導入する方法を解説します。
前提として…**Laravel**は**MVC**が採用されていたり**Service Provider**などの便利なDIツールが採用されていることから、**DDD**を導入せずとも規則的なコードを書くことが可能になっています。そのため本記事で紹介する内容はあくまで一案を紹介することを目的としています。

# GitHub
– 本記事で紹介するリポジトリ

https://github.com/architecture-template/laravel-ddd

# プロジェクト構成
– ベースは**レイヤードアーキテクチャ**
– **Eloquent Model**(ORM)や**Service Provider**(DI)などを利用して**Laravel**の既存機能を活かした構成にする
– Nginxではなく**Laravel Octane**(Swoole)を使用する

https://readouble.com/laravel/8.x/ja/oct

元記事を表示

GitHub CodespacesでXdebugを使う

1. PHP Debugをインストール
1. launch.jsonを作成
1. Xdebugをリッスン
1. ブレイクポイントを設置
1. Webページを開く

![ezgif.com-video-to-gif (5).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/03356646-3120-7a8d-2d6d-f619ed4a4b1e.gif)

ターミナルからウェブサーバーを起動する場合
![2023-10-14-19-04-31.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/233a2f55-b3c7-7ab3-fb82-efea737b058f.gif)

よろしくお願いします。

元記事を表示

Livewire3.0にアップグレードするとモデルのプロパティを直接バインドできない件

## Livewireでモデルのプロパティを直接バインドする
Livewireでは、Eloquentモデルのプロパティを直接バインドできる。書き方はこんな感じ。

“`
//コンポーネント
use App\User;

class UserForm extends Component
{
public User $user;

protected $rules = [
‘user.name’ => ‘required|max:100’,
‘user.email’ => ‘required|email’,
];

public function save()
{
$this->validate();

$this->user->save();
}
}
“`
“`
//View


元記事を表示

Laravelのbladeでコンポーネントを使う

これまでLaravelのbladeで複雑な画面を開発した経験がなかったのですが、近々開発することになりそうなので、コンポーネントの使い方を調べてみました。
自分用の備忘録です。

### Laravel7以降でbladeコンポーネントが使いやすくなったらしい
Laravel7以降、本記事に記載のように「x-」から始まるタグ名で呼び出せるようになったり、2種類のファイル(phpのコンポーネントクラスとblade)で実装できるようになりました。
ということで、本記事はLaravel7以降のbladeコンポーネントの使い方になります。

### コンポーネントの作成
コンポーネントは2種類のファイルから出来ています。
1. 関連ファイルの作成
“`
php artisan make:component ComponentTest
“`
これで以下の2つのファイルが作成されます。
– `/app/View/Components`に`ComponentTest.php`
– `/resources/views/components`に`component-test.blade.p

元記事を表示

php artisan view:cacheとview:clearって結局なに?

Laravelの`php artisan view:cache`コマンドと`php artisan view:clear`コマンドが何をやってるのか良く理解していなかったので、調べてみました。

### Laravelのテンプレートの自動コンパイル
Laravelのテンプレートファイル(bladeファイル)は大まかに以下の流れで実行される。
“`mermaid
graph TD;
コンパイル済みのテンプレートが存在するか–>存在する
コンパイル済みのテンプレートが存在するか–>存在しない
存在する–>現在のbladeファイルがコンパイル済みのテンプレートと一致するか
現在のbladeファイルがコンパイル済みのテンプレートと一致するか–>一致しない
現在のbladeファイルがコンパイル済みのテンプレートと一致するか–>一致する
存在しない–>現在のbladeファイルからコンパイル
一致しない–>現在のbladeファイルからコンパイル
現在のbladeファイルからコンパイル–>テンプレートを実行
一致

元記事を表示

【Laravel】フォームリクエストで複数フィールドをまとめてバリーでションする方法

## 環境
Laravel v8

## 問題

以下のように電話番号をブロックごとに分けて管理しているとします。
tel1 – tel2 – tel3

今回の例ではこの3つのフィールドを合わせて11桁までにするといったバリデーションをかけたいとします。

その場合、3つのフィールドを一つのものとして扱う必要がありますが、Laravelの標準バリデーションルールにはそのようなものに対応する方法はありません。

## 解決法
### 方針
– リクエストクラス内で三つのフィールドをくっつけた値を追加する。
– 追加された値に対してrules配列の中で適応したいルールを記述する。

### 実装
**リクエストクラス**
validationData メソッドをオーバーライドし、リクエストがバリデーションされる直前に3つの値をくっつけて新たな値を作り、それをマージするといった段取りです。

“`php
public function attributes()
{
return [
“tel_all” => “電話番号”,
];
}

/**
* @in

元記事を表示

PHPカンファレンス2023に初めてスタッフとして参加してとても良かったよというお話

## はじめに

2023/10/8に開催されたPHP Conference Japan 2023にスタッフとして参加しました。

社員の皆さんはこんな奴が最近エンジニアになって頑張ってるんだなと暖かい目で読んでいただければと思います。

社外の方やエンジニアを目指している方は少しでも学習の参考や、コネクター・ジャパンに興味を持っていただければと思います。

## 私について
未経験から独学でプログラミング学習し5ヶ月でLaravelでポートフォリオを作成しました。そして現在は自社開発企業に入社し、WEBエンジニアとしてプロダクト開発に携わっています。エンジニアになって早いもので3ヶ月経ちました!

## この記事を書いた理由
アウトプットをするまでがカンファレンスだと、どこぞの誰かが言っていたのでこの記事を書きました。

## 記事の流れ

PhpConって?
参加の経緯
前日準備
当日
カンファレンスに参加してみて思ったこと
まとめ

## PhpConって?
PHP Conference Japan 2023の略称で、2000年より年に一度開催されている日本最大のPHPのイベン

元記事を表示

Mac,XAMPPのmysqladminでzsh: command not foundが出る時の対処方法

## MacでXAMPPでPHP環境を整えて、コマンドプロンプトでmysqladmin -u root passwordと入力した所エラーが
phpの勉強のためXAMPPをインストールしてMariaDBのデータベースを作成する際に、コマンドプロンプトで
mysqladmin -u root password
と実行した所、
zsh: command not found: mysqladminエラーが。

## 結論:こうすれば動いた↓
mysqladmin -u root password
ではなく、
/Applications/XAMPP/xamppfiles/bin/mysqladmin -u root -p
とフルパスで入力したら動いた。

![スクリーンショット 2023-10-13 4.10.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576117/3352d3a6-1b87-3acf-7661-846024b8ce99.png)

## viエディタでパスを追加しても動かなかった

元記事を表示

General error: 1364 Field ‘uuid’ doesn’t have a default valueエラーが出た時の対処法

# エラーメッセージ

“`
General error: 1364 Field ‘uuid’ doesn’t have a default value (SQL: insert into `failed_jobs` (`connection`, `queue`, `payload`, `exception`, `failed_at`) values (database, default, {“uuid”:”6c370f45-895f-4b6b-99dd-53443ddcfc61″,…
“`

# 原因
Laravelでジョブ失敗テーブルを作成し、わざと例外を発生させジョブを失敗させたところ該当のエラーが出現した。

原因としては`config/queue.php`の`’failed’`、`driver`に`database-uuids`設定されていなかったため。
日本語公式にも説明がなかったため注意が必要。

“`.php
/*
|—————————————————————

元記事を表示

WordPressの投稿コンテンツフィルター機能をReactで制作

`WordPress REST API`を使ってWordPressの投稿データ(コンテンツ)を`json`形式で取得できます。今回はそれを用いて React / TypeScript でコンテンツのフィルター機能を作りました。備忘録を踏まえて記事にしていきたいと思います。
記事構成は【WordPressでの準備編】と【Reactでのフィルター機能実装編】の2部構成にしています。

【使用技術】
– WordPress
– React
– TypeScript
– Vite

# WordPressでの準備編
## WordPressの投稿データ(コンテンツ)を取得する方法
`WordPress REST API`を使ってコンテンツを取得する方法はシンプルです。`取得先のWordPressサイトドメイン/wp-json/wp/v2/`を指定するだけです。下記例では`fetch API`を使っていますが、他の方法(`axios`や`ajax`)でも行えるでしょう。
“`javascript
fetch(‘取得先のWordPressサイトドメイン/wp-json/wp/v2/’);
“`

元記事を表示

Laravelでweb.phpにrouteを書いてもApacheの404エラーになるのは.htaccessの問題

通常、web.phpにURIを書けば動くはずだが
404エラーになる。
それもLaravelの吐き出すグラフィカルな404ではなく
旧来のApacheが出力する文字だけの404
↑ここに気がつくのが遅くてずっとweb.phpやcacheを疑っていたが
Laravel10の.htaccessは

“`


Options -MultiViews -Indexes

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder…
RewriteCond %{REQU

元記事を表示

PHPStormが起動しない (Cannot connect to already~)

# PHPStormが起動しない (Cannot connect to already~)

## エラーメッセージ

“`
Cannot connect to already running IDE instance. Exception: Process 482 is still running
“`

## 解消法

該当のプロセスをkillする

自分の場合はカレンダーアプリを終了したら正常に起動しました
“`
user 482 xxxx /System/Applications/Calendar.app/Contents/MacOS/Calendar
“`

## リファレンス

コミュニティにも報告が上がってる
https://intellij-support.jetbrains.com/hc/en-us/community/posts/13541697317906-Error-while-opening-intellij-Cannot-connect-to-already-running-IDE-instance-Exception-Process-2-

元記事を表示

WordPressのPermalink structureが “/%category%/%post_id%/” かつCategory baseが “.” の時2ページ目以降が404になる問題の解決案

## Permalink structureが “/%category%/%post_id%/” かつCategory baseが “.” の時のWordPressの振る舞い(憶測)

おそらく、

– /[カテゴリ名]/ → カテゴリ記事一覧
– /[カテゴリ名]/[ID]/ → IDが[ID]の記事
– /[カテゴリ名]/page/2/ → IDがpage/2って記事? → 404

となる。

## 解決案

:::note warn
十分に検証していません。
:::

– 全てのカテゴリのリライトルールを先頭に追加する。

“`php
add_action(‘init’, function () {
foreach (get_categories([‘hide_empty’ => false]) as $i) {
add_rewrite_rule(
“({$i->slug})/page/?([0-9]{1,})/?$”,
‘index.php?categor

元記事を表示

scm-manager で作成される svn リポジトリをバックアップする

scm-manager で作成されるsvn リポジトリのディレクトリは単純にリポジトリ名ではなくハッシュか何かで作られていて、かつその情報が metadata.xml に格納され、リポジトリディレクトリが …/data にあるかと思いきや同じ “…/data” が2つ作成されているなどチョーめんどくさいのでどうにかする。

基本的にはプロジェクト情報が記述された metadata.xml を読み込んで対象ディレクトリを決定し、バックアップ名称も決める。

svn-backup-dumps.py に -i を渡しているが週1回程度フルバックアップになるようこのオプションなしで実行しないと差分リビジョンが増えすぎてつらいことになる

“`php

元記事を表示

JavaScriptからPHPへのAPIリクエスト: POSTメソッドの実践ガイド

# JavaScriptからPHPへのAPIリクエスト: POSTメソッドの実践ガイド

## 1. XMLHttpRequestを使った方法

### JS側のコード

“`javascript
// XMLHttpRequestオブジェクトを作成
var xhr = new XMLHttpRequest();

// POSTメソッドとAPIのエンドポイントを指定してリクエストを初期化
xhr.open(‘POST’, ‘https://your-server-endpoint.com/api’, true);

// リクエストヘッダーを設定
xhr.setRequestHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’);

// リクエストの状態が変わったときのイベントハンドラを設定
xhr.onreadystatechange = function() {
// リクエストが完了し、レスポンスが成功だった場合
if (xhr.readyState == 4 && xhr.status ==

元記事を表示

Blade Component はキャメルケースで書く

最近 Blade Component を使ってます。
[PSR-12](https://www.php-fig.org/psr/psr-12) とかだと

– スネークケースで変数は書こうね
– 関数名はローワーキャメルケースで書こうね

って感じなので、そんな感じでやってたら若干ハマりました。

#### NG
“`html

“`

#### OK
“`html

“`

[PSR-12: 4.7 Method and Function Calls](https://www.php-fig.org/psr/psr-12/#47-method-and-function-calls) をよく見ると、引数はキャメルケースみたいです。(むずすぎいい!!)

# まとめ
|内容|書き方|例|
|—|—|—|
|変数|スネークケース|test_val|
|関数|ローワーキャメルケース|testMethod|
|引数|ロ

元記事を表示

PHP Conference Japan 2023に登壇しました。

## はじめに

[PHP Conference Japan 2023](https://phpcon.php.gr.jp/2023/)に参加・登壇してきました!
私が所属している[NE株式会社](https://ne-inc.jp/)は本イベントのシルバースポンサーでした。
(温泉の素を配っていた会社です!)

## 登壇

発表概要と資料はこちらです。

https://fortee.jp/phpcon-2023/proposal/383e4223-02f0-4229-93b4-ccae3247527a

社内外で登壇する機会はまぁまぁあるので直前まではあまり緊張しませんでしたが、やはりLTの待機列で待ってる間に徐々に緊張してましたね。
LTって他の講演と違って並列の講演がないので参加者ほぼ全員が聞きに来るんですよね。
今回のぺちこんは大体1000人くらいの参加だと聞いているので、私

元記事を表示

Composerについて

# Composer #

Composer(コンポーザー)は、PHPの依存関係管理ツールで、PHPプロジェクトで使用されるライブラリやパッケージを管理およびインストールするためのツールです。

## Composerの特徴 ##
1. **依存関係の管理**:
– Composerは、PHPプロジェクトの外部依存関係(ライブラリ、フレームワーク、パッケージなど)を管理します。これにより、プロジェクトのコードベース内に必要なパッケージを簡単に追加、削除、アップデートできます。

2. **自動的な依存関係解決**:
– Composerは、依存関係を解決する際に、各パッケージが必要とするバージョンを選択し、競合を解決します。これにより、依存関係が正確に管理され、バージョンの競合や互換性の問題が最小限に抑えられます。

3. **プロジェクトごとの設定**:
– Composerは、プロジェクトごとに独自の`composer.json`ファイルを使用して依存関係を定義します。このファイルには、プロジェクトで使用するパッケージとそのバージョン情報が含まれます。

4. *

元記事を表示

OTHERカテゴリの最新記事