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

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

【PHP】__construct(コンストラクタ)をなぜ使うのか?

# ※__constructをなぜ使うか?

インスタンスの生成した瞬間実行できるから※他はわからん

“`PHP

元記事を表示

【Docker】最小限の構成でcomposer実行環境を作る

ライブラリ単体でちょっとした動作確認を行いたい時に便利です。
最小限の構成のため、コードを1行ずつ理解しながら進めやすいと思います。

# ゴール
composerを利用してPHPUnitをインストールし、動作検証まで実行します。
– Dockerを利用してcomposerをインストールできる。
– コンテナにライブラリをインストールできる。

## 最終的なディレクトリ構成
“`bash
.
├── Calculation.php
├── CalculationTest.php
├── Dockerfile
├── composer.json
├── composer.lock
├── docker-compose.yml
└── vendor
“`

# 注意点
記事中のコードは自習用を想定しているため、下記は考慮していません。
– vendor/のマウント設定
– composer.jsonの詳細な設定

# composerのインストール
## ディレクトリ構成
“`bash
$ tree
.
├── Dockerfile # New!
└── docke

元記事を表示

LaravelのCashierでusersテーブルではなく他のテーブルを使いたい

Laravelで決済処理をするためにCashier(Stripe)を導入した際に、
Stripeの顧客をusersじゃないテーブルにしたかったのですが、
そのときのあれこれを備忘録として残します。
– Laravelのバージョン:**8.63.0**
– Cahierのバージョン:**v13.8.0**

## ■ まずLaravelにCashierを導入する
composerでCashierパッケージをインストールします。
“`
composer require laravel/cashier
“`

## ■ マイグレーションを実行する前に必要なこと
無事導入できたら、
デフォルトでは
ここでマイグレーションを実行すると、
既存のusersテーブルにStripeのためのカラムがいくつか追加されて、
新たにsubscriptionsというテーブルと、
subscription_itemsというテーブルが追加されます。

>usersテーブルにStripeのためのカラムがいくつか追加されて、

usersテーブルに追加されたカラムのいくつかのうちのひとつに、
**stripe_id

元記事を表示

旅の思い出投稿サービス『Travel notes』の紹介

# サービス概要
旅の思い出を投稿して、他ユーザーと共有できるWebアプリケーションです。
URL:https://travel-notes.online/
![スクリーンショット 2022-03-06 13.59.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/723ae14d-5cd6-b6ae-87ac-2bec977cf9f2.png)

## 開発背景
– 趣味のみで繋がり共有し合える平和なSNSサービスを作りたかった
– SNSサービス開発を通じて、バックエンド、フロントエンド、インフラの技術力を高めたかった。

#### 旅行をテーマした理由
– 旅行好きな人が多く存在していて、国内外問わず話題が豊富である
– 自身の趣味である

## 機能一覧

#### 認証機能
– ユーザー登録機能:名前・メールアドレス・パスワード登録
– ログイン機能:メールアドレス・パスワード認証
– ゲストログイン機能:ユーザー未登録のままログイン可能
– パスワード再設定機能:メールアドレ

元記事を表示

DockerでLaravel環境構築

業務でVirtualBox利用したので、仮想環境ついでにやってみることに。
以前からDockerに興味はあったが壁が高いかなと思っててできていませんでした。ちなみに自分のエンジニアレベルは初級です。

# Docker for Macのインストール
下記にアクセス。
https://docs.docker.com/desktop/mac/install/
![Install Docker Desktop on Mac.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1007978/1572a475-920f-86b4-56d4-fd767f627899.png)
docker.dmgファイルをダウンロード。
少し待つ。

