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

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

【Laravel】Storage::disk(‘local’)->append() で out of memoryする

# Storage::disk(‘local’)->append() で out of memory
正確には何度も繰り返しappend()していたらout of memoryとなりました。
原因は少し前のissueになりますが、githubにありました
[Storage::disk(‘local’)->append method run out of memory #24439](https://github.com/laravel/framework/issues/24439)
issueによるとライブラリの関係でappendを呼ぶ度に、ファイルの中身をメモリに読み込んでいるのが原因のようです。

## 対応
これはローカルファイルに書き込む場合に起きるのでLaravel使わずにやります。

“`php:example.php
$handle = fopen(storage_path(“app/hoge.csv”), “a”); // aで追記モード
fwrite($handle, “,”);
fclose($handle);
“`

むちゃくちゃ簡単な対応ではあるのですが、メ

元記事を表示

様々な言語での日時表記

#背景
日時表現は割とよく使うけど、言語で書き方統一されてなくて正直やり辛いな~~
似てるけどちょっと違う、が多くてよくミスってしまうな〜〜
と思ったので覚書程度にまとめます。

というわけで、いろんな言語で現在の年月日・時刻を「2021年10月02日 23時00分00秒」の形式で出力します。
とりあえずはJava, Ruby, Python3, Go, php。適宜更新します

#Java(8以上)
SE8から加わったDate and Time APIのおかげで実装がぐっと楽になりました。

“`Java:Main.java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
public static void main(String[] args) {
// SE8から加わったクラス。現在の日時を取得
LocalDateTime dateTime = LocalDateTime.now();

// 独自のフォーマットを準

元記事を表示

【初心者向け】LaravelでYoutubeのお気に入りCuration(まとめ)アプリを作る【第3回: ログイン機能実装】

(この記事はまだ作成中です。)

こんにちは。
ITエンジニアの濱辺(ハマベ)です。

前回に引き続き、お気に入りの動画を共有できる、SNSのようなアプリを作っていきます。

前回は、DB周りをやりました。

第3回は、主に、ログイン機能周りを作成していきます。

↓第一回はこちら
[LaravelでYoutubeのお気に入りCuration(まとめ)アプリを作る【第2回】](https://qiita.com/dogabon20/items/bd376085f4fdecdaeb99)

↓こちらの画面定義書のものを作っていきます。
[Youtube-Curation 画面定義所 (googleスプレッドシート)](https://docs.google.com/spreadsheets/d/1BglTVpnsappqNFoNTnmr1NfkRqT47VFF_u4Z4MvAu3w/edit#gid=68179162)

## トップページを作る

まずは**router**を作成します。

routerの作成とは、このURLにアクセスしたら、このページを表示してね、という決まり事を決め

元記事を表示

LaravelとBootstrapで作るアプリケーション開発にトライ1

## はじめに
YouTubeでぽんたさんの動画を発見して、動画が短時間で複数回に渡って解説していたので、こちらを見ながらハンズオン。
おまけに、Zennで解説書も提供されているので、不明点が無いくらい、有料でも良いくらいな資料だと思いました。
見よう見まねですが、手を動かさないことには覚えられませんのでレッツトライ!

## 概要
Laravelを使用したCRUD(登録・表示・更新・削除)機能の開発

## 操作環境
 Windows10 21H1
 Visual Studio Code
 Docker Desktop for Windows

### 使用する言語・フレームワークなど
・PHP 7.4
・Laravel 6
・Bootstrap 4.5
・MySQL 5.7
・Docker
Dockerは入っていなかったので、ダウンロードしてインストール。

### 作業用フォルダ作成
 ・Laravel_todo
### ファイル作成
 ・docker-compose.yml
 ・Dockerfile

### 開発環境立ち上げ
コマンド実行 docker-compose

元記事を表示

PHP Conference Japan 2021 スライドまとめ

## PHP Conference Japan 2021

– 公式サイト: https://phpcon.php.gr.jp/2021
– 公式YouTubeチャンネル: https://www.youtube.com/user/PHPConferenceJP
– 公式ツイッター: https://twitter.com/phpcon
– ハッシュタグ: [#phpcon](https://twitter.com/hashtag/phpcon) [#phpcon2021](https://twitter.com/hashtag/phpcon2021)
– 日時: 2021/10/2(土) 〜 2021/10/3(日)

## YouTube

### 10/2(土)

Track 1 https://youtu.be/gdCE-UGqeSM
ハッシュタグ: [#phpcon2021 #track1](https://twitter.com/search?q=%23phpcon2021%20%23track1&src=typed_query)
Track 2 https://youtu

元記事を表示

【初心者】Laravelのミドルウェアって

##はじめに
「Laravelのミドルウェアって何者?」というレベルの初学者が
ざっくり調べてざっくりまとめました。(Laravel6系です。)

##ミドルウェアって
Laravelにおけるミドルウェアは、コントローラークラスの処理前後に位置し、主にHTTPリクエストのフィルタリングやHTTPレスポンスの変更を担う。認証やCSRF保護などのミドルウェアが用意されていて`app/Http/Middleware`ディレクトリに設置されている。

![middleware.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/5132df31-b820-a7f3-be66-d9bb8e9dfab4.png)

そして、ミドルウェアは自作できる..!!
##作成手順 (Laravel6)
1.artisanコマンドでミドルウェアクラスを作成
2.ミドルウェアクラスの編集
3.ミドルウェアクラスの登録

### 1.artisanコマンドでミドルウェアクラスを作成

“`.php
php arti

元記事を表示

【初心者向け】LaravelでYoutubeのお気に入りCuration(まとめ)アプリを作る【第2回: MySQLに接続】

こんにちは。
ITエンジニアの濱辺(ハマベ)です。

前回に引き続き、お気に入りの動画を共有できる、SNSのようなアプリを作っていきます。

今回は、MySQLにデータ登録できるようにするところまでやっていきます。

## 前提条件
MacOS 11.2
PHP 7.4.2
Laravel 6.20.34
Docker
MySQL

↓第一回はこちら
[LaravelでYoutubeのお気に入りCuration(まとめ)アプリを作る【第1回】](https://qiita.com/dogabon20/items/a5574360a0b05c112048)

↓こちらの画面定義書のものを作っていきます。
[Youtube-Curation 画面定義所 (googleスプレッドシート)](https://docs.google.com/spreadsheets/d/1BglTVpnsappqNFoNTnmr1NfkRqT47VFF_u4Z4MvAu3w/edit#gid=68179162)

## Model構築

まずはMVCモデルの「M」Modelを作っていきます。
[MVCモデルとは

元記事を表示

【第三回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー

#前回までのあらすじ
[【第二回】コロナ禍だから何かできることを](https://qiita.com/STYLE-D/items/9e0addd8df44be8590b7)

####実装イメージ図
LINEを利用して保健所の担当者の負担を軽減するとともに、自宅療養者はいつでもつながっている安心感を持たせるためのツールイメージです。
![メイン.00_00_51_12.Still002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/cf85391e-aef8-5a59-0a1d-63d8e15412ce.jpeg)

##まずはLINEからデータベースまでの流れを考えよう
![システム構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/ac5262ba-5db6-bdc3-d7f1-6c007182fce8.jpeg)

WebHookで取得したデータを解析して、メッセージの内容によって処理

元記事を表示

【Laravelエラー】Class ‘App\Http\Controllers\DB’ not found

#バージョン
Laravel Framework 8.61.0
#状況
トランザクションを使おうとするとエラーに。
##エラー画面
![スクリーンショット 2021-10-01 20.21.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1836900/38deef24-7cbf-1d17-da69-3af3d98784a8.png)

##コード

“`php:HomeController.php
use Illuminate\Http\Request;
use App\Models\Memo;

class HomeController extends Controller
{

DB::transaction(function() use($posts) {
$memo_id = Memo::insertGetId([‘content’ => $posts[‘content’], ‘user_id’ => \Auth::id()]);
});

元記事を表示

【WordPress】自作ショートコードの定義

依頼に応じてショートコードを作成することがあるのですが、
なにぶんよく書き方を忘れるので、ひな形を備忘録として残します。

#シンプルなショートコードの定義
決められた文字列を返すだけのどシンプルなショートコード

“`functions.php
function hoge_func() {
return “Hello World”;
}
add_shortcode(‘hoge’, ‘hoge_func’);
“`
“`WordPress.設定
[hoge]
“`

#引数を渡して実行するショートコード
###1つの引数を渡す場合

“`functions.php
function hoge_func($atts) {
extract(shortcode_atts(array(
‘num’ => 0,
), $atts));

return $num * 2;
}
add_shortcode(‘hoge’, ‘hoge_func’);
“`
「’num’ => 0」で変数「num」に初期値「0」を代入する。
※引数が渡されな

元記事を表示

配列や連想配列の違いとは

#最初に
私**(プログラミング初心者)**はPHPを学習していて、今までずっと理解をあやふやにしていた配列や連想配列が今となってやっと理解できたので共有致します!
役に立ったら幸いです!!

↓↓↓今回は以下の実行環境でやります↓↓↓
**PHP Version 7.4.9**

どうぞよろしくお願いします!!!

##配列や連想配列とは
変数が一つの値を保存できる箱だとすれば、**配列とは複数の値を保存できる箱**です。
また、配列はキーが数字に対して、**連想配列とはキーを好きな名前(わかりやすい名前)に設定できる配列**です。

これだけを頭に入れて、実際に下のコードの結果はどうなるかを手動かしながら自分の目で見て、配列や連想配列を感覚的に理解していきましょう!!

###配列と連想配列の書き方
“`PHP
// 変数(おまけ)
$variable = 1;
echo $variable;

// (一次元)配列
$array = [1, ‘プログラミング初心者’];
echo $array[1];
// 配列の中身を確認する
echo ‘

';
var_dump($

元記事を表示

【PHP】多次元配列 カラム同士を計算

```PHP
'田中', 'japanese' => 83, 'math' => 57, 'science' => 43, 'social' => 72, 'english' => 78],
['name' => '渡部', 'japanese' => 62, 'math' => 88, 'science' => 70, 'social' => 66, 'english' => 38],
['name' => '品川', 'japanese' => 23, 'math' => 33, 'science' => 53, 'social' => 17, 'english' => 07],
['name' => '滝谷', 'japanese' => 93, 'math' => 89, 'science' => 79, 'social' => 96, 'english' => 91],
['name' => '川原田','japanese' => 55, 'math' =>

元記事を表示

【PHP】宇宙船演算子のやり方

```PHP
$value) {
switch ($value <=> $expense) { // ⇐ これが宇宙船演算子
case -1:
echo '赤字:'; // 赤字
break;
case 0:
echo '変化なし:'; // 利益なし
break;
case 1:
echo '黒字:'; // 黒字
break;
default:
break;
}
echo $value-$expense.PHP_EOL;
}

```

#結果
```
赤字:-5000
変化なし:0

元記事を表示

EC2にadminerを入れる手順

#はじめに
題名通りで、EC2にDB管理ツールのAdminerを設置します。

#前提
・EC2とRDSを事前に設置
インターネットゲートウェイやサブネットも作成済み
[こちらを参考にしました](https://qiita.com/MayForBlue/items/c96674fb6aac5852a978)
・RDSはMYSQL
・EC2のインバウンドのセキュリティーグループはこちらの設定にしてください。

#流れ
①EC2にapacheをインストール
②PHPとM

元記事を表示

PHPでCookieにSameSite属性を付ける方法

# PHP7.2以前の`setcookie`関数には`SameSite`属性をつけるための引数がない!

`header`関数で生の`Set-Cookie`ヘッダを書くのも手ですが・・・

裏技として、Path属性用の引数を利用して`SameSite`属性をつけることができます。

```php:7.2以前の方法(裏技)
/* 関数のインターフェース
setcookie(
string $name,
string $value = "",
int $expires = 0,
string $path = "",
string $domain = "",
bool $secure = false,
bool $httponly = false
): bool
*/

# pathにわたす文字列内に`;`をいれることで、無理やりSameSite属性を指定する!!!
setcookie('cookie_name', 'cookie_value', 0, '/; SameSite=strict', '', true, true);

#

元記事を表示

Laravel 5.5 MultiAuth 実装(userとadminをわけてログイン)

## はじめに
今回初めてqiitaを書くため、読みにくい点が多いかと思いますがご容赦ください。
laravel5.5を使用しており、最新のバージョンではありません。

## MultiAuth(マルチログイン)とは
MultiAuth(マルチログイン)は、『ユーザと管理者の2つに分けてログインが行える機能である』という想定をしています。
アプリを使用するゲストユーザ → user
アプリを管理する管理者 → admin

## 前提
- laravelの環境構築を終えている
- MAMPを使用
- DBとの接続を終えている
- 管理者側はログインのみの実装(管理者は1人と想定しSeederでデータを入れる)
- ゲストユーザは新規登録、ログインが行える

## 実装手順
[1.ゲストユーザ側の認証機能の実装](#1-ゲストユーザ側の認証機能の実装)
[2.モデルのディレクトリを変更](#2-モデルのディレクトリを変更)
[3.管理者側のモデル作成](#3-管理者側のモデル作成)
[4.管理者側のモデル編集](#4-管理者側のモデル編集)
[5.管理者側のマイグレーションファイル編集]

元記事を表示

laravelのwhere()で複数のカラムを指定したい

laravelのwhere()で複数のカラムを指定したいと思いましたがやり方がわからずに調べました。

##夢

```php
where(['login_id', 'ToUserId'],Auth::id())
```
どちらかのカラムに自分のIDが入っていたら取得する。
しかし、whereの第一引数には配列が指定できませんでした。

##解決策

```php
whereRaw('`login_id` = ? OR ToUserId = ?', [Auth::id(), Auth::id()])
```

綺麗ではないですが上記であれば取得可能です。
?の部分に第二引数で指定した配列が入ります。

##参考記事
https://www.ritolab.com/entry/93

##感想
むずい

元記事を表示

MySQLへのつなぎ方

##データベースを作成する
```
mysql -u root -p
```
-u ユーザー名
-p パスワード認証

MySQLにログイン完了後、kakekomi(私が作成したいデータベース名)というデータベースを作成します

```
mysql> CREATE DATABASE `kakekomi`;
```

作成したデータベースを確認するには

```
mysql>show databases;
```

下記のような表示されます。

```
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| easywms |
| kakekomi |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.01

元記事を表示

composer-bin-pluginを導入してDeveloperツールを管理する

# 概要
コードをフォーマット通りに整形するため、[PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)を導入したいと思いました。
ドキュメントを確認したところ、専用のディレクトリを切ってそこにインストールするやり方が推奨されていた。どうしたものかと[ツイート](https://twitter.com/juve534/status/1443015965579440131?s=20)したところ、[composer-bin-plugin](https://github.com/bamarni/composer-bin-plugin)を教えてもらったので、そちらを使って管理する方向とし、やったことをメモしておきます。

# 本文
## [composer-bin-plugin](https://github.com/bamarni/composer-bin-plugin)とは
説明は下記のスライドに詳しく載っています。Developerツールをこのプラグインを使って管理することで、依存パッケージのver.によるコンフリクトを軽

元記事を表示

プリミティブ値をオブジェクトで置き換える

オブジェクト指向を使っていて、ひとついいなと思ったことです。

[リファクタリング 既存のコードを安全に改善する(第2版)](https://tatsu-zine.com/books/refactoring-2ed)という書籍では、「オブジェクトによるプリミティブの置き換え」と命名されていました。

todo アプリを例に説明します。

# `int` での引き渡し

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124948/988b1a50-a6fa-218d-768f-09c93c4742fa.png)

`int` で引き渡していると、各コンポーネントは「`$task_id` <= 0 のときに次に渡すとバグるかもしれないな...」ということを考える必要が生じます。 image.png (124.8 kB)

  • OTHERカテゴリの最新記事