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

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

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を忘れてて一生悩んでました…
もっと良い方法がございましたらご教示いただければ幸いです!

元記事を表示

LaravelでのWEBスクレイピング

この前から、オリジナルアプリ作成でスクレイピングまで行ったのですが、案外大変でした。

# 何が大変だったか?
## スクレイピング先ページの属性
スクレイピングするのに、属性(クラスやセレクタ)を指定しなければならず、
ページを検証ツール(デベロッパーツール)で見ながらやる必要がありました。
(Laravelでなくても基本は同じかもしれませんが)
## スクレイピング先ページのデータ構成
スクレイピングしようとしているのが、ヤフースポーツの該当プロ野球チームの選手データなのですが、
表(テーブル)になっているので、スクレイピングするときもテーブルの形式で表示させるようにする必要があります。
スクレイピングで使っているのが、Guotteなんですがコードの書き方が複雑です。
## 参考サイトを見ながら、コード記述
サイトにより、web.phpに記述したり、ScrapingControllerに記述したりといろいろです。
今回はweb.phpに記述する方法を取りましたが、書き方に苦労します。

こんな感じです。

元記事を表示

【PHP】オブジェクト指向を使ってブラック・ジャックを作ってみた件

![poker-gfd5c5c832_1280.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697266/fcef329c-7372-cfb9-98e1-024e8684bb44.jpeg)

# 概要
PHPの学習内容のアウトプットとして、オブジェクト指向を使用したコンソールアプリのブラックジャックゲームを作成しました。コーディングの回答例等はなく、要件指示を基に設計・コーディング・テストは自力で行いました。躓いた部分はTeratail等の利用やGitHub等を参考にしながら制作しています。

GitHub : https://github.com/jirou6699/blackjack
Twitter : https://twitter.com/manmaru6699

# 目的

ブラックジャックをオブジェクト指向を使って実装します。機能追加・仕様変更のしやすい構成や読みやすいコードを体感・習得するために、3ステップで制作していきます。各ステップで変更・リファクタリングした内容も記載することに

元記事を表示

PHPでのスクレイピング

# 背景
とあるWebアプリを開発している際に、依頼者が別に管理しているサイトのデータを持ってきて使ってほしいとの要望。
そのデータはDBで管理していなくHTMLファイルに直書きしていたので、それらをPHPを使ったスクレイピングで取得した際の内容を記載。

使ったのは~~Googleが提供している~~[phpQuery](https://code.google.com/archive/p/phpquery/)(※)なるもの。
そやつを使うと想像以上に簡単にスクレイピングができました。
(※)GoogleでなくTobiasz Cudnikという方が作られたもののようです。

# 前提
今回データを取得したいサイトのHTML構造(一部)は以下の通り。

“`データを取得したいサイト.html
・・・

hoge

hoge_text

huge

元記事を表示

phar ファイルを解凍する

## 環境

* Cent OS 7
* PHP 5.4.16 (cli)

## 発生した問題

過去に他人によってビルドされた phar ファイルの挙動を変更する必要があるが、 phar アーカイブ前のソースコードが残っていない。

## 解決方法

`phar` コマンドを用いて、 phar アーカイブファイル (<file_name>.phar) を解凍する。

[[PHP] pharファイルの固め方と解凍の仕方-ぬこのおなかの忘備録 (itneko.blogspot.com)](https://itneko.blogspot.com/2017/08/phar.html)

phar コマンドファイルについては、 php-cli の RPM パッケージにバンドルされていた。

“`
# rpm -qf /usr/bin/phar
php-cli-5.4.16-48.el7.x86_64
“`

元記事を表示

PG見聞録 ~PHP編 継承~

ボーナス月だからか最近飲食業は忙しい日々が続いております。
しかも宅配業界なので梅雨は忙しいんですよね…
ここ数年はコロナの影響もあり宅配は需要が伸びてかなり忙しくなりました。

てことで今回は継承についておさらいしていきます。

継承(inheritance)

継承とは基となるクラスの機能を引き継ぎつつ、新たな機能を追加したりする仕組み。
ダーマ神殿で転職したけど元の職業の魔法使えるみたいな感じですかね。
継承の基となるクラスをスーパークラスや基底クラス、親クラスといいます
んで継承先のクラスをサブクラスや派生クラス、子クラスというわけですね。

“`php

元記事を表示

OTHERカテゴリの最新記事