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

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

PHP Laravelのmake:modelオプション

#make:modelに用意された様々なオプション
モデルの作成時には、コントローラやマイグレーションファイル等の作成が必要となりますが、いちいち作成するのは面倒です。
make:modelには以下のオプションが用意されているので、状況によって使い分けましょう。

##$ php artisan make:model -h
オプションの内容は、コンソールに php artisan make:model -h を入力することで確認できます。
内容は以下の通りです。基本的には -a で全て作成することになると思いますが、必要に応じてそれ以外を使い分けましょう。

“`console
Options:
-a, –all Generate a migration, seeder, factory, and resource controller for the model
-c, –controller Create a new controller for the model
-f, –factory Create a

元記事を表示

Laravel バリデーションを設定する ~フォームリクエスト編~

# 目的

– リクエストにバリデーションを記載する方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |

# 前提情報

元記事を表示

front-end に Nuxt.js と Laravel が混在するシステムで Cookie を用いてクライアントを識別する

![Nuxt-2.14.4](https://img.shields.io/badge/Nuxt-2.14.4-brightgreen) ![Laravel-6.x](https://img.shields.io/badge/Laravel-6.x-brightgreen)

[前回の記事](https://qiita.com/hamakou108/items/24533eee75b4a9256f3d)の続きですが、 A/B テストのような文脈でクライアント(ブラウザ)ごとに一意なランダムの ID を割り当て、 Cookie を用いてリクエストごとにクライアントを分類できるようにする処理を実装する機会がありました。この記事では front-end に Nuxt.js と Laravel (の view )が混在するシステムで、両方から ID を生成・利用できるようにする方法について紹介します。

## 方針と注意

基本的な方針は以下の通りです。

1. リクエストの Cookie ヘッダから ID が得られなかった場合(初回訪問)は ID を生成して Cookie に追加 [^set

元記事を表示

気象庁の雨量データをスクレイピングしM5Stackで表示する

## 概要
* 集合住宅では雨の様子が窓からは分からず、エントランスに出てから雨に気づき傘を取りに戻ることが良くあった
* 一部のオフィスビル(30階建て以上)では、エレベーターホールに傘のサインで降水を知らせてくれていた
* ベランダに降水センサーを設置しアラームを通知する方法もあるが、電源確保、センサーの耐久性の面から難しい
* 気象庁の観測データページを、常時起動しているサーバー(Raspberry Pi)でスクレイピングした結果をM5Stackで表示する
https://www.data.jma.go.jp/obd/stats/data/mdrr/pre_rct/alltable/pre1h00.html

![IMG_9811.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/8fc7752e-d1da-cd53-60bf-ccce4ffe6e33.jpeg)

## 用意するもの
* Raspberry Pi3 Model B (4でもおそらく大丈夫)
* Raspberry

元記事を表示

CentOSでRabbitMQ+PHPを試す

PHPで非同期処理を導入するために、RabbitMQを試した際のメモ。
※この記事ではCentOS7、PHP7.3を使用しています。

# MQの準備
## RabbitMQインストール
“`
yum –enablerepo=epel -y install rabbitmq-server
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
“`
## ユーザ追加
“`
rabbitmqctl add_user mquser password
rabbitmqctl list_users
“`
## バーチャルホスト追加
“`
rabbitmqctl add_vhost myhost
rabbitmqctl list_vhosts
“`
## パーミッション設定
“`
rabbitmqctl set_permissions -p myhost mquser “.*” “.*” “.*”
rabbitmqctl list_permissions -p myhost
“`
# PHPプログラムの準

元記事を表示

CentOS8にベータ版php8.0をインストールする方法

#経緯
php8.0が2020年11月26日にリリースされる予定らしい。
[remi氏](https://rpms.remirepo.net/)のリポジトリでもベータ版が出ているのでインストールして動作確認する。

#インストール方法
[百番煎じくらいの、CentOS8でPHP8環境作るコピペ](https://qiita.com/world_of_bear/items/1e72166604b65d24ff51)
[Centos8 php8.0をインストールする方法](https://mebee.info/2020/07/17/post-12973/)
[php80-php-8.0.0~beta4-32.el8.remi.x86_64.rpm](https://centos.pkgs.org/8/remi-x86_64/php80-php-8.0.0~beta4-32.el8.remi.x86_64.rpm.html)

phpの本体を入れる。

“`
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-lat