終わったらダブルクリックで展開。検証される。
![Pasted Graphic 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1007978/174b59a6-75ea-d4c5-4374-a493

元記事を表示

複数選択のチェックボックスは順位付きにしないか?

# 順位・順序って大事でしょ

何かと優先順位を付けたがる割に、チェックボックスには順位がない。なもんで、第一希望・第二希望って質問項目を並べて、長ったらしいアンケートになったりする。
と思って、順位付きチェックボックスを作ってみました。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27181/a92bdaed-eeb0-096e-6e63-4da900207c83.png)
“`php

元記事を表示

SESSIONとCookieの違いとログイン処理

「SESSIONとCookieの違いってなんだろう?」をまとめてみたのと、一緒に利用されているログイン処理についての備忘録。

## SESSION とは
サーバー側で保有している、ユーザーと紐ずくデータをサーバー側に一時的に保存できる仕組みの事。

### SESSIONが使われる例
複数のページ間で情報を共有する必要がある「ログイン」「アンケートフォーム」などで利用される。

## Cookieとは
ブラウザ側で保有している、ユーザーが選択した情報やSESSION IDなどをブラウザ側に一時的に保存できる仕組みの事。

### Cookieが使われる例
ブラウザを閉じても一定期間ブラウザ側に保存されるので、ログイン機能と合わせて利用されたり、
オンラインショッピングのカートの中身情報などを保存する目的などで利用される。

## PHPのログイン処理
1. SESSIONを生成して、サーバー上で**SESSION ID**を発行する
2. SESSIONを生成したブラウザのCookieに**SESSION ID**を書き込む
3. **SESSION変数** を **SESSION

元記事を表示

【加筆・修正版】PHPでお問い合わせフォームを作成する

過去に執筆した記事ですが、学習を進めるにあたって投稿した内容では不十分な点があることに気づいたため、大幅加筆修正いたしました。
過去に一度読んでいただいた方も、再度目を通していただけると幸いです。

**PHPでお問い合わせフォームを作成する①**

https://qiita.com/Michi1090/items/a575375e3db3fc6a2a90

**PHPでお問い合わせフォームを作成する②**

https://qiita.com/Michi1090/items/150f4cd178155072f44c

元記事を表示

AWSからWordPressを起動する際に詰まったところ

# この記事なんの記事
結構前に購入した「[Amazon Web Service 基礎からのネットワーク&サーバー構築](https://www.amazon.co.jp/Amazon-Web-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%EF%BC%86%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89-%E6%94%B9%E8%A8%823%E7%89%88-%E5%A4%A7%E6%BE%A4-ebook/dp/B084QQ7TCF)」という本を基にAWS上でWordPressを起動するところまでをやってみました。
私が持っていたのは2019年2月発行の第4版ですが、書籍通りの手順でやってみてできなかった箇所がいくつかあったので、解決方法をメモしておきます。
エラーメッセージ含め、色々とメモが残っていなくて雑気味です。すみません。

# 前提
AWSなど

元記事を表示

Laravel8とjetstreamで認証機能を実装する

## はじめに

認証機能とかっこよく書きましたが、要するにログイン機能の事です。この記事では、`Laravel8`でログイン機能を簡単に実装できる`jetstream`というライブラリを紹介します。

詳しい説明は省きますが、`jetstream`を使用する事で以下の機能が自動で実装できます。

+ ログイン機能
+ 会員登録機能
+ パスワードメール確認
+ ログイン失敗時のロック
+ プロフィール情報編集機能
+ 2段階認証

とりあえず、ここまで実装するのが本記事の目標です。

(もっと詳しく知りたいという方は、こちらの記事を読んでみるといいと思います。僕もこれで学びました)
[【Laravel】初めての認証(Laravel8でJetstreamを使う)](https://qiita.com/manbolila/items/498aae00f3574c72f031)

## 環境

MacOS(Windowsでも LinuxでもOK)
Laravel8.x
Composer2.0

## `jetstream`とは

PHPのフルスタックフレームワーク、Laravelで利用可能

元記事を表示

Laravelのartisanでmigrate:rollback時にstepを必須にする

# 概要
本番環境でやらかさない為に。

php artisan実行時に
・migrate:rollbackする時にstep指定を必須
・migrate:fresh|resetを実行禁止

Laravel:8.81
PHP:8.1

# 参考
こちらの記事から追記・修正させて頂きました

【Laravel】artisan コマンド実行による操作ミスを防ぐ処理の作り方

# コード
“`php:App/Console/Kernel
namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Str;
class Kernel extends ConsoleKernel
{

// コマンド一部禁止
public function handle($input, $output = null)
{
$t

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part7

皆さんこんにちは こうも開発記録頑張るぞい

今までの開発記録はこちらへ
胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編
公式ドキュメントの言う通り、パッケージをインストールされたら、Inertia.jsが導入されて???になった編
マルチログインを作ってみた編
デザインをtailwindcssに丸投げする編
Laravel:emptyの罠

emptyの使い方、完全に勘違いしていた。

Laravelのcollectionに対して空かどうかの判定はisEmpty()を使う。
普通にforeachでイテレートできるのでempty(collect([]))で判定できるもんだと思っていたら、全部trueになってた。

[Laravel 5.8 コレクション](https://readouble.com/laravel/5.8/ja/collections.html)
>Illuminate\Support\Collectionクラスは配列データを操作するための、書きやすく使いやすいラッパーです。

例えばこのような例や
“`php
$collection = collect([]);
while(!empty($collection)) {
// do
}
// => 無限ループする
“`

ガード節などでうまくいかない。
“`php
if (!$collection) {
return; // => ここに入ることはない。
}
// do
“`

友人の言葉を借りると、
“`php
empty($va

元記事を表示

【PHP】クラスのstatic(スタティック)はなぜ使うのか?

# ※staticをなぜ使うか?

インスタンスの生成を省略できる※他はわからん

“`PHP

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part6

皆さんこんばんわ(この記事を投稿したのは真昼間です)

今回も引き続き、プロフィール画面の続きを開発していきます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f323238313934362f30396630376266302d323930352d643666652d366366632d613837386465373638643834.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/0e6465c6-e1b2-6329-74d7-3f2965a07b49.jpeg)

今までの開発記録はこちらへ
胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編

元記事を表示

【PHP】クラスとは

# ※クラスをなぜ使うか?

共通で使いたい処理をまとめていつでも呼び出せるようにしたいから

“`PHP
cat;
if($animal === ‘dog’) return $this->dog;
if($animal === ‘bird’) return $this->bird;
}
}

$food = new Food();

echo “猫の餌:”.$food->cry(‘cat’);
echo PHP_EOL;
echo “犬の餌:”.$food->cry(‘dog’);
echo PHP_EOL;
echo “鳥の餌:”.$food->cry(‘bi

元記事を表示

【個人開発】誰でも、気軽に使える!エンジニア向け案件マッチングサービスを作ってみた。

# はじめに
![match.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185943/677239f4-ca49-4e4f-d582-ad939c46908d.png)

はじめまして、まーと申します。
Twitter↓

今回作成したサービス↓
https://match-engineer.com/

昨今では、コロナウイルスの影響もあり、「テレワーク」や「リモートワーク」といった言葉が一般の方々にも浸透しました。そんな中、「自分も案件を獲得してみたい!」「まずは副業からはじめてみたい!」といったニーズも増えています。
(参考:https://xn--pckua2a7gp15o89zb.com/news/20211109)

しかし、そのようなニーズが増えている一方で、経験の浅い学生や主婦のような方々が、**気軽に挑戦できる環境が整っているとは言いづらい状況**となっています。エンジニアの方が案件を獲得するクラウドソーシング

元記事を表示

PHPで各種カレンダーへの予定追加機能を実装する

# はじめに
イベント予約時にカレンダーへの予定追加を可能とする機能を実装する機会があり学習したのでまとめる。
カレンダーへの予定追加の方法としては以下2通り。


①icsファイルのダウンロード
②パラメーターを含んだリンクの設置(Googleカレンダー、Yahoo!カレンダー、Outlook)

※Outlookのみパラメーターを利用すると一部不備があるため、実際にはicsファイルのダウンロードとした。

尚、icsファイルの書き方自体は他にもたくさん記事があるため詳細については割愛し、PHPでの実装時の流れや詰まった点、パラメーターの種類について主に記載していく。

# icsファイルとは
カレンダーにインポートすると記載された内容でカレンダーに登録される。
Googleカレンダー、Outlookなどにインポート可能。(Yahoo!カレンダーは不可)
iCalendarはicsファイルを開くと自動的にカレンダーへの追加画面となる。
特徴は以下。

– MIMEタイプは「text/calendar」
– 拡張子は「.ics」
– 中身はプレーンテキ

元記事を表示

ベル文字を出力して音を鳴らしてみた。

授業で正規表現の学習中に、ベル文字というモノがあることを知ってしまった。
コレは鳴らしてみないと

# ベル文字とは
その昔、テレタイプなどの通信機器で、通信相手先の端末のベルを鳴らすために送信した制御文字(¥a)のようです。
さすがのオッチャンでも、テレタイプは現物見たことないので、よう解りません。

https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E6%96%87%E5%AD%97

# では、鳴らしてみます
といっても、ベルが鳴るわけではなく、システムのアラート音(通知音)が鳴るだけですけどね。
## まずJava

~~~Java:Bell.java
class Bell{
public static void main(String[] args) {
System.out.print(“\007”);
}
}
~~~
`javac Bell.java`
`java Bell`鳴りました。

## シェルスクリプト
Macなので Z Shellです
“`bash:Bell.sh
#!/bin/zsh
echo

元記事を表示

FileAPIを使い「テキストファイルでキーワード変更可能」なタイピングソフトを作ろう!:JavaScrpt初級~中級者向け

Youtubeで公開した内容を記事にしました。
タイピングソフトを作ろう!【後編】「HTML/CSS/JavaScript/PHP…のキータイピング練習にも対応」JavaScript入門
以下Youtubeでの解説動画も張っておきます。(同じ内容ですが、詳しすぎるほど説明してます(笑))

– YouTube
https://youtu.be

◆ サンプルファイル
Github からダウンロードしてご利用ください
https://github.com/yamazakidaisuke/keytyping_youtube

◆ どんなキータイピングアプリ?
外部ファイルでキーワードを管理します、以下のように並べるだけ。
これはJavaScriptでFileApiを利用することで可能になります。

以下画面構成を見ていただければわかりますが、
上記のテキストファイルを読み込めば、オリジナルのキーワードをタイピングできます!!

image.png

◆ 変数を準備
keytyping.html
//***************************************
//グ

元記事を表示

OTHERカテゴリの最新記事