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

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

モーダルでバリデーションのエラー時モーダルにエラーメッセージ表示

# 今回の対応について
今回laravelを使用し、モーダル画面で送信ボタンが押下された時にバリデーションチェックを行い、
モーダル画面にメッセージを表示するという事をしたく、実装を行いました。

– モーダル画面で送信を押下します。押下時はajax通信でcontrollerへ飛ばします。
– FormRequestを作成し項目名のバリデーションを追加します。
– controllerへ飛んできたときにバリデーションでひかかった場合は
ajaxの方でfailとして受け取ります。バリデーションエラーのステータスは422です。
– ステータスが422の時にメッセージを追加するように行いました。

“`js:modal_submit.js
$(document).on(‘click’,’#form_submit’,function(event) {
var $form = $(‘#form’);
var id = $(‘#id’).val();
$form.attr(‘action’, ‘{{ url(‘aaaa/aaaa’)

元記事を表示

正規表現(PHP)

正規表現のサンプルプログラムです。
今回は拡張子が「.jpg」または「.png」だったら「YES」、それ以外だったら「NO」をブラウザに出力する仕様です。

“`HTML






正規表現テスト


元記事を表示

BEAR.SundayとFastlyで無期限キャッシュのコンテンツを配信する

# はじめに
前日までは @koriym さんのキャッシュ設計に関する投稿でした。
この記事ではBEAR.Sundayのキャッシュ、イベントドリブンキャッシュ、失効済みコンテンツの配信(Stale)について具体的な実装内容を紹介します。

# アプリケーションキャッシュを設定する
## キャッシュの指定方法について
現在フレームワークが標準で提供するキャッシュの指定方法は以下の二つです。

### #[Cacheable]
* `#[Cacheable]` は従来よりあるキャッシュ指定アトリビュート(アノテーション)です。
* TTLの指定 (`#[Cacheable(expiry=”medium”)]`) 、もしくは無期限(`#[Cacheable]`)で指定できます。
* 無期限でキャッシュを設定した場合、同一Resource内の `on(Put|Post|Delete)` の実装か、キャッシュを消す処理( `#[Refresh]` や `#[Purge]` 、もしくは `QueryRepository` の直接操作など)が必要です。

“`php

元記事を表示

【Laravel6】ユーザー招待機能の詳細設計と実装(5)ユーザー登録フォームと登録処理

# **はじめに**

ユーザー招待機能の詳細設計と実装(5) ユーザー登録フォームと登録処理 について投稿します。

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

元記事を表示

【PHP8.1~】列挙型(enum)を使ってセレクトボックスを作ってみる

## 概要

php8.1から列挙型(enum)が使える様になりましたね。

今まで定数ファイルに書いていたような事をenumを使って良い感じにしてみます。

## 実践

ステータスという名目のセレクトボックスを作ります。

– 要件
– 選択肢は「未確定」,「完了」,「キャンセル」
– optionのvalueにはキーが入る様に
– optionのlabelには日本語のステータス名

### コード

“`php:enum
namespace App\Enums;