元記事を表示

【備忘録】Laravel 6でユーザー認証作る時につまづいたけど解決した方法共有!!

# はじめに
こんばんは!
私は、毎週、「1週間1制作計画」っていうのをやっています。
最近は、PHPの勉強を始めたので、今週は、PHP及びLaravelの練習を兼ねてLaravelでアプリケーションを制作してみようと思っていました。

そこで、認証機能をつけようと思い、Laravelに標準装備されている認証機能Authを使ってみようと考え、トライしてみました!!

**…すると、めっちゃつまづいた!!**

今日の投稿では、そのつまづいた部分について、解決した方法を、認証機能の実装方法と共に記録していきます!
また、その方法自体は最後に記載されている参考資料・文献を参考に実装しました。

# まずはLaravel 6をインストールしたい!!
Laravel 6をなぜ選んだかというと、サポート期間が最新のLaravel 8よりも長いためです(LTS = Long-Term-Support)。

一般的なインストール方法

“`
laravel new プロジェクト名
“`
ですよね!
しかし、今回は違います!以下のコードをご覧ください。

“`
composer create

元記事を表示

【ローカル環境】Laravelアプリ作ってローカルDB(MAMP)にテーブル作るまで

Laravelでいろいろなハンズオン形式の練習をしていくにあたり、
アプリ作成からテーブル作成まで、毎回ちょっと調べるのが面倒になってきたのでまとめます。

#前提環境/どんな方向け?
・mac OS 10.15(10.14や10.13でも大きな違いはなし)
・MAMPをmacにインストール済みであること。
・ターミナル操作がわからないこともないこと。
・Laravelはmacにインストール済みであること。
・composerも入れていること。

という感じで、しょっぱなからの説明ではなく、過去にlaravelをmampで構築されており、ローカル環境で新しくアプリを作る方向け(主に自分の備忘録)です。

##手順

###1.Laravelアプリを作る
まずはアプリ作成。「todoLife」というアプリを作る場合は下記の手順。
ターミナルで、

**composer create-project “laravel/laravel=5.8.*” todoLife**

※バージョン指定は任意です。不要な場合は「laravel/laravel」でokです。
ここでは5.8の中の最新版を指定

元記事を表示

適当な文字列を 0 から 1 までの実数に振り分けるロジック (PHP/TypeScript)

![PHP-7.2](https://img.shields.io/badge/PHP-7.2-brightgreen) ![TypeScript-3.7](https://img.shields.io/badge/TypeScript-3.7.x-brightgreen)

最近 A/B テストのように確率的な条件分岐を実現する文脈で、適当な入力文字列から区間 $ [0, 1] $ に含まれる数値を出力するようなハッシュ関数を実装する機会がありました。単に定められた範囲の数値を出力するだけでなく、出力される数値に偏りが出ないように(関数の出力値の分布が連続一様分布とみなせる [^mathematical_rigor] ように)するという要件もありました。

イメージとしては以下のコードのようになります。

“`php
// 同じ文字列を入力に取ると同じ数値が出力される
strToNumberBetweenZeroAndOne(‘abc’); // output: 0.7283949105904
strToNumberBetweenZeroAndOne(‘abc’);

元記事を表示

Docker x Laravel phpMyAdmin のコンテナを構築する

