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

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

PHPのアクセス修飾子でクイズ

## PHPのアクセス修飾子
“`php
// PHPのバージョンは8.0.3とする
class Super {
// public、protected、privateそれぞれのパターン
アクセス修飾子 $name;

public function __construct(string $name)
{
$this->setName($name);
}

public function setName(string $name): void
{
$this->name = $name;
}

public function getName(): string
{
return $this->name;
}
}

class Sub extends Super {
public function __construct(string $name)
{
parent::__construct($name);
}
}

$sub = new Sub(‘佐藤さん’);
$sub->name = ‘鈴木さ

元記事を表示

Laravel + Vue.jsでaxiosからのリクエストが失敗した単純なミス

## 環境
* Laravel:6
* Vue.js:2.6.14
* axios:0.19
## 事象
Laravel + Vue.jsでaxiosからの`put`リクエストでデータを更新しようとしたのですが、
以下のようなエラーでうまくいきませんでした。

“`javascript:resources/js/components/ExampleComponent.vue
const response = await axios.put(‘books/’, {
data: val,
}).catch(e => {
console.log(e);
});
“`

ChromeのDevToolsより
“`
Request Method: PUT
Status Code: 405 Method Not Allowed
“`
エラー405が返ってきてしまいました。
## 原因
そもそもLaravelのルーティングのメソッドが`patch`だったのに、axiosのエイリアスを`put`にしていたことが原因でした。

“`php:routes/web.php
Ro

元記事を表示

Laravelでメールサーバを複数利用する

# はじめに
とあるシステムで外部メールサーバと社内メールサーバを切り分けて利用するケースがありましたので、備忘録がてら記載します。

FWというか通常のシステムでも複数メールサーバの切り分けはあんまりやらない気がするので、需要は薄いと思いますが・・・

# やること
以下のメール設定値をオーバーライドして、メール送信時の設定を切り替える。

## 1. 環境設定値の追加
“`diff_php:.env
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=”hello@example.com”
MAIL_FROM_NAME=”${APP_NAME}”

+ CUSTOM_MAIL_HOST=mailhog
+ CUSTOM_MAIL_PORT=1025
+ CUSTOM_MAIL_USERNAME=null
+ CUSTOM_MAIL_PASSWORD=null
+ CUSTOM_MA

元記事を表示

laravelで画像投稿処理を実装する

# 前書き
現在独学でlaravelを使ったポートフォリオの作成に取り組んでいます。
今回は画像登録・表示処理で詰まったところを備忘録として投稿します。

# 環境

https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4

上記記事に準じて環境構築を行っています。

# 実現したいこと
・作成済みのユーザーページを編集する際に、名前、年齢の他にアイコンとして画像を登録できるようにする。
・登録した画像を表示する。

# 対応方法
①編集フォームにinputタグを設置し、ファイルを送信できるようにする。
“`php:edit.blade.php


~~~

“`
*formにtype

元記事を表示

【PHP初級㊲】配列応用3

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksPrimary.html)

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、整数値を入力させ、要素番号が入力値の配列要素の値を参照し、さらにその参照した値を要素番号とする配列要素の値を参照して表示するプログラムを作成せよ。入力値が配列の要素の範囲外であるかどうかのチェックは省略してよい。

# コード
“`php
$a = [3,7,0,8,4,1,9,6,5,2];
$m = intval(fgets(STDIN));
$i = $a[$m];
echo $a[$i];
“`

↓「6」と入力

# 結果
“`
2
“`

元記事を表示

【PHP初級㊱】配列応用2

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksPrimary.html)

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、整数値を2つ入力させ、要素番号が入力値である2つの配列要素の値の積を計算して表示するプログラムを作成せよ。入力値が配列の要素の範囲外であるかどうかのチェックは省略してよい。

# コード
“`php
$a = [3,7,0,8,4,1,9,6,5,2];
$m = intval(fgets(STDIN));
$i = intval(fgets(STDIN));
echo $a[$m] * $a[$i];
“`

↓ 
「4
 8」 と入力

# 結果
“`
20
“`

元記事を表示

【PHP初級㉟】配列応用1

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksPrimary.html)

{3, 7, 0, 8, 4, 1, 9, 6, 5, 2}で初期化される大きさ10の整数型配列を宣言し、整数値を入力させ、要素番号が入力値である配列要素の値を表示するプログラムを作成せよ。入力値が配列の要素の範囲外であるかどうかのチェックは省略してよい。

# コード
“`php
$a = [3,7,0,8,4,1,9,6,5,2];
$m = intval(fgets(STDIN));
echo $a[$m];
“`

↓「0」と入力

# 結果
“`
3
“`

元記事を表示

Laravelにおける2重サブミット防止

# 初めに
私は、業務系のWebアプリケーションを作っているエンジニアです。

問合せでよくあるのが実行ボタン押しても、なかなか画面が変わらなくて、もう一度押したらエラーになりましたってやつ。
(なんで対策してないんだよ・・・)

てことで、Laravelにおける2重サブミット防止方法は以下の通りです。

# 2重サブミット対策
やることは2つ!

* バックエンドで、リクエストを受けてからトークンを再生成させる。そうすると、レスポンスが返る前に再度サブミットされるとトークンミスマッチ(419:TokenMismatchException)になる。
* フロントエンドで、ボタン押下後にボタンを非活性にする。

## サーバーサイド
### 1. コントローラ
トークンを再生成した状態で、レスポンスが返る前に再度サブミットされるとトークンミスマッチが発生します。
※2〜3は、コード修正不要。

“`php
$session->regenerateToken();
“`
### 2. ミドルウェア
トークンマッチをチェックする。
※標準で設定されてるので、追加は不要。

“`php:

