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

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

React.js + Laravel SPA開発講座

React.jsとLaravelを使用してSPAなToDoアプリを開発する講座を動画(Youtube)で作成しました。
よろしかったらぜひ!

# 第1回 アプリケーションのデモ
この講座で開発するアプリケーションの動作デモです。

[![第1回 アプリケーションのデモ](http://img.youtube.com/vi/hPjcbKtpTjY/0.jpg)](https://youtu.be/hPjcbKtpTjY)

# 第2回 Laravel8のインストールと初期設定
バックエンドから作るので最初はLaravelのインストールです。

[![第2回 Laravel8のインストールと初期設定](http://img.youtube.com/vi/qoFYXNb0TEw/0.jpg)](https://youtu.be/qoFYXNb0TEw)

# 第3回 データベースの設計と構築
Migrationでデータベースの作成と、Factory/Seederという機能を使用してダミーデータの登録を行います。

[![第3回 データベースの設計と構築](http://img.youtub

元記事を表示

SymfonyFormで郵便番号や電話番号の分割フィールド

こんなよくありそうな入力フォーム
![スクリーンショット 2021-09-23 23.39.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2057677/c66dbfcc-c91c-24b6-49af-5beabb4de573.png)

想定するEntityは以下の様

“`
    /**
     * @ORM\Column(type=”string”, length=8, nullable=true)
     */
    private $postal;
“`

つまりEntityでは`$postal`の文字列のみで、入力フォームは分割したい。
意外と探しても情報がなかったのでできた方法をメモする

# 郵便番号用のFormTypeを作成

“`

元記事を表示

【PHP】アクセス修飾子(public、protected、private)の違い

#はじめに
私は、少し前まで、`public`などのアクセス修飾子について、functionの前についている利用範囲を示すもの程度の認識しかなかったため、備忘録として残しておきます。

#アクセス修飾子
アクセス修飾子とは、クラス内のプロパティやメソッドをどの範囲まで利用することができるか(どこからアクセスできるのか)を定義するものです。
それでは、早速3つのアクセス修飾子の違いについて見ていきましょう。

# ①public

クラスの内外にかかわらず、__どこからでも__アクセスが許可されます。
※ アクセス修飾子をつけずに宣言したメソッドは、`public`が指定されたものとみなされます。

# ②protected

__クラス内__と__そのクラスを継承したクラス__からのアクセスが許可されます。

# ③private

__クラス内でのみ__アクセスが許可されます。
継承したクラスからもアクセスできません。

#おわりに
上記ような基本をしっかり頭に入れて、外部から変更されては困るようなプロパティは`private`を指定するなど、アクセス修飾子を適切に使いましょう。

元記事を表示

【Laravel】中間テーブルの値をDateTime型で取得したい

## 目的
多対多のモデルがあり、中間テーブルにはDatetime型のフィールドがあるとします。
たとえば下記のように、ユーザーが複数のスクールに通っており、それぞれのスクールを開始した日時をもっているとき、
![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1995792/0ff91b81-fccc-ae0f-72e2-bd16cae0e749.png)

開始日時をDateTimeで取得し、format()などのメソッドをそのまま使いたいときのモデル定義はどうすればいいかについて、覚書を残します。

“`php
foreach($user->schools as $school){
echo $school->pivot->start_at->format(‘Y年m月d日’); // Datetimeにキャストされた状態で値を取得したい
}
“`

## 結論
カスタム中間テーブルモデルを定義し、そこに日付ミューテタを追加します。

## 手順

### 1. カスタム中間テーブル

元記事を表示

upper_bound (paizaランク B 相当) 学習記録(自分用)

# はじめに
Paizaの問題集を解いた際のメモ。
一応クリアはしたものの良い実装ではないと思うのであまり参考にはならないかと思います。
あくまでも自分用の学習メモ。

問題集>二部探索メニュー>upper_bound
問題URL:https://paiza.jp/works/mondai/binary_search/binary_search__basic_step2

# 問題
> n 人の生徒が受けた、10^9 点満点のテストの採点結果 A_1, A_2, …, A_n があります。あなたは合格点を自由に設定することができます。合格点が k 点のとき、k 点より大きい点数を取った生徒が合格で、k 点以下の点数を取った生徒が不合格です。

### 入力値
> n
A_1 A_2 … A_n
q
k_1
k_2

k_q

> 1行目に、生徒の人数 n が与えられます。
2行目に、採点結果 A_i が半角スペース区切りで与えられます。
3行目に、合格点の候補数 q が与えられます。
続く q 行のうち i (1 ≦ i ≦ q) 行目に、合格点の候補 k_i が与えられ

元記事を表示

PHP-CS-Fixerインストール出来ないエラーと解決方法

PHP-CS-Fixerのインストール時、エラーが出たのと解決方法が分かったので記載。ただし自身が学習中の初心者で内容が浅すぎるのと、ググっても同様のエラーが見当たらなかったため、もし相違あればコメント下さい。

#環境
| | Ver |
|:-:|:-:|
| Mac OS | 11.5.2 |
| PHP | 7.3.24 |
| Laravel | 8.37.0 |

#エラー内容
“`
– Root composer.json requires friendsofphp/php-cs-fixer ^3.1 -> satisfiable by friendsofphp/php-cs-fixer[v3.1.0].
– friendsofphp/php-cs-fixer v3.1.0 requires symfony/polyfill-php72 ^1.23 -> found symfony/polyfill-php72[dev-main, v1.23.0, 1.23.x-dev (alias of dev-main)] but the package is fix

元記事を表示

LaravelインストールからDB接続までのコマンド

#Laravel初心者がwebサイト立ち上げまで、コマンドまとめてみた
PHPを学習し、自分が作りたいwebサイト、アプリを実装するために記事を書きます。
初学者なので、間違っている可能性があるので、全てを鵜呑みにしないでください。ですが、誤記事にしないよう努めます。

早速ですがいってみましょう!!

##Laravelインストール

※初めに開発環境はMAMPを使っています。
※Laravelバージョンは6を指定しています。

MAMP/htdocsまでディレクトリを移動します。

1.Laravelインストール

“`
htdocs$ composer create-project laravel/laravel フォルダ名 –prefer-dist “6.*”
“`

–prefer-dist こちらのオプションはファイルの圧縮版をダウンロードすることで早くダウンロードすることができます。

2.サーバースタート

“`
フォルダ名$ php artisan serve
“`
サーバーを立ち上げることができました。
http://127.0.0.1:8000をurl

元記事を表示

野球好きが作るプログラミング 〜PHP編〜 変数、for文

##1.変数

*変数の意義:
 1.その値がどのような意味を持つのか?がわかりやすくなる。
例)

“`
$speed=150;
$control=”A”
$stamina=”C”
“`
 2.値を変更するのが楽になる
例)松坂選手の最速は156kmです。と出力したい時

“`

“`

例)これを、涌井選手の最速は151kmです。と出力したい時

“`

“`

*変数がないとどうなる?

“`
echo “松坂選手の最速は156kmです。”
echo “涌井選手の最速は151kmです。”
echo “成瀬選手の最速は144kmです。”
“`

こんな感じ

元記事を表示

【Laravel】Class not foundエラーの対処方法

ポートフォリオ作成中にClass not foundエラーにつまづきました。
突破に時間を要してしまったので、対処方法を記載しておきます。

#エラー画面
![IMG_3568.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159752/7819438f-a7ac-72d7-bc60-ffb9f795decd.jpeg)
CalendarViewが見つかりませんというエラー。
カレンダーを表示するコードを書いてあるCalendarView.phpというファイルを、表示する際に呼び出せずにエラーが出ている様子。

#確認したこと

####1.composer.jsonの確認
オートローダで対象となるディレクトリはcomposer.jsonで設定してあるため、それが間違っていないか確認する。
ちなみにオートローダとは、PHPでは別のファイルのプログラムを利用する際、requireなどでパスを指定して読み込む。
しかしLaravelはオートローダ機能があり、対象となるファイルが自動的に読み込まれる。
その

元記事を表示

【PHP初心者】クラス変数とメンバ変数について

## はじめに
PHPを勉強しているときに「メンバ変数」という表記を目にしました。
過去に少しJavaを勉強していた時があり、「プロパティ」「フィールド」というワードはよく目にしていたのですが、「メンバ変数」はあまり馴染みがなかったのでちょっと調べてみました。

メンバ変数とよく対比される「クラス変数」についても併せて見ていきたいと思います。
( 補足:Javaでも「メンバ変数」ってワードはあるようです。私がたまたま出会わなかっただけみたいです。笑)

## メンバ変数
調べて見たところ、__「インスタンス変数 = メンバ変数 = プロパティ」__と説明されているページが多く見つかりました。
>__参考:__
[【PHP】インスタンス変数(メンバ変数)](https://algorithm.joho.info/programming/php/instance-variable-php/)
[クラスから理解するPHPのオブジェクト指向](https://rightcode.co.jp/blog/become-engineer/php-object-orientation)
[【PHP入門

元記事を表示

【PHP】2次元連想配列の結合(array_replace_recursiveで異なるキーの値を残して結合)

## 実現したいこと
多次元配列の内側の配列にも再帰的に結合を行いたい。
下記の配列“`$status“`と“`$orders_count“`という2次元の連想配列を、“`$result“`という配列のように結合したい。

#### 一つ目の配列

“`
$status = [
[
“status” => 1,
“name” => “ステータス1”,
],
[
“status” => 2,
“name” => “ステータス2”,
],
[
“status” => 3,
“name” => “ステータス3”,
]
];
“`

#### 二つ目の配列

“`
$orders_count = [
[
“orders_count” => 40,
],
[
“orders_count” => 30,
],
[
“orders_count” => 20,
]
]
“`

#### 欲しい結合結果

“`
$r

元記事を表示

laravel外部キー設定したテーブルのデータをtruncateしたい

##はじめに
データをいったん消去したかったので調べてみると
php artisan db:seedを使ってできるようだったのでやってみた。
備忘録として残しておきます。

##環境
– Laravel8
– php8

## 最初に実行したコード(失敗例)
“` php
namespace Database\Seeders;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
/**
* Seed the application’s database.
*
* @return void
*/
public function run()
{
\App\Models\User::truncate();
\App\Models\Post::truncate();
}
}
“`

## `php artisan db:seed` 実行後エラー

“`
Illuminate\Datab

元記事を表示

laravel jetstream 認証メール送信をスキップしたかった

##はじめに
Laravel8 JetStreamには会員登録時に認証メールを導入する機能があって便利だけど
設定後に認証メール送信せずにユーザー登録できるルートも用意したかったので備忘録として残します。

##結論
`trait MustVerifyEmail hasVerifiedEmail()` のnull判定により、認証メールが送信されていたので
新規登録時に`email_verified_at`を挿入できるように `fillable`に追加する

###1. ユーザー登録時に `email_verified_at` に時刻を挿入する

“` php
use Carbon\Carbon;

$user = User::create([
‘email’ => $request->input(‘email’),
‘name’ => $request->input(‘name’),
‘email_verified_at’ => Carbon::now() //時刻設定して認証メールをスキップする
]);
“`

###2. Userモデルの`fillable`

元記事を表示

Laravel 論理削除されているリレーション先データを取得する方法

# 目的

- 論理削除されているリレーション先データを取得する方法をまとめる

# 方法

– リレーションの記載に`withTrashed()`の記載も追加する。

“`php
public function foo()
{
return $this->belongsTo(‘App\Models\Foo’,’foo_id’)->withTrashed();
}
“`

元記事を表示

Doctrine QueryBuilderでMenyToMenyリレーションの検索

symfonyで例えば以下のエンティティがあったとき、タグに属する記事を取得する

“`
class Tag
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type=”integer”)
*/
private $id;

/**
* @ORM\Column(type=”string”, length=32)
*/
private $name;
}
“`

“`
class Entry
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type=”integer”)
*/
private $id;

/**
* @ORM\Column(type=”string”, length=32)
*/
private $title;

/**
* @ORM\ManyT

元記事を表示

改行や空行を無視してテキストファイルを処理するには

##記事の目的
今回は、改行や空行を無視してテキストファイルを処理するということについて、インターン中にチームメンバーに対しての情報共有のため書いています。

##共通のエラー
・なぜか入力した数値よりも先にFizzBazzが記入されてしまう
下記のコードが具体例です。これは処理後にFizzbazzが表示されてしまいます。

“`php
$str1 = “Fizz”;
$str2 = “Buzz”;
$num = $_POST[“num”];
$filename=”mission_1-27.txt”;
$fp = fopen($filename,”a+”);
fwrite($fp, $num.PHP_EOL);
fclose($fp);
echo “書き込み成功!
“;
if(!empty($_POST[“num”])||isset($_POST[“num”])){
if(file_exists($filename)){
$numbers = file($filename,FILE_IGNO

元記事を表示

画像素材共有サービス「フォトフリ」を爆速開発した話

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206742/010d7a2b-a55a-d45f-5943-252c3a14581b.png)

ども!「**だるだるし**」です
今回は先日公開した [株式会社NEXS](https://top.nexsjp.com) の「**フォトフリ**」という画像素材共有サービスについて書いていきます.
Nuxt.js使っててなんでバックエンドはNode.jsじゃないねん,とか思われると思いますがその辺りも含めて
まあ,自論詰込みの読み物です

# 画像素材共有サービス「フォトフリ」を作成した

まず「[フォトフリ](https://service.nexsjp.com/photofree/)」とは何ぞや,というのはリンクを参照してください.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206742/52184c76-9855-b999-430f

元記事を表示

【laravel】管理ページを作ってみる

初書:2021/09/13
mac : 11.5.2
php:v8.0.6
laravel:v8.57.0

# 前書き

ユーザーのログインページとは別に、記事の作成やユーザーの管理などが出来る管理者ページを作ってみる。
laravel-adminというライブラリはあったものの、最新版に公式対応していないっぽいので、今回は普通にlaravelの機能で考える

# 前提

– laravelの初期ページが表示できる環境とその準備

# 目標

以下の項目の作成

– データベース
– ログインシステム
– ログインページ
– 簡易的なダッシュボード
– アカウント登録システム
– アカウント登録ページ

以下はこの記事ではやらない

– パスワードの変更/リセット
– メール認証/送信
– adminアカウントの管理ページ

# データベース周りの作成

今後この先1つのアカウントで管理することが確約されているのであれば、envファイルにでも認証情報を書けばいいが、
そんなことはないと思うので管理者アカウントを管理するデータベーステーブルを作成する。

今回は通常のユーザーデータがus

元記事を表示

【PHP初心者】処理はうまくいっているのに画像が表示されない

## 事例
・ブログを作成中に発生。
・なぜか1箇所画像が表示されない。(ブログ記事編集画面のサムネイル)

__▼記事一覧(抜粋)__

[編集]を押すと編集画面に遷移

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2054587/df1f0e37-13ef-9a45-5077-b9baa3a06dc2.png)
|:-:|

__▼編集画面(抜粋)__
 本来はここにサムネイル画像が表示されるはず。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2054587/85668236-b9da-35d9-019f-f1beba237696.png)
|:-:|

## 問題の切り分け
編集画面で画像を更新すると、遷移先の記事一覧画面では更新後画像が表示される。

| 記事一覧画面(更新前) | 編集画面 | 記事一覧画面(更新後) |
| :— | :— | :— |
|

元記事を表示

【PHP8.2?】foreachで安全にリファレンスを使えるようになるかもしれない

考えなしにforeachでリファレンスを使うと事故が発生します。

“`php
$arr = [1, 2, 3];

foreach($arr as &$value){}

$value = ‘x’;

var_dump($arr); // [1, 2, ‘x’]
“`

foreachを抜けた後も最後のリファレンスが残り続けるので、うっかり削除し忘れると思ってもなかった変数値が変わってしまいます。

この件に関する記事も[山](https://qiita.com/tadsan/items/fb496e450fc27c8c4494#%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E5%8F%82%E7%85%A7%E3%81%AF%E3%82%84%E3%82%81%E3%82%8D)[ほ](https://qiita.com/buntafujikawa/items/f192d724a3c714f39c45)[ど](https://qiita.com/kaorikatakura/items/4b07992c782d95c

元記事を表示

OTHERカテゴリの最新記事