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

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

Nginx、PHP、MariaDBの構築手順

# 前言
OracleCloudの無料vpsを利用してこの手順書を作りました(Oracle社に感謝します)。WordPress、NextCloudなどソフトが必須のphpとMariaDBの環境構築手順です。

# 環境
– OS Ubuntu 22.04 LTS
– **Nginx** `80`、`443`の管理
– **PHP** Webアプリケーションの開発を得意とするプログラミング言語
– **MariaDB** データーベース

# 作業
## 1. OracleCloudにUbuntu OSのVPS新規
– [アカウント作成](https://signup.oraclecloud.com/)
– vps起動までの手順略

## 2. OS環境更新/ポート開放
### 2.1 OS環境更新
– インストール可能なパッケージの「一覧」を更新する。

`$ sudo apt update`

実際のパッケージのインストール、アップグレードなどはおこなわない。)
– インストール済みのパッケージ更新をおこない、新しいバージョンにアップグレードする。

`$

元記事を表示

【Laravel9】入力したカラムを使って別カラムに値を入れる

## ユーザーが入力したカラムを使って、同テーブルの別カラムに値を入れたい
Railsを書いていた頃は、モデルに`before_save`メソッドを書いて
そこに計算式などを書いていたのだが、Laravelの場合どのように書くとやりたいことができるのか??

例えば、ユーザーが`height`と`weight`を入力したとして、
その値をシステムが計算し、`basemetabolism`というカラムに値を自動で入れてくれる場合、
Railsだと下記のようにモデルに記載することで実装できる。
(そもそもこれがベストプラクティスかはわからない)
“`ruby
before_save do
self.basemetabolism = 13.397*(weight)+4.799*(height)-5.677*(user.age)+88.362
end
“`

同様のやり方でLaravelでもできないかなと思ったのですが、
いまいちしっくりこなかったので、一次避難としてコントローラに直接計算式を書いてしまうことにしました。

### 実際のコード(Laravel)
“`php
pu

元記事を表示

Google-ChatクラスとNotificationクラスを使ってGoogleChatに通知してみる