以前の記事([最強のLaravel開発環境をDockerを使って構築する【新編集版】](https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4))の[コメント](https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4#comment-6cb955aac0bed2872261)にてphpMyAdminを使用したいという要望がありましたので補足の記事を作成させていただきます。

## 手順

https://github.com/ucan-lab/docker-laravel

### docker-compose.yml に phpMyAdmin のサービスを追加

“`yml:docker-compose.yml
volumes:
# 追記
pma-session-store:

services:
# 追記
pma:
image: phpmyadmin/phpmyadmin:5.0.2
environment:
– PMA_HOST=d

元記事を表示

PHPでconfigファイルをオートロードで呼び出す方法

Laravelをやっているとconfigから値を呼ぶことがあります。
同様に素のPHPでも使いたいなと思ったのでやり方を書いておきます

“`Config.php

元記事を表示

入力欄が別の時の期間カスタムバリデーションLaravel5.5

入力欄が別の期間のバリデーションをかけようと思うと
“2015-3~2017-4“ではバリデーションがうまくかかるが、
“2018-8~2018-6“だとエラーを吐かなかったので
バリデーションをかける前に連結させました。
誰かの参考になればと思い、残しておきます

laravel5.5で“FormRequest“を使う場合コントローラの処理を実行する前にバリデーションがかかってしまうので、
先に文字列を連結させる必要がありました。
なので文字列を連結させてそれをフォームから送信させているようにしてバリデーションをかけるようにしました。

もちろん入力欄を分けなければ“after“や“after_or_equal“、“before“、“before_or_equal“などを使えばいいのですが。。
送信前にリクエストを加工するには6.xでは“prepareForValidation()“メソッドを使えばいいみたいなので参考にはならないと思います

まずはこれを追加してください

“`php
use Illuminate\Validation\Valida

元記事を表示

phpで切り捨て処理を行う際、floor関数とintキャスト処理のどちらを使うのが適切か

# やりたいこと

浮動小数点数の切り捨て処理を行い、float 型を int 型にしたい。

– `floor()` 関数
– intのキャスト処理

のどちらを利用するのが適切か。それとも、どちらでも差異はないのか。

# 結論

– `floor()` 関数は返り値として float型を返すため、int型でキャストする必要がある。
– マイナス値を扱う場合において、 `floor()` と `(int)` の結果が異なってくる。

そのため、

– -1.1を切り捨てした際、-1になるのが自然と感じるのであれば、`(int)$num`とする
– -1.1を切り捨てした際、-2になるのが自然と感じるのであれば、`(int)floor($num)`とする

という選択肢の、どちらかを選ぶのがよいと考えられる。

## マイナス値を与えたときの処理の違いについて

### `floor()` 関数の場合

> value をこえない最大の整数の値を返します。 floor() の返り値は float 型のままとなります。
https://www.php.net/manual/ja/fun

元記事を表示

PHPにおける文字列置き換え大全

コピペして使うように作りましたー
間違ってたら教えてください!!
#目次
[よく使う正規表現のパターンマッチ](#よく使う正規表現のパターンマッチ)
・[携帯番号の例](#携帯番号の例)
・[郵便番号の例](#郵便番号の例)
・[全角カタカナの例](#全角カタカナの例)
・[なんちゃってメールアドレスの例](#なんちゃってメールアドレスの例)
・[クレジットカード全社の例](#クレジットカード全社の例)
・[IPアドレスの例](#IPアドレスの例)
[文字列を繰り返す方法](#文字列を繰り返す方法)
[入力値を統一する方法](#入力値を統一する方法)
・[小文字から大文字に変換](#小文字から大文字に変換)
・[大文字から小文字に変換](#大文字から小文字に変換)
・[全角を半角に変換](#全角を半角に変換)
・[半角を全角に変換](#半角を全角に変換)
・[カナ文字の変換](#カナ文字の変換)
[文字エンコードの変換](#文字エンコードの変換)
[文字列の一部を切り抜く方法](#文字列の一部を切り抜く方法)
[文字列の一部が一致しているか確認する](#文字列の一部が一致しているか確認

元記事を表示

Laravelでapi.phpに送れない

## 何をしているか
https://www.hypertextcandy.com/vue-laravel-tutorial-authentication-part-4/
上記サイトを参考にLaravel × Vue のアプリ開発の勉強をしています

ただ、Laravelの更新により、現在のバージョンではコピペでエラーが出てしまうことがありました。

##躓いた箇所
上記サイトのところで、api.phpにgetを渡したのにも関わらず、web.phpの
“`Route::get(‘/{any?}’, fn() => view(‘index’))->where(‘any’, ‘.+’);“`
が参照されてしまいました。

##解決策
app\Providers\RouteServiceProvider.php の箇所で

“`
public function boot()
{
$this->configureRateLimiting();

$this->routes(function () {
Route::middl

元記事を表示

Laravel_CRUD処理を使った投稿アプリを作成する その10 バリデーションエラーを日本語に変える

# 目的

– アプリを作成する上で基本となるCRUD処理を有したLaravelアプリをチュートリアル的に作成する方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qii

元記事を表示

PHP7の設定ファイルphp.iniの保管場所の探し方

PHPの設定を変更したかったのですが、とあるPHPの教科書(PHP7対応版)の書いてある通りやってもできずに時間をロスしてしまいました。今度そんなことがにないようにメモをしておきます!

その教科書には、`アプリケーション→MAMP→conf→PHP7.x.x→php.ini`を変更せよと書いてありますが、これは必ずしも正しくありません。少なくとも私の場合は上手くいきませんでした。
自分が使っているPHPがどのphp.iniを読み込んでいるかは、phpファイルの中に下記コードを書き込んでブラウザで読み込むと、インフォメーションが開いて確認できます。

“`php:index.php

“`

開いたら、下記スクショのようにLoaded Configuration File確認できます。
![スクリーンショット 2020-08-11 16.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/40e2c995

元記事を表示

PHPにおける日付時刻の処理大全

日付時刻って重要だけど、そんなに頻度高くなくて、毎回調べちゃってたのでまとめておきます
#目次
[西暦から和暦へ変換](#西暦から和暦へ変換)
[生年月日から年齢へ変換](#生年月日から年齢へ変換)
[日付が存在するか確認する](#日付が存在するか確認する)
[曜日の求め方](#曜日の求め方)
[月末日の求め方](#月末日の求め方)
[締め日の求め方](#締め日の求め方)
[第三月曜日の求め方](#第三月曜日の求め方)
[年度の求め方](#年度の求め方)
[日付セレクトメニューの表示](#日付セレクトメニューの表示)
[日付の表示形式の変換と加減算](#日付の表示形式の変換と加減算)
[グレゴリウス日をユリウス積算日に変換](#グレゴリウス日をユリウス積算日に変換)

#西暦から和暦へ変換
西暦が元号の期間に含まれているか確認し、改元された年から何年目なのか求める

|元号|改元日|
|:—-:|:—-:|
|明治|1968/01/25|
|大正|1912/07/30|
|昭和|1926/12/25|
|平成|1989/01/08|
|令和|2019/05/01|

“`

元記事を表示

[PHP] ローカルサーバーの立てかた

# 概要
ここまでphpをterminalで走らせていたが、実際の使用ではブラウザ上で処理、表示を行うケースが圧倒的に多いのでローカルサーバーの建て方をメモる。

### プログラム

“`PHP:greet.php
= 6 && $now_hour < 12) { $greet = 'おはようございます'; } elseif ($now_hour >= 12 && $now_hour < 18) { $greet = 'こんにちは'; } else { $greet = 'こんばんは'; } return $greet; } $aisatsu = aisatsu($greet) ?>

元記事を表示

簡易LISP処理系の実装例(PHP版)

【他言語版へのリンク記事】[簡易LISP処理系の実装例【各言語版まとめ】](https://qiita.com/ytaki0801/items/dcb0fe48cbeab30ac40d)

この記事は,下記拙作記事のPHP版を抜粋・修正したものを利用した,簡易LISP処理系([“McCarthy’s Original Lisp”](http://paulgraham.com/lispcode.html))の実装例をまとめたものです.

* ~~[『括弧文字列』簡易パーサ実装例まとめ](https://qiita.com/ytaki0801/items/b8d7d4c778fe98966ce5)~~
(PHP版はS式入出力を先行作成しました)
* [リスト処理関数(cons,car,cdr,eq,atom)実装例まとめ](https://qiita.com/ytaki0801/items/a11c8143c5c63a406c7f)

最低限の機能をもったLISP処理系の実装の場合,本体である評価器(eval)実装はとても簡単であり,むしろ,字句・構文解析を行うS式入出力やリスト処理実装の

元記事を表示

OTHERカテゴリの最新記事