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

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

Laravelの404エラーページを、bladeの中だけで簡潔にフロントページと管理画面でデザイン変更したい

## シンプルに三項演算子とPHPを使って分岐を作ろう
通常はフロント用のレイアウト用の共通ファイルを、/resources/view/layoutsに入れて使っていればこのように書いているとします。
404エラーは、フロント用のデザインに404エラーを表示しますね。
“`php:404.blade.php
@extends(‘layouts.frontend’)
“`
フロントと管理画面で、404エラーのデザインを分けたいので、
管理画面用に別途用意した、admin_error.blade.phpを/resources/view/layoutsに入れておきます。

管理画面のURL(/admin)かどうかを
URIの2つめにadminが入っているURLかで
判別して、レイアウト共通ファイルを分岐させてやります。

“`php:404.blade.php
@extends((explode(“/”, $_SERVER[‘REQUEST_URI’])[1]==’admin’?’layouts.admin_error’:’layouts.frontend’))
“`

こんな感じ

元記事を表示

GoogleAIを使ったアナログデータデジタル化プロジェクト#1

世の中に沢山あるアナログデータ、特に検査機器のジャーナルプリンタより吐き出される印刷物のデジタル化は医療業務では今後不可欠となると考え、GoogleAIを利用した例として、今回は動物血液検査機器の検査結果プリントアウトをiPhone(iPad)にて撮影データ転送と共にGoogleのテキスト解析AIにて結果データを抽出し、データベース化を図るというものです。
先ずは、カメラにて撮影さらに検査結果部分をトリミング。

トリミングされた結果データ画像をサーバへ転送と同時にGoo

元記事を表示

Laravelのマジックナンバーの解決方法

# はじめに

月1でテーマを決めてアウトプットをするいう試みをはじめてみました。今月はリファクタリング関連の勉強をしてアウトプットします。今回はコードレビューを受けたときに最も指摘を受ける頻度が高いと思われるマジックナンバーを取り上げたいと思います。

# マジックナンバーとはなんなのか?

以下はマジックナンバーの簡単な例です。

“`php

元記事を表示

【PHP】PHPでヒット&ブロー

ヒットアンドブローとは、何桁かの数字を入力し数を当てる数当てパズルゲーム。

ランダム数値4桁に対して、入力した4桁のヒット数とブロー数を求める。

Hit数  
同じ数字が同じ桁に出現する回数
Blow数  
同じ数字が違う桁に出現する回数
# 入力値4桁
“`
2345
“`
# コード
“`PHP
$v){
if((int)$v === $number[$k]){
$hit_cnt++;
}
if(in_array($v,$number)){
$blow_cnt++;
}
}
echo $hit_cnt,’:ヒット’,$blow_cnt,’:ブロー’,PHP_EOL;
echo ‘コンピュータ

元記事を表示

LaravelからDropboxアクセストークン取得

Dropboxのアクセストークンが短命化されてからリフレッシュトークンを使ってアクセストークンを取得する方法がネット探してもなかったので投稿

“`php5
$http = new GuzzleHttp\Client;
$response = $http->post(‘https://api.dropbox.com/oauth2/token’, [
‘form_params’ => [
‘grant_type’ => ‘refresh_token’,
‘refresh_token’ => ‘(リフレッシュトークン)’,
],
‘auth’ => [ ‘(ユーザー)’, ‘(パスワード)’, ],
]);
“`

結果
“`
[
“access_token” => “sl.BJGK…..”,
“token_type” => “bearer”,
“expires_in” => 14400, // 有効時間4時間
]
“`

