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

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

Laravel まったくわからん

# Laravel まったくわからんので,わかるようにしていく過程を載せる

– Laravel 6.x
– PHP 7.x

## Eloquent

– `firstOrFail` / `findOrFail`
– `RecordNotFoundError` が出る
– `fill`
– モデルオブジェクトに値を設定できる

## Arr

– `Arr::only`
– assoc から指定したキーのみ含む assoc を作る
– `Arr::random`
– array からランダムで1つ選択する

## PHP / array

– `array_keys`
– assoc からキーの配列を取り出す
– `array_key_exists`
– array のキーの存在チェック
– `array_merge`
– assoc をマージする

## PHP / trait

– `use`
– インポート的な

## PHP

– `self::`
– クラスメソッドを instance メソッド内で読

元記事を表示

Mapbox GL JSを使って地図に多角形を描き、多角形内の人口データを持つポリゴンを取得し、表示する

# 概要説明
今回は、[Mapbox GL JS](https://docs.mapbox.com/jp/mapbox-gl-js/overview/)を使って地図にフリーハンドの多角形を描きサーバーと連携、多角形内の町丁目ポリゴンを取得・表示し、町丁目ポリゴンが持つ人口データを出力してみました。
まず、この記事の関連記事を紹介します。
Mapbox GL JSを使用して地図の表示や町丁目ポリゴンの表示に興味ある方はこちら、

https://qiita.com/Book-Ma/items/2cfc5bc68606bd6e2366

本記事と同じ内容ですが、Google Mapで実現してみたい方はこちらの記事を読んでいただけると理解しやすいかと思います。

https://qiita.com/y-mto/items/5c9e1a18b9442d434375

# ソース構成
最終的なソース構成は以下になります。
“`
.
└─サーバサイド
└─index.php
.
└─フロントサイド
├── index.html
└── index.js
“`

# 完成イメー

元記事を表示

キャッシュ設計(3) – 依存

## キャッシュは難しい

この記事ではWebアプリケーションの出力のキャッシュが困難な理由とそれを解決する方法について考えます。

## 静的コンテンツのキャッシュの実際

静的コンテンツは完全にHTTPキャッシュが実現されています。

CSSファイルやJSファイルをCDNに載せるのは簡単です。一度ディプロイしてしまえば基本的には変更がないものとしてTTL(生存期間)を設定できます。

HTMLではサーバーはそのファイルがいつ最後に更新したかを知ることができますし”Last-modified”ヘッダーに付加することができます。変更があれば以前のETagを無効にして新しい”ETag”を有効にします。いつコンテンツの変更があったのかそのを正確に、低いコストで知ることができます。そのETagの維持には関心を払う必要さえありません。全ては自動でHTMLファイルのキャッシュは完璧です。一度GETされたHTMLはCDNとクライアントに保存され、コンテンツに変更があっても条件付きリクエストで即座に反映されます。

## Webアプリケーションでは管理が必要

Webアプリケーションのイベントドリブ

元記事を表示

業務でよく使用したPHP関数、Laravelヘルパ関数

## はじめに
本記事は[アイレット株式会社 22新卒 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/iret-22)の記事となります。

私は最近初めてLaravelを使い、開発を行うようになりました。この記事を書いている時点では、Laravelを使い始めて約5ヶ月になります。
この記事では、これまでよく使用したり、混乱しがちであったPHP関数、Laravelヘルパ関数について、書いていきたいと思います。
記事を書くのが初めてなので、至らぬ点も多いかとは思いますが、温かい目で見守って頂けますと幸いです。

## empty(), is_null(), isset()
null判定を行う際、どの関数を使って良いのかわからなくなる事が多かったので、まとめました。

### empty()
null, 0, “0”, false, 空配列である時にtrueを返します。


“`
$value = 0;

empty($value) ; // true
“`

### is_null()
nullである時のみ

元記事を表示

Symfonyのデバッグツール、”Profiler”

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

## 最初に
[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のコンポーネントは、S

元記事を表示

【Laravel6 / MailHog】ユーザー招待機能の詳細設計と実装(3)招待メール送信処理

# **はじめに**

ユーザー招待機能の詳細設計と実装(3) 招待メール送信処理 について投稿します。

Web業界実務未経験での転職活動用にポートフォリオとしてはじめて作成したWebアプリ開発のオリジナルの機能として **家族ユーザー招待機能** を実装したときのものです。

※ 作成したポートフォリオは、絵本を読み聞かせしたことの記録・管理を、家族と共有できるWebアプリケーションです(作成期間は、2021年2月末〜7月)

https://qiita.com/ryamate/items/c3b4f63f8d94ab090bf8

## 投稿内容(全5回)

本連載は以下の順番で投稿します。

– [招待ユーザー機能の概要と基本設計](https://qiita.com/ryamate/items/751b06dc95ab9b24e361)
– **招待ユーザー機能の詳細設計と実装**
– [(1) 招待メール送信フォーム](https://qiita.com/ryamate/items/a1d0a5b1db9d11a69671)
– [(2) マイグレーションフ

元記事を表示

【PMMP4】Minecraftにスピード感を実装する

## 前書き
かの映画のように閉まりゆくシャッターと地面の僅かな隙間をスライディングで突破したり、華麗に壁を利用し遥か上の足場へと颯爽に移動するスピード感のあるアクションに憧れを覚えたことはあるでしょうか

長年の勤労()により現在腰を痛めている私には現実での習得が困難であるため、Minecraftで実装を試みることにしました

それでは、対戦よろしくお願いします

:::note warn
この記事のコードはあくまでもサンプルのため、各自の用途に合わせて実装し直すことを強く推奨します
:::

## 目次
・[二段ジャンプ](#二段ジャンプ)
・[スライディング](#スライディング)

## 二段ジャンプ
Terr●aの瓶入りの雲的なものを実装します。
これを実装するに今回はジャンプ後に何かクライアント側(Player)でアクションを起こし、それをサーバー側で感知する手法で実装します。

ジャンプ後に行うアクションには、
– ジャンプ
– スニーク
– クリック (ItemUse)

などが挙げられますが、今回はジャンプキーだけで二段ジャンプを実装できる方法を考えてみます。

通常

元記事を表示

【PHP】$_SERVERが環境によって想定どうりに動いてくれない【落とし穴】

## はじめに
PHPの$_SERVERでドメインまでのURLを取得しようとしたときに、本番環境と検証環境、開発環境で挙動がことなることではまったので共有。
AWSを使用した環境で陥りがちなミスかと思います。

## 具体的な内容
### ミスっていたときのコード
開発環境はオンプレのサーバー上にあり、検証・本番環境はAWSサーバー上にあります。開発環境でのプロトコルはhttpですが、検証・本番環境はhttpsです。
画像を取得する際ためにドメインまでのURLを取得するために以下のように書きました。
“`PHP
$domain = (isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’) ? ‘https’ : ‘http’ . $_SERVER[‘HOST’];
“`
この書き方ではAWS上の検証環境・本番環境に上げた際にhttpsだと判断されず思うような挙動になりませんでした。

### 想定した動作をしなかった原因
AWS上でアプリケーションサーバの前にロードバランサーを置いていて、サイト自体はHTTPSだが、
実際のS

元記事を表示

プログラミング初学者がPHPを勉強する(foreach文編)

# 自己紹介
・製造業(全くパソコン触ったことない)からエンジニア転職を目指して学習しています。
・プログラミング初心者です。
・学習したことをメモ程度に書いていこうと思います!
# 何について?
今回はforeach文について記載していきます!

# •foreach文とは
配列の時に使えるループ処理で、配列の要素分ループ処理をしてくれる。
### while文やfor文との違い
・ループ処理の終了条件を書かなくても良い!
(要素分しかループしないから。)
・添字が数字じゃない連想配列もループ処理できる。
(配列に入ってる要素の順番に展開してくれるから。)

# •foreach文の使い方
“`
foreach ( <配列の変数> as <各要素が格納される変数> ) {
ループ処理をここへ記述
}
“`
これはインデックス配列のときなどに使うのでイメージしやすいから使いやすい!

“`
foreach (<配列の変数> as <各要素のキーが格納される変数> => <各要素が格納される変数> ) {
ループ処理をここへ記述
}
“`

連想配列の時に使う。キーの序列

元記事を表示

phpで現在のURLを取得する関数を作った。

## はじめに
phpで現在作動しているファイルのURLを取得する関数を作りました。

## コード
“`php
function now_url($status = 0){
if($status === 0){
return (((!empty($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] !== ‘off’) ) ? “https://” : “http://”).$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
}else if($status === 1){
return strtok((((!empty($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] !== ‘off’) ) ? “https://” : “http://”).$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’], ‘?’);
}
})
“`

## 使い方
### クエリ文字列あり
“`php
now

元記事を表示

phpでリダイレクトをする関数を作った

## はじめに
phpでリダイレクトする時、通常は以下のような書き方をします。
“`php
header(“location:URL”);
exit;
“`
ヘッダー情報を上書きするんですね。
ただ、この二行を書くのが面倒臭かったので関数にしました。
需要はほぼなしですが…

## コード
“`php
function redirect_page($status = 0,$status_one_url = null){
if($status===0){
header(“location:”.(isset($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’ ? ‘https’ : ‘http’) . ‘://’ . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’]);
exit;
}else if($status===1){
header(“location:”.$status_one_url);
exit;

元記事を表示

phpのリロード対策で最も簡単な方法(二重送信防止)

## はじめに
phpで掲示板などを作るとき、リロード対策をしなければなりません。
そうしないと、連続投稿が簡単になってしまい、スパムの産みの種となってしまいます。

## そんな時は?!
以下のコードで解決!
“`php
if($_SERVER[“REQUEST_METHOD”]===”POST”){
//処理
header(“location: URL”);
exit;
}
“`

## 仕組み
POST送信がなされているか条件分岐で確認し、処理をした後にリダイレクトします。
“`URL“`とあるところにリダイレクト先のURLを入力してください。

## 終わりに
びぼーろく

元記事を表示

axiosで画像を生PHPに送る【vue3/CompositionAPI】

始めまして、Fumiyaと申します。
普段は田舎の大学に通いつつ、画像収集の効率化を図るWebアプリの個人製作を行っています。好物はさわやかのハンバーグです。
主な制作物については[GitHub](https://github.com/Fumiya0719)にピンしてありますのでそちらをご確認下さい。

さて、今回はそんな個人製作を行っている中で、
ローカルからアップロードした画像を自作API(PHP)に送り、データベースに保存しようとして詰まった部分があったので、成功時の私の実装を備忘録的に紹介します。
## 環境
– Vue3
– Composition API (script setup構文)
– TypeScript
– PHP (Laravel等のフレームワークは不使用)
## 目標
– vueコンポーネント内で読み込んだ画像(.png)をaxiosでAPI(PHP)に送信する
– 送信したデータをそのまま返却し、ログ出力する

実際はAPI内でデータベース登録処理などを行いますが、今回はそこが本質ではないので割愛します。
## 結論
以下のようなコードを実装します。
###

元記事を表示

php mb_send_mail から送信したメールがGmailに弾かれてしまう場合の対処

久しぶりにPHPで業務処理を書いていてメールを送信する必要があったので何の迷いもなく `mb_send_mail` で送信していたところ、案件関係者から「メールが届かない」との報告があり調査することに。
私のアカウント(独自ドメイン)には問題なく届いていたので、この時点では個別アカウントの問題か、ドメインの問題か、はたまた送信処理が途中でコケたのか判断が付きませんでした。
なお、今回のシステムはAWS EC2上のWebサーバーで稼働しており、タイトルの通りバックエンドはPHPです。

何はともあれ、事実確認のためにログを探ってみることに

WebサーバーにSSHして `/var/log/maillog`を探ってみます。
はい、すぐに見つかった。

“`
Dec 19 11:16:44 localhost postfix/smtp[18306]:
53A007B4C9: to=,
relay=gmail-smtp-in.l.google.com[64.233.188.22]:25, delay=0.96,
delays=0.01/0.0

元記事を表示

Laravelで絞り込み検索に役立つ構文

# この記事について

キーワード検索+日付絞り込み+ソートなど複雑な絞り込みを行う際に条件を保持したり、eroquentの条件分岐をどう実装するかの備忘録

## 絞り込みSQL

### 「●●の時にwhere句をくっつける」

$keywordが存在している時、where句による絞り込みを行う。

“`PHP
when(isset($keyword),function($query) use($keyword){
return $query->where(“name”,”LIKE”,”%” . $keyword . “%”)
});
“`

### 「( A or B ) or ( C and D )などの括弧付き条件を実装するには?」

“`PHP
$users->where(function($query){
return $query->where(“条件A”)->orWhere(“条件B”);
})->orWhere(function($query){
return $query->where(“条件C”)->where(“条件D”);
})

元記事を表示

FuelPHP の Pagination を読んでみた。

## FuelPHP の Pagination を読んでみた
FuelPHP の Pagination を使っているコードを読んでいて、自分で Pagination を使った実装しようかと思ったけど、その前に仕組みが気になったので、FuelPHP の Pagination の内部実装を見てみました。

https://github.com/fuel/core/blob/2c8c548a2f9f4aa08ecfe321c3e744d03472479c/classes/pagination.php

## 読む順番

Controller 側での pagination の初期化から、

“`php
$pagination = \Pagination::forge(‘name’, $config)
“`

View 側での レンダー処理の順で読んでいきます。

“`php
echo Pagination::instance(‘mypagination’)->render();
// つまり
$pagination->render()
“`

## Pagination を読んでみる

元記事を表示

キョムからYiiの環境構築:Ubuntu

## まえがき
Adventカレンダー21日目の投稿予定です
## What is Yii framework?
YiiはPHPのフレームワークで日本ではあまり採用されないものの海外では評価が高いフレームワークです
特徴は
・MVCによるUI構成
・完全オブジェクト思考
・軽量高速で負荷に強い
上記以外にもたくさんのメリットがあります
詳しくは公式サイトを見てみてください

https://www.yiiframework.com/doc/guide/2.0/ja/intro-yii

## 早速導入!
### composerの導入
まずは公式サイトにそってcomposerをインストールします
~~~bash:console
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -v
~~~
この画面がでればインストール成功です
![image.png](https://qiita-image-store.s3.ap-northea

元記事を表示

Laravel のリクエストだけでなく、レスポンスもバリデートしよう

こんにちは。やまゆです。

この記事は [PHP アドベントカレンダー 2022](https://qiita.com/advent-calendar/2022/php) 18 日目のものとなります。

前日の 17 日目の記事は @tanakahisateru さんの[ちょうぜつ設計とは](https://qiita.com/tanakahisateru/items/3024bdd650b6614b2f27)です。
翌日の 19 日目の記事は @ippey_s さんの [GitHub CodespacesでリモートPHP開発環境を整えてPhpStormで使う3ステップ](https://qiita.com/ippey_s/items/616213e1b2c98a68bbb7)です。

## リクエストのバリデーション

https://laravel.com/docs/9.x/validation#form-request-validation

Laravel には [FormRequest](https://laravel.com/api/9.x/search.html?sear

元記事を表示

オブジェクトにステータスを、”Workflow”

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

## 最初に
[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のコンポーネントは、S

元記事を表示

【Laravel6】ユーザー招待機能の詳細設計と実装(2)マイグレーションファイルからのテーブル作成

# はじめに

ユーザー招待機能の詳細設計と実装(2) マイグレーションファイルからのテーブル作成 について投稿します。

Web業界実務未経験での転職活動用にポートフォリオとしてはじめて作成したWebアプリ開発のオリジナルの機能として **家族ユーザー招待機能** を実装したときのものです。
※ 作成したポートフォリオは、絵本を読み聞かせしたことの記録・管理を、家族と共有できるWebアプリケーションです(作成期間は、2021年2月末〜7月)

https://qiita.com/ryamate/items/c3b4f63f8d94ab090bf8

## 投稿内容(全5回)

本連載は以下の順番で投稿します。

– **[招待ユーザー機能の概要と基本設計](https://qiita.com/ryamate/items/751b06dc95ab9b24e361)**
– **招待ユーザー機能の詳細設計と実装**
– [(1) 招待メール送信フォーム](https://qiita.com/ryamate/items/a1d0a5b1db9d11a69671)
– **(

元記事を表示

OTHERカテゴリの最新記事