enum Statuses: string implements Label
{
case PENDING = ‘pending’;
case COMPLETE = ‘complete’;
case CANCEL = ‘cancel’;

public function labelName(): string
{
return match ($this) {
self::PENDING => ‘未確定’,

元記事を表示

時間を扱う、”Clock”

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

## 最初に
[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

元記事を表示

【初心者】よく使うコマンド,sql, テーブル操作,ブラウザでよく使うショートカット

# ■はじめに
コマンドを打つ際に毎回調べてという事が面倒くさいと思ったことはありませんか?
今の時代調べれば何でも出てきますから、何回も調べたらいいと思っていませんか?
でも、マニュアルを見ても、全てが1ページにまとまっていることは少ないと思います。
私はPHPの初心者ですが、自分がよく使うコマンドを、毎回作業中に手を止めて調べなくてもいいようにまとめました。

# ■よく使うコマンド

### サーバーを起動する
“`bash
php artisan serve
“`

portオプションは、起動する開発サーバーのポート番号を明示的に指定できます。例えば、ポート番号を「8080」に指定したい場合は、以下のように記述します。
“`bash
php artisan serve –port=8080
“`

### データベースに接続
“`bash
mysql -u root -p
“`
-u —– 「ユーザを指定する」というオプション
-u root —– 「rootユーザで」みたいな意味
-p —– 「パスワードを指定してログインする」というオプシ

元記事を表示

【初心者必見】php 変数名の付け方

# ■はじめに
この記事は、まだPHPの学習中の筆者が書いています。
学習中、問題を解いているだけでも、様々なエラーにぶつかります。
私と同じように学習している周りは普通にできることも、私はできないの?とか、私向いてないじゃないかと思った時に、私は、時間がかかっても、変数名をつけるようになりました。
その結果、”型が違いいます”とういエラーを激減させることができました。
同じような境遇の方たちに、ぜひ読んでほしいです。

– [変数の命名規則について](#■変数の命名規則について)
– – [名前の記法ルール](#名前の記法ルール)
– [きれいな変数名を付けるための『5つのこと』](#■きれいな変数名を付けるための『5つのこと』)
– [まとめ](#■まとめ)
– – [最初に工夫したこと](#最初に工夫したこと)
– – [最近変わった工夫の内容](#最近変わった工夫の内容)
– – [最近感じるようになったこと](#最近感じるようになったこと
)

# ■変数の命名規則について

コーディングは、後から修正するときに読みやすくするためのルールに則って行われます。

元記事を表示

PHPの基礎③ (独学エンジニア レッスン11より)

# 目標
今回やること
* PHPの基礎を学ぶ③

タスクばらし
* 制御構造
* 条件分岐の基礎
* 繰り返し処理の基礎
* クイズ
* 発展

予備知識
テスト駆動開発
①テストコード書いてから、アプリケーションコードを書く
* アプリケーションコード用のファイルを作成し、処理を実行する関数を定義する
* テストコード用のファイルを作成し、上の関数の動作をテストする
* アプリケーションコードをテストが通るように書く
* テストが通ったらコードをリファクタリングする

②アプリケーションコードにcalculateメソッドを定義し、テストコードでcalculateメソッドを呼び出そう

# 制御構造
* 式は値があるものすべて

* 文は末尾に ; がついたもの、もしくは中括弧でグループ化されたもの

* 構文は文法・書式のこと(if文など)

* 言語構造は、言語を構成する要素のこと(ifなど)

* 制御構造は、プログラムの流れを制御するもの(言語構造の一種)
プログラムは上か

元記事を表示

エンジニアになれないへっぽこな私が実装したタグをつける機能とタグの検索機能(n番煎じ)

この記事は[TechCommit Advent Calendar 2022](https://adventar.org/calendars/7673)の22日目の記事です。
なんとなく参加しました。

# 注意
ただの個人用メモ
解説用に現物の一部を改変,省略,簡易化,簡略化などしています。
やり方が間違っている可能性が高いです。
参考にする場合は**自己責任**でお願いします。

# バージョン,環境など
バック:php,laravel
フロント:html,css,javascript,Vue,axios
自分ではわからないもの:Inertia

|言語 フレームワーク|バージョン|
|–|–|
|PHP|8.0.24|
|Laravel|9.43.0|
|Vue|3.2.31|
|axios|0.25|

# 事の始まり
個人開発でブックマークにタグを付けて保存するアプリを開発しているから

# ディレクトリ構造
今回の解説に必要な分だけ取り出しています。
repositoryディレクトリは自分でつくりました。[^2]
![ディレクトリ構造.drawio.png](https:

元記事を表示

PHP ファイルパス(文字列)のファイル部分以外を取得する

:::note info
この記事は[miriwoお一人様 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/miriwo)の22日目の記事です
:::

# 概要

– PHPの組み込み関数を使ってファイルパスから、ファイル名を除いたパスを取得する方法をまとめる。

# 方法

– 組み込み関数の`dirname()`を使う。
– `dirname()`は下記のように使う。

“`php
dirname(ファイルパス, 階層指定[オプション])
“`

– 例えば`foo/bar/hoge/piyo/test.csv`というファイル名込のパス情報があったとする。これのファイル名を除いたパスを取得したい場合下記の様に記載し実行する。

“`php
$fullPath = ‘foo/bar/hoge/piyo/test.csv’;

echo dirname($fullPath);
// foo/bar/hoge/piyoが出力される
“`

元記事を表示

【初心者向け】Wordpressテーマを自作する[footer.php]

:::note info
ファイルの構造や解説等、Wordpress(以下、WP)のテーマを自作する際の基本的な部分は、こちらの記事で紹介しています。
+ [【初心者向け】Wordpressテーマを自作する際に分かってると良いかもしれない事](
https://qiita.com/makkie/items/dc764c2845492079c0af)
+ `index.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[index.php]](https://qiita.com/makkie/items/b5231a9f63b076c70af8)
+ `header.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[header.php]](https://qiita.com/makkie/items/6d19ec0da990486ec6ab)
:::

ここでは、WPのテーマを作る上で必須の`footer.php`のコードを交えた解説を行います。
とりあえず解説はいいからコードだけ、の方は以下をど

元記事を表示

PHPでSQL書かずにDB操作。「Eloquent」モデルを使ってみたい。

# 今回試した環境
– Windows,11
– XAMPP
– PHP Version 8.1.4
– Composer version 2.0.14
Composerは必須なので、こちらからダウンロードしてインストールしてください。
https://getcomposer.org/download/

**⇧Windowsの場合は上記赤枠のリンクからDownload可能です⇧**
 ※Macの方はコマンドになります、別記事を参照していただければと存じます。

### 1.用意した/Usersテーブル (テスト例)
以下、カラム構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/a785304a-3f4e-

元記事を表示

【初心者向け】Wordpressテーマを自作する[header.php]

:::note info
ファイルの構造や解説等、Wordpress(以下、WP)のテーマを自作する際の基本的な部分は、こちらの記事で紹介しています。
+ [【初心者向け】Wordpressテーマを自作する際に分かってると良いかもしれない事](
https://qiita.com/makkie/items/dc764c2845492079c0af)
+ `index.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[index.php]](https://qiita.com/makkie/items/b5231a9f63b076c70af8)
+ `footer.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[footer.php]](https://qiita.com/makkie/items/65cd4be0e9c4ccbf7776)
:::

ここでは、WPのテーマを作る上で必須の`header.php`のコードを交えた解説を行います。
とりあえず解説はいいからコードだけ、の方は以下をど

元記事を表示

【初心者向け】Wordpressテーマを自作する[index.php]

ファイルの構造や解説等、Wordpress(以下、WP)のテーマを自作する際の基本的な部分は、こちらの記事で紹介しています。

https://qiita.com/makkie/items/dc764c2845492079c0af

ここでは、WPのテーマを作る上で必須の`index.php`のコードを交えた解説を行います。
とりあえず解説はいいからコードだけ、の方は以下をどうぞ。
## コード(HTMLとPHP)
ファイルの先頭には、テーマカスタマイザーからもわかるように`Template Name: Index(汎用Temp)`を入れています。

“`diff_php

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事