PHP関連のことを調べてみた2022年12月08日

PHP関連のことを調べてみた2022年12月08日
目次

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑧Apache の設定ファイルの追加(全8回)

# はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![スクリーンショット 2022-11-30 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/930bcd24-38e9-316e-bebd-cef83aea5924.png)

手順は全 8 回です。

[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
[③ PHP 8.1 系のインストール](https://qiita.com/ryamate/items/7a38eb11d64d504a7a22)
[④ Composer のインストール](https://qiita.com/ry

元記事を表示

SymfonyでDBを扱うセット、”ORM Pack”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の8日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy

元記事を表示

Laravel8(API) × Vue.js で中間テーブルにPOSTする

現在お知らせ機能を実装しており、「次回から表示しない」ボタンを配置しています。ユーザーごとにどのお知らせを非表示にするかを管理するために、中間テーブルを作成しています。
現状はINSERTで中間テーブルにレコードを追加しています。
Vue.jsでaxiosを使って、APIからお知らせの情報を取得&表示まで実装済。
今回はAPIを完成することをゴールとします。

Laravel8(APIモード)
Vue2(SPA)

### 実装手順
– 中間テーブルのモデルを作成&関連付け
– UserControllerで中間テーブルへPOSTする内容を記述
– ルーティングの設定(api.php)
– PostmanでPOSTリクエスト送信
– Vue.jsからのリクエスト→APIとの疎通を確認
### 中間テーブルのモデルを作成&関連付け

多対多の中間(ピボット)テーブルのモデルを作成する場合、`using`メソッドを呼び出すこと。
Notificationsモデル
“`php
public function users() {
return $this->belongsTo

元記事を表示

DoctrineとEloquent比較大全8: リレーション先テーブルのデータを利用

day8の今日はday7で定義したリレーション先テーブルのデータを利用する方法を見ていきます。

## Doctrine

“`php
getRepository(Book::class)->find(1);
echo $book1->getAuthor()->getName(); // Authorのnameを見ることができる

$author1 = $entityManager->getRepository(A

元記事を表示

continue文は結局続けるの?続けないの??

# はじめに
はじめまして!
NE株式会社 開発統括部のはやしまきです。

エンジニアのみなさん、タイトルを見てこいつ何言ってんだとなっていることでしょう。

すんごい今更なのですが、
コードを読んでいる際、continue文を見ると
「continueって結局続けるんだっけ…?」とよくわからなくなるときがあります。

ここはスキップだよな…と思いながらも心配になり、リファレンスを開くというのを何度もやってます。リファレンスをブクマしておいた方がいいですね。お守りです(?)

意味をもぐもぐ咀嚼し、納得して、もう開かなくていいように記事に残します。
一緒にもぐもぐできたら幸いです!

この記事は、[NE Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ne) 8日目の記事です。

# なぜ勝手に混乱してるのか

– 英単語の”continue”は「継続する」の意味
– for文などのループ構造で用いられた際、スキップの指示する

おいおいおい、継続するんかやめるんかどっちや…
どこまでをやって、どこからはやらない

元記事を表示

FeatureTestとユニットテストの使い分けについて

## LaravelでTDDしていますか?

Laravelのプロジェクトを新規作成すると、tests/Feature, tests/Unitディレクトリがついてきます。
tests/Featureの下にはFeatureテスト、tests/Unitの下にはユニットテストを書いてほしそうな構成です。

では、あなたのユニットテストが継承しているTestCaseクラスは `Tests\TestCase` でしょうか、それとも `PHPUnit\Framework\TestCase` でしょうか?
もちろん、 `Tests\TestCase` 自体が `PHPUnit\Framework\TestCase` を継承しているので、 `extends Tests\TestCase` なテストであっても `PHPUnit\Framework\TestCase` を継承はしています。

Tests\TestCaseはsetUp()でLaravelのapplicationを起動しています。
Laravelのapplicationが起動されていることによって、テスト時もFacade等の便利な機能が使える

元記事を表示

【PHP】データベースの型にdecimal(1,0)を使用する

# 初めに
:::note warn
この記事は初学者を対象に書かれています
:::
最近Laravleの改修案件に参画しているのですが、

新しくテーブル、カラムを追加する機会があったので

その時に疑問に思ったこと、学んだことを共有します。

## decimalとは
`decimal`とは固定小数点数型のことで、記述方法か以下のようになります

“`
decimal(M,D)
“`
>M ->桁数の合計 (精度)
D ->小数点以下の桁数 (スケール)

最大桁数 (M) は `65`
デフォルトは `10`
小数部の最大桁数 (D) は `30`
デフォルトは `0`

例えば、`decimal(5,3)`の場合、

`12.345`のように

5桁で小数点以下3桁の数字になります

## データベース設計においての有効性
データベース設計において、データの型はとても重要です。

例えば以下のようなデータベース設計はどうでしょうか?

usersテーブル
| Column | Type | Option |
|:-:|:-:|:-:|
| id | int | P

元記事を表示

laravelでcreateした時の戻り値にidがない、idが取得できない

# 結論
モデルの中の下記が原因
“`php:laravel
class ProductFile extends Model
{
/**
* @var bool
*/
public $incrementing = false;

}
“`
コマンドで作成する時にデフォルトで入っている?

元記事を表示

javascriptのfetchAPIで外部にあるphpファイルやxamppにあるphpファイルにアクセスしようとしたらなんか出来なかった

タイトル通り
しかしjsが記述されてるファイルと呼び出されるphpファイルが同じフォルダに置いてあるとアクセス出来た!
これがCORSか。

jsから外部リソースにアクセスするため、
jsファイル側では、
fetch()の第二引数内でmode: “cors”を指定する。
アクセスされるphp側では header()でAccess-Control-Allow-Originを設定すればアクセス出来る。

元記事を表示

ユーザー認証しないLaravel Sanctum

そんなケースあまり無いと思いますが、SanctumでトークンベースのAPI作りたいけど、ユーザーのログインは必要ないときのメモです。

# 準備
## 導入
まずは以下に則って導入します。

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

# 実装
## モデル作成
まずは、Sanctumを導入したときに追加されるテーブルのモデルを作ります。

“`php:PersonalAccessToken.php
use Laravel\Sanctum\PersonalAccessToken as SanctumPersonalAccessToken;

class PersonalAccessToken extends SanctumPersonalAccessToken
{
use HasApiTokens;
/** 省略 **/
}
“`
通常HasApiTokensはUserモデル等でuseしますが、今回はユーザー認証が必要ないので、自分自身に紐づくようにPersonalAccessTokenでuseします。

元記事を表示

Doctrine ORMでPostgreSQLのforeign keyをDEFERRABLE INITIALLY DEFERREDにする

Doctrine ORMでリレーションを定義すると、PostgreSQL用のforeign key(外部キー制約)は `NOT DEFERRABLE INITIALY IMMEDIATE` となります。

Doctrine ORMを使っているPHPアプリケーションのみで使うデータベースを作っている場合は特に問題にはならないでしょう。すべてのデータベースアクセスはDoctrine ORMを使って行うので、foreign keyのオプションを気にする必要はないからです。(PostgreSQLの便利機能は使わない前提)

では、他のシステムとデータベース全体や一部テーブルを共有する場合など、データベース設計としてdeferrableなforeign keyがほしいときはどうすればいいか?

## Doctrine ORMのDDL管理の仕組み

(ORM) マッピング定義(annotation,attribute,yaml,php設定ファイル等でPHPのクラスにマッピング定義をつける)

(ORM) MappingDriverが各形式のマッピング定義を読み込み、連想配列化

(ORM/DB

元記事を表示

はじめてのDocker In Windows

## 概要
この記事は、初めてDockerを触って複数のコンテナを連携させたAPIサーバー環境を
作成するところまでの手順をまとめたメモです。
これから初めてWindowsでDockerを触ろうという方の取っ掛かりになれば幸いです。

## 環境
– Windows10
– git bash
– Windows Terminal
– Rancher Desktop

## 準備
Dockerを使うために [Rancher Desktop](https://rancherdesktop.io/) をインストールします。

インストーラをダウンロードして起動し、最後までインストールが完了したらターミナルで`docker`コマンドが使えるかの確認を行います。

“`bash
$ docker –version
Docker version 20.10.17-rd, build c2e4e01
“`
無事にインストールできたようです。

## 普通にコンテナを作成してみる。
Apacheがインストールされたコンテナを作成し、ブラウザでアクセスできるところまでやってみます。

### イメ

元記事を表示

地図(Google Map)の任意地点に円を描き、人口データの属性を持つ町丁目ポリゴンを取得し、表示する

# 概要説明
Google Mapを使用し、地図の任意地点に円を描き、円内のエリアを人口データの属性を持つ町丁目ポリゴンで表示させ、データを取得してみました。この記事は[Maps JavaScript APIを使ってGoogle Mapに町丁目ポリゴンを表示してみる](https://qiita.com/yan_x/items/c069c8fb7c5d2648fe50)の拡張内容です。Google Mapの地図表示や地図上のポリゴン表示に興味がある方は上記の記事を一読頂ければ幸いです。

## 使用するもの
* Google Map
* Maps JavaScript API
Google Mapで提供されている API の中の一つで、独自のコンテンツと画像を使って地図をカスタマイズして、ウェブページおよびモバイルデバイスに表示できます。

https://developers.google.com/maps/documentation/javascript?hl=ja

* PHP
* JavaScript
* 町丁目ポリゴン(TerraMap API)
町丁目とは行政界の一つで「

元記事を表示

【続・年末年始は積みゲーを消化したい!】PHP + Steam Web API + discord-php で Discord Bot に自分の積みゲーを発言させる

本記事は、[サムザップ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/sumzap) の12/7の記事です。

# はじめに
はじめまして、サムザップの[北島](https://twitter.com/RyotoKitajima)です。

ゲーム会社で働いているだけあって、私はゲームが大好きです!
特にPCゲームが大好きなのですが、仕事が忙しい社会人はついつい積みゲーが増えがちですよね(ゲームを買っただけで満足してしまう…)。

自分はどのくらい積みゲーが溜まっているのか!?
それを把握するため、[12/4の記事](https://qiita.com/RyotoKitajima/items/b9cbe230c42ab85d50b6)では、Steam Web APIを使った簡単なPHPプログラムを動かし、自分のSteamアカウントの積みゲー(プレイ時間が1時間以下のゲーム)の一覧を取得しました。
そして、その結果、91本もの積みゲーが溜まっているという状況が分かりました。
もうすぐ年末年始の休みが来ますが、さ

元記事を表示

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回)

# はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/f64f4672-7016-bf2f-d895-b722540d10f7.png)

全 8 回を予定しています。

[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
[③ PHP 8.1 系のインストール](https://qiita.com/ryamate/items/7a38eb11d64d504a7a22)
[④ Composer のインストール](https://qiita.com/ryamate/items/a8bbd003c

元記事を表示

CLIツールを簡単に作れる、”Console”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の7日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy

元記事を表示

React(MUI)+PHP(Laravel)+PostgreSQLで環境構築~DB取得まで

今まで、WEBアプリはjsp/servletばかりで開発していました。
今回はSPAで簡単なCRUDアプリを作成するために必要な勉強をしました。
その際に一連の情報がまとまっていると便利かと思い、備忘録として記していきたいと思います。
改善点・誤記等ありましたら、コメントにてご指摘いただけると幸いです。

# 目次
– [やりたいこと](#やりたいこと)
– [環境構築](#環境構築)
– [事前準備](#事前準備)
– [React](#react)
– [React基本パッケージインストール](#react基本パッケージインストール)
– [Reactプロジェクトの作成](#reactプロジェクトの作成)
– [Reactローカルサーバー立ち上げ](#reactローカルサーバー立ち上げ)
– [React用ライブラリインストール](#react用ライブラリインストール)
– [PHP](#php)
– [PHP基本パッケージインストール](#php基本パッケージインストール)
– [PHPプロジェク

元記事を表示

DoctrineとEloquent比較大全7: テーブル間のリレーションを定義

day7の今日は、テーブル間に外部キーによるリレーションがある場合にDoctrine, Eloquentそれぞれでどうやって表すか見ていきます。

SQL的にはauthorsテーブルとbooksテーブルへのauthor_idカラム(authors.idに対する外部キーつき)を追加しています。

## Doctrine

author_idを追加したbooksテーブルを表すBookエンティティにはauthor_idプロパティでなくauthorプロパティを追加します。
“`php

元記事を表示

レガシーシステムに書けるテストについて

PHPカンファレンス2022で [フラットなPHPからオブジェクト指向で自動テストのあるPHPへ、そしてフレームワークへ](https://fortee.jp/phpcon-2022/proposal/ef41a5ba-4efd-4a9f-b6a8-ae456df00541) を発表した際に、「クラス化されていないレガシーシステムに対してテストを書いてリファクタしていくにはどうすればいいか?」という質問を受けました。
その場で「自分で自分のシステムに対してスクレイピングすると良い」という形で言葉で回答はしましたが、実際にどうやるのか他に例が見当たらなかったので、この場を借りて走り書きですが例を示したいと思います。

## テストしたい対象のレガシーシステム

このようなハイパーレガシーコードなシステムがあり、index.phpというURLでアクセスできるとします。

“`php

こんにちはさん
“`

## スク

元記事を表示

composer installでエラーが発生して実行できなかった(PHP Fatal error: Uncaught ArgumentCountError:)

## composer installでエラー
“`console:コンソールエラー
PHP Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in phar:///usr/local/Cellar/composer/1.10.9/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php:84
“`

## 解決法
下記を実行して、composerのバージョンをアップグレードする。
“`console
composer self-update –1
“`

## 参考にしたサイト
https://github.com/composer/composer/issues/9097

## エラー全文
“`console$ composer install
PHP Deprecated: Return type of Symfony\Component\Console

元記事を表示

OTHERカテゴリの最新記事