元記事を表示

PHP 現場で使った愉快な配列メソッド達

## はじめに
今回は現場で使用した配列メソッドの使用方法についてまとめました。
すべての使い方を紹介しているわけではないのでご了承ください。
また、この記事を読んでぜひとも愉快なエンジニアになる一助になれば嬉しいです。

## 紹介する愉快な配列メソッド達
・array_key_first
・array_key_exists
・array_keys
・array_merge
・in_array
・array_search
・array_column

## array_key_first
配列内の先頭メソッドを取得します。
連想配列の場合は、先頭keyを取得します。
https://www.php.net/manual/ja/function.array-key-first.php

“`php
$array = [
‘A’ => ‘a’,
‘B’ => ‘b’,
‘C’ => ‘c’,
];

$result = array_first($array);

print_r($result); // 結果:A
“`

## array_key_exists
指定したkey

元記事を表示

bladeファイルの@if文が機能しなかった。

laravelでナビバーを作成中に、
認証前と認証後の記述を変更したく@if文を記述したら
ブラウザで文字として出力されてたのでまとめます。

“`nav_blade.php

元記事を表示

【PHP初級㉞】for文応用6

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksPrimary.html)

整数値を入力させ、1から9まで、入力値と入力値+1以外を表示するプログラムを作成せよ。入力値が9の場合は9のみ表示しない。

# コード
“`php
$a = intval(fgets(STDIN));
for($m = 1; $m <= 9; $m++){ if($m <> $a && $m <> $a+1){
echo $m,PHP_EOL;

}
}
“`

↓「7」を入力

# 結果
“`
1
2
3
4
5
6
9
“`

元記事を表示

PHP: Yahoo 郵便番号検索API の使い方

参考ページ
[郵便番号検索API](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/zipcodesearch.html)

ライブラリーのインストール

“`bash
composer require guzzlehttp/guzzle
composer require vlucas/phpdotenv
“`

“`php:get_address.php
#! /usr/bin/php
load(

元記事を表示

【例外処理】専用の例外クラスを作るとエラー後の分岐処理が実装しやすい

## :bulb: **CAUTION!**
– 当記事は[イベント](https://tonihome.connpass.com/)のLTで発表したものです
– システムの開発方針によっては紹介する実装が適さないことがあります
– 実装例はPHPですが、簡易なコードなのでプログラミング言語を問わずお読みいただけます

※ @error_401さんから[コメント](https://qiita.com/y_sone/items/99a014943776a75366ad#comment-c2cd957e040494ccfb2b)を頂きました。ご指摘ありがとうございます!
– 紹介する実装は保守性が下がる可能性があります
– 専用の例外クラスを作成する際は、エラーの対象範囲をよく検討してください

## :woman_tone1: **自己紹介**
– Webエンジニア歴4年
– 主な使用言語はPHP
– たまにITイベントにスタッフ参加しています

## :love_letter: **伝えたいこと**
特定エラー専用の例外クラスを作ると、エラー発生後の分岐処

元記事を表示

PHPファイルを自動整形(vscode,intelephense)

## 問題の背景
phpファイルに`

`タグなどのhtmlタグを記述したり、ソースコードをベタ張りしても、初期状態ではインデントが調整されないため、見づらくて不便です。

そこで、php専用のフォーマッターを導入するとインデント調整やhtmlタグを自動で補完してくれるので便利です。
今回は、vscodeの拡張機能である`intelephense`を導入しました。

## 導入・設定方法
### intelephenseをインストール
vscodeの左側にあるブロックアイコン(Extensions)の検索窓から`intelephense`で調べます。
![スクリーンショット 2022-07-30 12.21.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954882/08e704f4-8ff3-bef2-41f3-a8ee3f352554.png)
すると`PHP Intelephense`のインストール画面が出るので`Install`を押してインストール。

### Formatterの指

元記事を表示

エラーを無視せずLaravel9プロジェクトを作成する

# はじめに
[前回記事](https://qiita.com/asuka-hanerock/items/1e14eff782ce6b03085e)のLaravelプロジェクトがとにかく動けば良いという簡易版だったので、理解を深めるためにちゃんと設定する方法を書いていきます

誤っている点やもっと良い方法があればコメントにてご教授お願いいたします



# 前提
PHP、Composerがインストールされており実行できる状態であること


# 構築環境
OS:Windows 11 Home
ターミナル:Windows11デフォルトのターミナル(PowerShell)
ブラウザ:Google Chrome


# 前回の問題点
出てきたエラーに対して対処をせず無視をするという強行手段を取っていた点
根本解決にはなっていないし理解が浅すぎたと反省しつつ今回はちゃんと対応していきます

元記事を表示

laravel FakerPHPを使ってダミーデータを生成する

# 概要

– laravelのFactoryなどでFakerPHPを用いてダミーデータを生成する方法をまとめる。

# 生成方法

– 下記の様に記載することでダミーデータを生成する事ができる。

“`FooFactory.php
// Factoryクラス内での使用
$this->faker->指定フォーマットの関数名;

// それ以外のクラスでの使用(言語はデフォルト)
use Faker\Factory;
Factory::create()->指定フォーマットの関数名;

// それ以外のクラスでの使用(言語は日本語を指定)
use Faker\Factory;
Factory::create(‘ja_JP’)->指定フォーマットの関数名;
“`

# 指定フォーマット

– 下記のFakerPHP非公式リファレンスや、本家のリファレンスで各フォーマットの指定方法がわかりやすく記載されている。
– [FakerPHP非公式リファレンス](https://fwhy.github.io/f

元記事を表示

laravel CarbonImmutableインスタンスのタイムゾーンを変更する

# 概要

– UTCで作成されたCarbomImmutableインスタンスのタイムゾーンをAsia/Tokyoに変更する方法をまとめる。

# 方法

– 既に作成されているCarbonImmutableインスタンスにtimezone関数をメソッドチェーンすることでタイムゾーンを変更する事が可能となる。

“`php
use Carbon\CarbonImmutable;

$utcDateTime = ‘2022-07-30 00:00:00’;

$utc = new CarbonImmutable($utcDateTime, ‘utc’);
$asiaTokyo = $utc->timezone(‘Asia/Tokyo’);
“`

元記事を表示

laravel タイムゾーンを指定してCarbonImmutableインスタンスを生成する

# 概要

– タイムゾーンを指定してCarbonImmutableインスタンスを生成する方法をまとめる。

# UTC現在時刻でCarbonImmutableインスタンス生成

– 下記の様に記載する。

“`php
use Carbon\CarbonImmutable;

$nowUtc = CarbonImmutable::now(‘utc’);
“`

元記事を表示

ローカル環境でLaravel9を使えるようにする

# はじめに
Laravel9を初めて触る中で苦戦した箇所がいくつかあったので、備忘も兼ねてまとめます
誤っている点やもっと良い方法があればコメントにてご教授お願いいたします



# 前提
PHPが実行できる状態であること


# 構築環境
OS:Windows 11 Home
ターミナル:Windows11デフォルトのターミナル(PowerShell)
ブラウザ:Google Chrome


# 事前準備
ライブラリ管理ツールであるComposerをインストールします

[Composerの公式サイト](https://getcomposer.org/download/)からセットアップツールをダウンロード

https://getcomposer.org/download/

Composer-Setup.exeをクリックしてダウンロード開始
![image.png](https:

元記事を表示

OTHERカテゴリの最新記事