さて、[自己紹介](https://qiita.com/Atsulabo/items/e5e534f461d3f22e12c5)ばかりではなく、今学習してるLaravelについてちょっと書いてみます。

ちなみにこれは [#DeafEngineers Advent Calendar 2022](https://qiita.com/advent-calendar/2022/deafengineers) 22日目の記事になります。

最初はLaravelの不思議なところを書こうとおもったのですが、うまく纏まらなかったのと、
今悩んでいたことが解決したのもありそれをまとめたかったので今回はこれにしました。

### 前書き

・筆者はLaravelを使って開発するのは今回実は初めて
・一応、一通り学んではいるが、所々理解が怪しいところがある(ミドルウェアとか)
・ちなみに今回使う方法はおそらくメジャーな使い方ではないので注意
 (なぜなら、モデルを使うのに、テーブルも使わないし、Viewも使わないため)

### やりたかったこと

・コマンドスクリプト、いわゆるバッチで、何らかのメッセージ

元記事を表示

キャッシュ設計(4) – 部分

# 部分キャッシュ

この記事では部分キャッシュを扱います。

!

> 部分キャッシュは、よく“ドーナツキャッシュ(donut caching)”と“ドーナツの穴キャッシュ(donut hole caching)”の2つのカテゴリに分けられる
>
> — [部分キャッシュとASP.NET](https://www.infoq.com/jp/news/2011/12/MvcDonutCaching/)

BEAR.Sundayは **ドーナツキャッシュ**、**ドーナツの穴キャッシュ**、どちらにも対応しています。部分キャッシュはページをキャッシュできる部分とそうでない部分に分けて管理しようという技術です。ちなみにドーナッツの語源はdo-nut cache(音がdo not cache)から来ています。

ドーナッツキャッシュ

![

元記事を表示

各国の文字列を扱う、”String”

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

## 最初に
[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】ユーザー招待機能の詳細設計と実装(4)招待メールのテンプレート

# **はじめに**

ユーザー招待機能の詳細設計と実装(4) 招待メールのテンプレート について投稿します。

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) マイグレーシ

元記事を表示

ConoHa WINGを使ってライセンスサーバーを構築してみた

# はじめに
この記事は「[ConoHa Advent Calendar 2022](https://qiita.com/advent-calendar/2022/conoha)」の22日目の記事です。今回は、ConoHa WINGを使って簡単なソフトウェアのライセンスサーバーを構築してみようというお話です。

# 今回のお話
私は今年から新しい挑戦として、.NET Framework と C# を使ったアプリケーション開発に取り組んでみました。1年たって簡単なアプリケーションを作ることができるようになったのですが、アプリケーションが作れるようになると気になるのがソフトウェアのライセンスです。つまり、製作者が意図しないユーザーには使ってほしくないというというわけです。
そこで、格安で、清楚かわいくて、WEBシステムとデータベースを使うことができるConoHa WINGを使って、簡単なライセンスシステムを構築してみることにしました。

※動作確認とか仕組みとかそういうのを確認して学習することが目的なので、セキュリティとかあまり意識していません。なので、間違っても実環境に投入しないでくださ

元記事を表示

コマンドラインでMAMPのPHPを使う方法

Symfony3の案件でPHP8だとbin/consoleコマンドが動かなくて詰みました。

MAMPのPHPは7.4が入っているのでWEBブラウザでは開けるけど、artisan や bin/consoleのようなコマンドラインツールはMAC本体のPHPに向いているので動かない。

M1macだからかasdfパッケージマネージャで古いPHP7系を入れようとしてもエラーでコケてインストールできない。

そこでウルトラCを思いついた。

MAMPのPHPだって本体があるんだから必要な時だけフルパスでMAMPに入っている古いPHP呼び出せばいいのでは!?

つまりこう。

“`
/Applications/MAMP/bin/php/php7.4.16/bin/php -v
/Applications/MAMP/bin/php/php7.4.16/bin/php bin/console list
“`

動いた!!

まあ、MAMP経由するからかなんかちょっともっさりしてる気がするけど死んでるよりいいので、最終手段として覚えておくといいと思います。

PHPコマンド自体のリンク先を上記へ

元記事を表示

DoctrineとEloquent比較大全18: 1つのテーブルに複数の種類のデータをもたせる

day18(から3日遅れた)今日はDoctrineとEloquentそれぞれに用意された1つのテーブルに複数の種類のデータをもたせる方法を見ていきます。

## Doctrine(SingleTableInheritance)

“`php:Entity/Reaction.php
Like::class,
‘sad’ => Sad::class,
])]
abstract class Reaction
{
#[ORM\Id]
#

元記事を表示

編集方法

PHPで編集を行ったために、編集方法を説明する。

※idを保持している前提
“`php
//wait_ad_list.php
ここで編集画面へ飛ぶ

session_start(); //セッションスタート

//画面表示start。
try {
// データを取得するSQL文(ここでIDを取得する)
$stmt = $pdo->query(“SELECT created_at, serial_num, discription, ship_quantity, agreement_at, id FROM inspections”);

$reg_list = $stmt->fetchAll(PDO::FETCH_ASSOC);

元記事を表示

【PHP】配列同士を検索して要素を取得する方法(array_filter)

# 配列値×配列値で検索
サンプル
“`php
// 検索対象配列
$baseArr = [1,2,3,4,5];
// 検索情報配列
$searchArr = [2,3,9];

// 一致した検索対象配列の要素が格納される
$result = array_filter($baseArr, function($value) use ($searchArr) {
return in_array($value, $searchArr);
}
);

var_dump($result);

/*   結果
array(2) {
[1]=> int(2)
[2]=> int(3)
}
*/
“`
サンプルでは検索対象配列に1から5までのデータ、検索情報配列には2,3,9が格納されています。
このうち1から5までの値で一致した、2,3の要素が返却されました。

array_filter関数の第一引数に検索対象配列を指定し、第二引数にはフィルターの条件(無名関数)を設定し、useには検索情報配列を引き継いでいます。
フィルター条件にはin_array関数を使う

元記事を表示

【PHP/Laravel】Carbonでの日付の扱いにはご注意!

この記事は「[【マイスター・ギルド】本物のAdvent Calendar 2022](https://adventar.org/calendars/7794)」15日目の記事です。

# はじめに
Carbonは、PHPで日付や時刻を扱う処理を簡単にするためのライブラリです。
Laravelには標準搭載されています。

# 想定読者
PHP/Laravel初学者

# 開発環境・前提

### 開発環境
– OS:Windows11 22H2
– PHP 8.2.0
– Laravel 9.44.0

### 前提
– ローカルにLaravel開発環境があること。

(今回の検証用)
作成したデフォルトのLaravelプロジェクトにおいて、以下の各ディレクトリにファイルをそれぞれ配置。
ファイル名は任意。

– app\Http\Controllers\MonthController.php
– resources\views\month.blade.php

# ソースコード(該当箇所のみ)
“`MonthController.php

元記事を表示

XAMPPで複数のPHPを切り替えて利用する(for Windows)

WordPressはデータベースを利用してWEBサイトを動的に表示するCMSですが、作業途中のページ等をお客様や来訪者に見せたくないのが常ですので、ローカル環境をPC上に構築して、ある程度の作業を進める必要があります。
そこで、Windowsのローカル環境構築といったら`XAMPP`がメジャーで、私も利用しているので、`XAMPP`でPHPの複数のバージョンを切り替えて利用できる環境をこの記事では構築していきます。

## なぜ複数のPHPバージョンが必要なのか
特定のお客様だけだったり自社で管理するサーバであれば一律同じバージョンのPHPで良いのですが、WEBサイトの構築のみ行い、サーバはお客様が指定する環境に置くという案件が多々ありました。
また最新のPHPのバージョンだと不具合が起きることもあり、既存のサイトであっても、PHPのバージョンアップを行う前にテストを行いたいとの思いもありました。
プラグインは、個々に対応しているPHPのバージョンを記載していますが、自分でテストしてから反映させたいとも思っています。
その辺も踏まえて「PHPのバージョンを手軽に切り替えてテストできない

元記事を表示

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) マイグレーションフ

元記事を表示

OTHERカテゴリの最新記事