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

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

Laravel-Excelで大容量のエクセルファイルをエクスポートする際の対策

## 背景
Laravelには特定のモデルのレコードをエクセル形式で読み書きしてくれる[Laravel-Excel](https://laravel-excel.com/)というライブラリが存在する。

しかし多くのレコードをエクスポートすると処理時間が長引き、クレームやユーザーの離脱等が発生すると考えられる。

その際の対策をサンプルコードも含めてメモ。

## 大容量ファイルのエクスポート

### 方針

1. 処理をLaravelの[Queue](https://laravel.com/docs/8.x/queues)に入れる
2. エクスポート処理
3. エクスポートが終わったらエクセルファイルをS3にアップロード
4. ユーザーにダウンロードリンクをメール通知

### 実装

※本記事ではLaravel-Excelのインストール方法は対象外とします。

以下のartisanコマンドを実行

“`shell
php artisan make:export UsersExport –model=User
“`

下記のようなファイルが生成される。

“`php:b

元記事を表示

基礎②〜if文、else、else if文〜 php

-はじめに-

If文、for文は基礎的なものだが理解するまでに時間がかかったので今回もまとめてみることにした。具体的な構文は言語によって異なるが、今回はPHPでまとめていきたいと思う。

-内容-

・if文について
Ifとは日本語で「もし〜であれば/ならば」という意味で使われる。
それと同様にプログラミングの世界でも「もし〜ならば」実行するといった、
特定の処理の場合に使われる。

例1:

$a = 100;

if($a > 50){
//ここで条件を指定する。

echo “ $aは50より大きい“;
//処理の実行
}

結果: $aは50より大きい

100という数字は50より大きいので「$aは50より大きい」という結果になった。

それでは条件が成り立たなかった場合を見てみる

例2:

$a = 100;

if($a > 150){

echo “ $aは150より大きい“;

}

結果: (条件が成り立たないため処理が実行されず何も表示れない)

・else、else if文

元記事を表示

29_新規プロジェクトの作成や初期設定について

##概要
新規プロジェクトを作成するときのコマンドと手順をおさらいしましょう。

##新規プロジェクトの作成
2通りのコマンドがあります。
※ここではプロジェクト名をsrcとしています。

##バーションを指定せずに作成
“`terminal
laravel new src
“`

##バージョンを指定して作成
“`terminal
composer create-project –prefer-dist laravel/laravel src “6.*”
“`

##初期設定
###タイムゾーンの変更
“`config/app.php
‘timezone’ => ‘UTC’,
// UTCをAsia/Tokyoに変更
‘timezone’ => ‘Asia/Tokyo’,
“`

###言語の変更
localとfallback_localの2箇所で設定がありますが、falllback_localは該当言語が見つからない場合の言語なので、enのままにしておきます。
また、**resources\lang**にjaの設定が保存されているフォルダとja.jsonファイルが必要

元記事を表示

連想配列からキーと値を指定して抽出する

データベースからレコードを取得した際、大体は以下のような二次元の連想配列である。
この時、あるキーにおいて指定の値を持つものを抽出したいことがある。

“`php:元データ
$array = [
0 => [‘id’ => 1, ‘blood’ => ‘A’, ‘name’ => ‘yamada’],
1 => [‘id’ => 2, ‘blood’ => ‘B’, ‘name’ => ‘tanaka’],
2 => [‘id’ => 3, ‘blood’ => ‘O’, ‘name’ => ‘satake’],
3 => [‘id’ => 4, ‘blood’ => ‘B’, ‘name’ => ‘murata’],
4 => [‘id’ => 5, ‘blood’ => ‘B’, ‘name’ => ‘takeda’]
];
“`

例えば、キー `blood` の値が `B` のものを抽出する場合は以下。[^1]

“`php:
$new_array = array_filter($array, fn($a) => $a[‘bloo

元記事を表示

[PHP]foreachで各要素の値を更新する時はkeyでしよう

# この記事の内容
「foreachで回した要素自体の値を更新したい」といったことが、たまにあるかと思います。
(あるよね…?)

上記の要件を満たしたいと思った時に
・参照渡しを使う
・foreachのkeyを使う
大きく分けて上記2種類の方法があると思ってるのですが、個人的にはkeyを使用した方法を使いたいなと感じたので、その辺りの方法とメリデメを残しておこうと思います。

間違ってる点あれば、ご指摘頂ければ幸いです。

# 環境
“`bash:ターミナル
$ php -v
PHP 7.1.33 (cli) (built: Oct 31 2019 17:37:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
“`

## ダメなパターン
まずおさらいですが、普通にforeachで値をそのまま代入しても値は変わりません。
foreachを使用すると、元の値のコピーが作られる為です。

“`php
$te

元記事を表示

PDOでMYSQLに接続 PHP

#■はじめに
●phpMyadminでデータベースとテーブルを作成している事

●データベースに接続するユーザーを作成する。この時にパスワードも設定しておく。
ユーザーごとに操作権限を決めると誤って必要なものを消したりする可能性が低くなる。
あなたはテーブルだけの権限ね
あなたはカラムのだけの権限ね

#■PDOを使いMYSQLに接続します。
PDOとはPHPでMYSQLに接続するのに必要なもの

“` php
$dbh = newPDO($dsn,$user,$pass);

//結果 下記のように表示されれば成功
object(PDO)#1 (0){}
“`

####▼$dbh
データベースハンドルの略 データベースを操作しますよと言う変数

####▼newPDO
PDO接続を呼び出す。
PDOクラスのインスタンスを作成

####▼$dsn
データソースネームの略
接続したいデータベースの情報を書く
下記のような決まった書き方がある。

“` php
$dsn = ‘mysql:host=localhost;dbname=データベースの名前;charset=utf8’

元記事を表示

【Laravel】デフォルトで出力されない例外(HTTPエラー等)をログに出力する

#結論
`App\Exceptions\Handler.php`で`$internalDontReport`配列を、空の配列でオーバーライドする。

#説明
Laravelの例外はすべて`vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler`クラスでcatchされ、ログの出力とユーザへの表示を行います。

ログの出力は`report`メソッドが担当しています。

“`php
public function report(Exception $e)
{
if ($this->shouldntReport($e)) {
return;
}

if (Reflector::isCallable($reportCallable = [$e, ‘report’])) {
if (($response = $this->container->call($reportCallable)) !== fa

元記事を表示

はじめまして、

はじめまして、miru-kululuです。
よろしくお願い致します。
#駆け出しエンジニアとつながりたい
#本日の積み重ね

元記事を表示

Herokuで簡単なPHPプログラムを動かす

Heroku上で簡単なPHPプログラムを動かします。
こちらの記事は、初学者の方にも分かりやすいよう簡単な説明を心がけています。
そのため曖昧な部分もあるかと思いますが、詳細については各自でお調べください。

##環境
OS:Windows10 Pro 64bit

##事前準備

* Herokuにアカウントを作成
* Gitのインストール
* Heroku CLIのインストール

####Herokuにアカウントを作成
Herokuを利用するにはアカウント登録が必要です。
[https://jp.heroku.com/](https://jp.heroku.com/)
heroku_hp

なお、無料、有料どちらのプランもありますが、個人で利用する程度ならば無料プランで十分でしょう。無料枠の制限について

元記事を表示

基礎①〜文字列、数値、変数〜 php

-はじめに-

基礎的な部分の理解度が思ったよりできていなかったため自分なりにまとめてみた。

-内容-

・PHPについて

言語としての特徴 

・web開発に適しており、HTMLに組み込むことができる
・JavaScript とは異なりコードがサーバーで実行されその結果クライアントに送信することがでる

参考:https://www.php.net/manual/ja/intro-whatis.php

・文字列と数値の違いについて

クオテーションを使用しコンピューターの中で言語を文字として認識してもらう、数値として認識してもらうことを指します。

例1:

echo 1+1 ;
//結果: 2

上記の場合クオテーションを使用しなかったため、コンピューター上において数値と認識されたため、結果として「2」という答えがでました。

例2:

echo “1+1”;
//結果: “1+1”

上記の場合ダブルクオテーションを使用したため、コンピューター上で文字列と判断され結果として「”1+1”」という答えがでました。

注意!)クオテーショ

元記事を表示

加算子,減算子 , count PHP

-はじめに-

問題を解いていく中でcountと$++についてつづいたので自分なりに調べ考えをまとめてみた。

-内容-

・countについて 

count

変数に含まれるすべての要素、 あるいはオブジェクトに含まれる何かの数を数えます。
参考:https://www.php.net/manual/ja/function.count.php

・加算子/減算子について

++\$a 前置加算子 $a に 1 を加え、$a を返します。
$a++ 後置加算子 $a を返し、$a に1を加えます。
–$a 前置減算子 $a から 1 を引き、$a を返します。
$a– 後置減算 $a を返し、$a から 1 を引きます。

インクリメント演算子=増加させる演算子
for文などの繰り返し文で、1ずつ増やす処理をする時によく使われる。

「i」が変数で「++」がインクリメント演算子で対象の値を1つ増やすことがわかったら、「i++」の意味も分かってくる。

「i++」は

変数「i」に値を1追加する

という意味になる。

参考:https://w

元記事を表示

【Laravel】Class (…) not foundの対処

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874156/f96022de-e4c3-5807-a5bf-d6130d77060a.png)

#結論
###自分で作成したモデルのnamespace宣言が誤っていた。

`php artisan make:model`コマンドでモデルを作成した場合は自動的に名前空間が登録されるようですが、
コマンドを使用せず自分でモデルを追加した場合、別途登録してあげる必要があるようです。

#発生したコード

“`php
// App\Models\PasswordResetsという名前空間をインポートしているのに
use App\Models\PasswordResets;

class ResetPasswordController extends Controller
{

public function showResetForm(Request $request, $token = null)
{
/

元記事を表示

ポートフォリオ「Fishing App」

PHPをお使いになる会社のインターンが決まったので、これを気にLaravel、Vue.jsを使ってポートフォリオを作成しました。

#ポートフォリオ
URL: https://fishingapp.work/
![topImage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/848640/3260524d-ed49-58ce-3ced-83ea9958f087.png)

Fishing Appとは、釣りスポットを投稿し、釣りスポットにコメントして釣果などを共有するアプリです。また、釣りスポットにおすすめの釣り方を選択することもできます。さらに、カレンダーで釣りの予定、記録をすることができ、このアプリ1つで満足できます。

##制作背景

1,初心者に釣りの知見を広めてほしいため

現在は釣りの技術が発展しており、釣りを始める人が日々増加しています。しかし、初心者の場合、どこで釣りができるかわからない、どんな釣り方があるのかわからないという方々がほとんどだと思います。そこで、釣りスポット

元記事を表示

Laravel IDE helperのide-helper:modelで生成されるPHPdocはどこに記載すべきか

## 背景

Laravel + PHPStormで開発しているとmodel等の補完が効かず辛い。

そこで[Laravel IDE Helper Generator](https://github.com/barryvdh/laravel-ide-helper)の出番

これを導入すると、modelに定義してあるプロパティやスコープなどをサジェストしてくれる。

## 問題

この機能はライブラリがモデルのPHPdocを自動生成しIDEが参照することで実現している。

PHPdocをどこに生成するかはコマンドのオプションで選択可能。

“`shell
# モデルクラスに直接生成
php artisan ide-helper:model –write

# 専用のファイルに別で生成
php artisan ide-help

元記事を表示

Brefを利用したサーバレスLaravelアプリケーションの構築

Brefを理解するためにプロジェクト作り直して一から勉強中の忘備録。

[Bref](https://bref.sh/)とは[Serverless Framework](https://www.serverless.com/)を利用して[AWS Lambda](https://docs.aws.amazon.com/lambda/)のPHPアプリケーションを簡単に構築してくれるもの。
以下は[Laravel](http://laravel.jp/)でのBref導入時の手順。

### 1. Serverless Frameworkのインストール

“`
$ npm install -g serverless
$ serverless config credentials –provider aws –key –secret
“`

Serverless Frameworkとは、AWSならCloudFromationなどクラウドの構築管理サービスといい感じに連携してくれるやつ。(説明雑

### 2. Laravelプロジェクトを作成

“`
$

元記事を表示

ポートフォリオとして、絵本読み聞かせ記録のWebアプリを作成しました。【Laravel / Docker / AWS / CircleCI】

# はじめに
### 記事の目的
**ポートフォリオとして作成したWebアプリケーションの紹介記事です。**
![スクリーンショット 2021-07-29 20.52.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/9a393f98-b233-a80a-63db-fcc85f076133.png)
注: 絵本読み聞かせ記録 とは、録音再生などの機能ではなく、テキストのみの記録です

主な使用技術は、言語/フレームワークは**PHP/Laravel**、開発環境は**Docker**、本番環境は**AWS(EC2,RDS,S3など)**、CI/CDパイプライン構築は**CircleCI**で作成しています。

また、**アプリ自体のご紹介**のほか、**アプリ作成に至るまでの学習内容**などにも触れられたらと思います。

目次は以下のとおりです。
[1. 作成したアプリについて](#1-作成したアプリについて)
[2. 作成した目的・背景について](#2-作成した目的背景について)
[

元記事を表示

htmlspecialchars関数とは PHP

#■htmlspecialchars()とは
PHP上でコードをテキストとして表示させる時に使うメソッド
エスケープを行うとも言う。
エスケープしないとXSSが行えてシステムに問題が起こる。

“` php
htmlspecialchars(第一引数,第二引数,第三引数);
“`

▼第一引数
エスケープしたい文字を入れる。
変数でも良い。

▼第二引数
変換のパターンを入れる。

|変換パターン|説明|
|:–|:–|
|ENT_QUOTES|ダブルクオテーション、シングルクオテーションどちらも変換|
|ENT_COMPAT|ダブルクオテーションのみ変換|
|ENT_NOQUOTES|ダブルもシングルも変換しない|
|ENT_COMPAT|デフォルト|

▼第三引数
文字コードの指定
UTF-8など

###■htmlspecialchars()を使わない場合
コードがテキストとして表示されずコードの能力が発揮されている。
*危ない

“` php
こんにちわ

“;
echo $a;
?>

//結果 こんにちわ
“`

##

元記事を表示

【PHP】今更ながらPHP/JavaScriptチャレンジレスポンス認証を実装してみる

# 1. まず初めに
#### https環境が「普通」になりつつある今更、あえてチャレンジレスポンス認証を実装する必要性は無いような気がします。

しかし、「無いよりマシ」という言葉がある通り、念には念をという事で私が作っているとあるプログラムのログイン画面に勉強も兼ねてチャレンジレスポンス認証を実装してみたいと思います。
# 2. チャレンジレスポンス認証とはなんぞや?
チャレンジレスポンス認証は他にも「チャレンジ・レスポンス認証」「チャレンジレスポンス方式認証」など、いろいろな呼び方があります。

ネットワークスペシャリスト試験(NW)ではチャレンジレスポンス方式という呼び方がされていますが、個人的にチャレンジレスポンス認証の方が言いやすい(?)ので今回はチャレンジレスポンス認証という呼び方をしたいと思います。

そして、中身についてですが、
####・とりあえず認証方法の一種
####・そもそもパスワードをネットワーク上に流さない
####・サーバー側で発生させた疑似乱数を利用してお互いにパスワードからハッシュ値を求め、両者のハッシュ値が一致したらログイン成功
という特徴があり

元記事を表示

laravelにおいてのbootstrap導入方法

ダウンロードとかいろいろ書いてあるけど、、、
headの部分に

“`html “`
を書くだけでOK!

#テンプレート
“`html


PDOのqueryの中に変数を入れる方法

ひじょーに単純

$table ="hoge";
$query = "SELECT * FROM $table";

RubyとかJavaとかやってるとこんがらがってくるけど、
PHPはダブルクォーテーションの中に書くだけです。

元記事を表示

OTHERカテゴリの最新記事