リフレッシュトークン取得方法は[こちら](https://qii

元記事を表示

Laravel環境を再構築するときのメモ(完全に個人用)

下記記事参照。
https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4#%E7%92%B0%E5%A2%83%E3%81%AE%E5%86%8D%E6%A7%8B%E7%AF%89

こちらの環境構築方法はとても参考になりますので、
dockerでLaravel開発をしてみたい方は、
手順通りに環境構築してみてください。

元記事を表示

【Laravel】Laravel Socialiteでソーシャルログイン【Google / Twitter】

# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
`Laravel Socialite`の`Google / Twitter`ソーシャルログインです!
※AWSverは下記記事参照

https://qiita.com/kazumakishimoto/items/fd4afc02f9490ddb89e5

## 0-1. 全体の流れ
> [1.Google](#1-google)
> [2.Twitter](#2-twitter)
> [3.Laravel](#3-laravel)
> [補足](#補足)
> [Reference](#reference)

## 0-2. 本記事の対象者
– `Laravel Socialite`の`Google / Twitter`ソーシャルログイン

## 0-3. 事前準備
– `Google / Twitter`アカウント作成済み(※TwitterAPIは申請が必要)
– `grfl`や`hoge`はサ

元記事を表示

【Laravel】お問い合わせフォーム【Sendgrid】

# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
`Sendgrid`でLaravelのお問い合わせフォームの作り方です!

## 0-1. 全体の流れ
> [1.Sendgrid](#1-sendgrid)
> [2.Laravel](#2-laravel)
> [補足](#補足)
> [Reference](#reference)

## 0-2. 本記事の対象者
– SendgridでLaravelのお問い合わせフォームを作成したい方

## 0-3. 事前準備
– Sendgridアカウント
– Gmailアカウント

https://www.google.co.jp/mail/

## 0-4. 要件
– Sendgrid登録
– Sendgridを.env記載
– Laravel実装

## 0-5. 使用画像のイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

【Laravel/PHP】お役立ちリンク集【随時更新】

# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
Laravelポートフォリオ開発で役立った記事のまとめです!

## 0-1. 全体の流れ
> [1.ポートフォリオ](#1-ポートフォリオ)
> [2.学習教材](#2-学習教材)
> [3.コマンド](#3-コマンド)
> [4.開発環境](#4-開発環境)
> [5.本番環境](#5-本番環境)
> [6.初期設定](#6-初期設定)
> [7.パッケージ](#7-パッケージ)
> [8.データベース](#8-データベース)
> [9.認証](#9-認証)
> [10.CRUD](#10-crud)
> [11.リクエスト](#11-リクエスト)
> [12.セキュリティ](#12-セキュリティ)
> [13.応用機能](#13-応用機能)
> [14.フロント](#14-フロント)
> [15.テスト](#15-テスト)
> [16.デバッグ](#16-デバッグ)
> [17.デプロイ](

元記事を表示

Laravelで、Target class does not exist.とエラーが出た時の対処法

Laravel7とLaravel8で記法が異なることによりこちらのエラーが発生するようです。
バージョンアップ等を行う際は注意してください。

# エラーが起こる箇所
routes直下のweb.phpです。
“`php:web.php
Route::resource(‘hoge’, ‘hogeController’)->only([
‘index’, ‘show’
]);
“`
Controllerの処理をindexとshowのみに限定するコードを書こうとしていたケースとなっていて、
web.phpに書く処理としてはベーシックなものになるので、
上記に似たようなコードであれば参考にしてください。

# エラー文
“`php
Illuminate\Contracts\Container\BindingResolutionException

Target class [] does not exist.

at vendor/laravel/framework/src/Illuminate/Container/Container.php:877
87

元記事を表示

PHPで作るFirstClassCollectionの雛形

【自分用のメモ】
POPO(Plain Old PHP Object)でそれっぽいものを作ってみたいな〜と思っていたところ、[IteratorAggeregate](https://www.php.net/manual/ja/class.iteratoraggregate.php)を使えば簡単にできるよ!と教えていただいたので、下記の記事を参考にそれっぽいものを作ってみました。

参考:[Iteratorをimplementsする奴は情弱。IteratorAggregateを使え](https://qiita.com/Hiraku/items/14722922441f9ed3fbbb)
## 基底クラス
“`PHP
use ArrayIterator;
use InvalidArgumentException;
use IteratorAggregate;
use Traversable;

/**
* Foundation class for first class collection
* @template T
*/
abstract class Collection i

元記事を表示

【heroku】デプロイ後に何も表示されない Mixed Content エラー

Laravelで作成したアプリをherokuにデプロイ後、アクセスしても何も表示されませんでした。
コンソールを確認すると以下のようなエラーが出ていました。

“`
Mixed Content: The page at ‘https://appname.herokuapp.com’ was loaded over HTTPS,
but requested an insecure script ‘http://appname.herokuapp.com/js/app.js’.
This request has been blocked; the must be served over HTTPS.
“`

中身を確認すると、src及びhref属性で読み込んでいるリンクが `http://` になっており、これが原因と思われます。
![エラー内容.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697067/9735844a-d8a2-46f1-5715-a424028a27d2.png)

元記事を表示

PHP array_splice 配列の要素を追加・削除・置き換え

## array_splice
– 配列の一部を削除し、他の要素に置き換える
– 削除はせずに、任意の箇所に配列を追加する

## 使い方
“`php:書き方
array_splice(第一引数, 第二引数, 第三引数, 第四引数);
“`
`第一引数`
対象の配列
`第二引数`
要素の抽出開始位置
負の値の場合は、配列の末尾を-1として数えた位置になる
`第三引数`
取り出す要素数
`第四引数`
削除された要素が、この配列の要素で置換される

“`php:例
$color = [‘赤色’, ‘青色’, ‘黄色’, ‘緑色’, ‘紫色’];
var_dump(array_splice($color, 2, 3, [‘白色’, ‘黒色’, ‘ピンク色’]));
//Array ( [0] => 黄色 [1] => 緑色 [2] => 紫色 )
var_dump($color);
//Array ( [0] => 赤色 [1] => 青色 [2] => 白色 [3] => 黒色 [4] => ピンク色 )
“`
`第一引数`
配列の「$color」
`第二引数`
削除の開始位置は

元記事を表示

laravelのクエリでMySQLの関数を使うとundefinedになる場合の解決方法

## 動作環境
Laravel 6.20
php 8.0
MySQL 8.0.29

## 具体的な症状
– laravelでMySQLのクエリを使ってデータを取得したい。
– このとき、クエリ文の中でMySQLの関数(CONCATやIFNULLなどの関数)を利用したいが、これらの関数を利用すると、undefinedになってしまう。
– 具体的には、nullの場合に0に変えたいのだが、ifnull関数をクエリに追加するとundefinedになってしまう。なんとかしたい。(MySQLクライアントのworkbenchから同じクエリ文を実行すると、nullが0になって期待通りの表示がされるので、クエリ文自体は問題ない。そのため、laravelのコードの書き方に関して、何か別のルールがあると考えられる。)

## 参考ページ
– 以下のページがヒットして参考にしましたが、結局解決しませんでした。
– https://qiita.com/AAA0125/items/f17d12cc02c407b11bb9
– https://www.prj-alpha.biz/entry/2018/09

元記事を表示

PG見聞録 ~PHP編 委譲~

今日も今日とてヘトヘトですが少しだけでもおさらいせねば、てことで
前回の継承にて少し触れましたリスコフの置換原則という概念をもとに
委譲という機能についておさらいしていこうと思います。

委譲

継承はis-a関係といって「子クラスは親クラスの一種である」的な関係が常になりたっていなければなりません

子クラスは親クラスの実装に依存する以上はその内部構造を意識しなければなりませんよね。
親クラスの実装をちょこっといじったら子クラスが動作しなくなったなんてこともあり得ます。
継承構造が複雑になればなるほどそのリスクは広がり修正コストもかかります。
このようにコンピュータというのは一貫性や整合性が取れていないとダメなヤツなんです。
その辺の概念についてもそのうちおさらいしてこうと思います。

そして継承には不適切なケースがあり、その一つとしてリスコフの置換原則に反する場合です。
「子クラスは親クラスに常に置き換え可能である」
という制約が継承にはあるよってことです。
例えば複数の機能が備わった関数を

元記事を表示

大量データをpost送信したらエラーが発生した話

# はじめに
画面にデータを一覧表示をさせた後に送信ボタンを押した際、下記エラーが発生しました。
今回はその原因と対php.iniの設定変更についてまとめました。

# エラー内容
下記のエラーが画面に表示されました。
簡単に言うと、php.iniのmax_input_varsで設定された件数よりデータが多いのでエラーでっせということです。
“`
Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0

Fatal error: Uncaught ErrorException: Cannot modify header information – headers already sent by (output started at 以下発生箇所のパス…)
Fatal error: Uncaught ErrorException: Cannot modify header informat

元記事を表示

【PHP】【素数判定】PHPで素数問題を解く

# 素数とは

1・2以上の数※0と1は素数ではない
2・1とその数だけでしか割りきれない数

# コード1
“`PHP
$num = 3;
$point = 0;
foreach (range(1,$num) as $j) {
if ($num === 0) break;
if ($num % $j === 0) $point++;
}
echo $num,”:”,$point === 2 ? “素数だよ。”:”素数じゃない。”;
“`

# 結果1
“`
3:素数だよ。
“`

# コード2
“`PHP

元記事を表示

Zabbixスクリプトを公開してみました

gitの練習、PHPスクリプト作成練習も兼ねてGitHubにZabbix APIを使用したスクリプトを公開してみました。
現状以下2つを公開しています。

[・zbx-scripts](https://github.com/gohatomo/zbx-scripts)
“`
Zabbix APIでZabbixを操作するスクリプトを公開してくレポジトリです。
2022/6/6現在はホスト作成スクリプトだけですが少しずつ種類を増やしていく予定です。
“`
[・check_related_ac-tr](https://github.com/gohatomo/check_related_ac-tr)
“`
トリガーがイベントを生成した際にどのアクションが動作するかをチェックするスクリプトです。
CSV形式でトリガーとアクションの一覧を出力します。
※一応個人環境と想定でテストはしていますが100%の精度は保証していませんので、その点はご注意ください。(不備等見つけたら徐々に改善していく予定です)
“`

:::note warn
・個人的な趣味として公開していますので、突然の仕様変更の可

元記事を表示

リソースコントローラーを用いた際に、定義済みのルートを上書きしてしまってLaravel Route [ ] not defined.が発生。

<問題の概要>
StepControllerというControllerを用いて、ビューファイル(create.blade.php)を表示。
その際に、Route [step.store] not defined.のエラーが発生。

step.storeは、create.blade.php内でformに組み込んだルートの名称。
つまり、step.storeのルート定義が「web.php」内でうまくいっておらず、エラーが発生した模様。

“`エラー発生時のweb.php
middleware([‘auth’])->name(‘dashboard’);

Route::resource(‘step’, StepController::class);
Route::post(‘

元記事を表示

メソッドをcallable型の引数で受け渡す方法!

ここでかなり詰まってしまったためメモ!
“`php
do(function ($name) use ($hello): void
{
$hello->say($name);
}); // Hello! ららっく!
“`

useを忘れてて一生悩んでました…
もっと良い方法がございましたらご教示いただければ幸いです!

元記事を表示

OTHERカテゴリの最新記事