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

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

【PHP9】ついに未定義変数が使えなくなる

ついに来るべき時が来ました。

“`php
echo $undefined;
“`

PHP9以降、致命的エラーになります。

以下は該当のRFC、[Undefined Variable Error Promotion](https://wiki.php.net/rfc/undefined_variable_error_promotion)の紹介です。

投票期間は2022/03/14から2022/03/28です。
2022/03/21時点では賛成30反対6の賛成多数であり、ほぼ確実に可決されます。

# Undefined Variable Error Promotion

## Introduction

未定義変数とは、使用する前に値がまだ初期化されていない変数のことです。
未定義変数にアクセスすると、現在は`Warning: Undefined variable $varname`の警告E_WARNINGが表示され、その変数値はNULLであるかのように扱われますが、実行が中断されることはありません。
しかし、これは意図しない挙動である可能性が高いでしょう。

この挙動を

元記事を表示

曜日を取得する方法

・曜日を取得する方法

コード
“`

元記事を表示

Laravel?docekr?漢ならPHPのみっしょ!!

# 成果物
https://www.dogcat.space
# ソースコード
https://github.com/fujioka8700/php_internet_forum
# 準備
## なぜこのようなことをしたのか
以前からLaravelやdockerを触っていたのですが、上手く扱えている気がしていませんでした。
それ以前にLinuxやCLIに慣れた方がいいのでは?と思い、Linuxを積極的に使うことにしました。
あとLinuxを触ると同時に、AWSの基本も理解しようと、デプロイ先はAWSにしました。
## 目的
以下の基本を理解し、CLI操作を慣れる。
– Linux
– Apache
– MariaDB
– PHP
– AWS
## 開発環境
– Ubuntu 20.04.4 LTS
– Apache 2.4.41
– MariaDB 10.3.34
– PHP 7.4.3
## 「犬・猫 どちら派掲示板」を作ろうと思った理由
大好きな犬と猫のことを、語り合える場を作りたかったから。
# 要件定義
頭の中のイメージをノートに書きます。
これがないと、何を作ればいいか全くわ

元記事を表示

PHP + MySQLフルスクラッチでユーザー認証機能を実装する【ユーザー登録編】

PHP + MySQLフルスクラッチでのユーザー認証機能の実装方法を解説します。今回は【ユーザー登録編】です。
開発環境、ファイル構成、ER図はこちらからご確認ください。

https://qiita.com/Michi1090/items/67db6a38bb63752237e7

# 要件定義

– 入力フォームはユーザー名、パスワード、パスワード(確認用)の3つ
– すでに使用されているユーザー名は登録できない
– ユーザー名は半角英数字20文字以内
– パスワードは半角英数字8文字以上で英大文字、英子文字、数字を最低1個以上含む
– ユーザー登録完了後、自動でログイン処理を行いインデックスページへリダイレクト

# ユーザー登録画面 (sign_up.php)

“`sign_up.php

元記事を表示

Laravel8でHTMLの共通部分をパーツにして使い回す方法(レイアウト共通化)|ビュー、コントローラー、ルーティング

# 前提
Laravel6や7の記事は多かったのですが、Laravel8からルーティングの書き方が変わったのに気づかず進めてうまくいかなかったので、解決策を備忘録として残します。

Laravel 8.83.4
Composer version 2.2.7

# コントローラーを作る
プロジェクトファイルに移動した状態で以下のコマンドを打つとコントローラーファイルが生成される

“`
$ php artisan make:controller LayoutController
“`

`app/Controllers`の中に、`LayoutController.php`ができているので開く。

“`PHP

元記事を表示

PHPのjson_encode←変数→json_decodeで改行文字が含まれている場合の挙動

PHPの `json_encode` と `json_decode` でこれまで把握していなかった挙動を最近知ったのでメモとして残しておきます。

動作環境は `PHP 7.4.28` を利用しました。

“`
$ docker container run –rm -it php:7.4.28-cli-alpine /bin/sh
“`

まず、改行文字を含む変数をヒアドキュメントで作成します。

“`
# vi json_test.php

元記事を表示

Laravelでチェックボックスを使用した検索フォームの作り方

## サンプル
### 検索画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218398/d1ca1c43-5ede-4260-49ef-0847e880d5d4.png)

### 検索結果画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218398/28c4a18b-f897-cbe6-54d8-81095ecc007a.png)

## コード

### ルーティング処理

“`\routes\web.php
Route::get(‘/search/’,’Search\SearchController@index’);
Route::post(‘/search/result/’,’Search\SearchController@result’);
“`

### コントローラー
– `index`: 検索画面の処理
– `result`: 検索結果画面の処理

“`

元記事を表示

レンタルサーバー上のphpMyAdminにPHP7でPDOを使って接続する方法

## はじめに
備忘録
タイトルの通りです。
ローカルで作っていたものをサーバー上で公開しようとした時に、MySQLへのPDO接続のところで少しつまずいたことを書いておきます。
誰かのお役に立てれば幸いです。

## ローカルでの開発時
phpMyAdminをローカル上に設置していたので、PDO接続時のhost指定は
“`php
$pdo = new PDO(
‘mysql:host=localhost;dbname=test_db’,
‘username’,
‘password’
);
“`
のようにlocalhostにしていました。

## 解決方法
localhostの部分をサーバー上に設定したMySQLホスト名にするだけで解決できました。

例えばXFREEサーバーなら
“`diff_php
$pdo = new PDO(
– ‘mysql:host=localhost;dbname=test_db’,
+ ‘mysql:host=mysql1.php.xdomain.ne.jp;dbname=test_db’,
‘username’,

元記事を表示

Dockerを使用したlaravel環境構築

## 前提
・ Dockerを使用してlaravelの環境構築を行いたい方
・ laravelの標準のログイン、管理画面も使用したい人
・ Dockerはインストール済み
・ 他コマンド実行に必要なものは必要に応じてインストールしてください

## 構成
“`html
laravelソースを格納するのフォルダ(名前は任意でOK)
├── docker-compose.yml
├── docker
│ ├── php
│ │ ├── Dockerfile
│ │ └── php.ini
│ └── nginx
│ └── default.conf
└── src
└── Laravelのプロジェクトファイル
“`

## docker-compose.ymlの中身
docker-compose.ymlは複数のコンテナを同時に動かすためのツールである、Docker Composeを利用するために使用するYMLファイルです
“`docker-compose.yml
version: ‘3’

ser

元記事を表示

初心者も5分で完成!Laravel6〜Laravel9系の環境構築方法(MySQL)

# Laravelの環境構築
# Laravelとは?
大規模システムで古くから実績のあるSymphonyというフレームワークをベースに作られたもの。
学習時間が短く済み、かつ大規模システムにも対応できるフレームワークとなっている。

# 構築手順
# 1. Composerをインストールする
Laravelをインストールするにはまず『Composer』というPHPのパッケージ管理ソフトが必要になるため、Composerをインストールする。

“`bash=
curl -sS https://getcomposer.org/installer | php
“`

続いて、ダウンロードしたファイルを『usr/local/bin』に移動させます。

“`bash=
sudo mv composer.phar /usr/local/bin/composer
“`

これで、“usr/local/bin/“内にComposerというファイル名で移動しました。ここまでくればいつでもComposerを呼び出す事ができます。

配置したComposerのパーミッション(アクセス権)を変

元記事を表示

Laravelの確認画面から戻って入力画面に値を渡すシンプルな方法

## シンプルな方法、それは…
入力確認画面の`修正する`ボタンに値を持たせて、**`redirect()->withInput()`** を使うだけ

## コード & 解説

### ルーティング処理

“`\routes\web.php
Route::get(‘/form/’,’Form\FormController@index’);
Route::post(‘/form/confirm/’,’Form\FormController@confirm’);
Route::post(‘/form/complete/’,’Form\FormController@complete’);
“`

### コントローラー
– `index`: 入力画面の処理
– `confirm`: 入力確認画面の処理
– `complete` 入力完了画面の処理

“`\app\Http\Controllers\Form\FormController.php

元記事を表示

Laravel HomesteadにphpMyAdminをインストールする

## この記事に書いてあること
Laravel Homesteadで構築した環境にphpMyAdminをインストールする方法

## 前提条件
環境構築時にyamlファイルでmysqlを設定

“`yaml:Homestead.yaml

features:
– mysql: true
– mariadb: false
– postgresql: false
– ohmyzsh: false
– webdriver: false

“`

## データベースの確認について
Laravel Homesteadで環境構築した場合、データベースの確認する方法はいくつかあります。
`mysql`を使ってCLIで確認したりもできるし、[Sequel Proなどで接続する方法](https://qiita.com/namizatork/items/7776a33383186cc57307)もあるようですので、好みに応じてググってください。

ぼくはphpMyAdminが好きなので、今回紹介する方法をお勧めしてます。

## phpMyAdminをローカル

元記事を表示

どの技術を優先的に勉強していけばいいか?を考える

# はじめに
エンジニアにとって、常に勉強して自分のスキルを高めていく姿勢は重要です。

この記事を読んでくださっている方は、勉強したい!という思いを持った素晴らしいエンジニアだと思います!

しかし、勉強をするにあたって以下のような悩みを持つことがあります。

– :expressionless:「 **具体的に何を学べばいいの?** 」
– :pensive:「 **何から手をつけていいか分からない** 」

そこで今回は、私の考える「 **勉強すべき技術の優先度** 」をお伝えします。

少しでも指針になれば幸いです。

# 結論

下記の図でいう、 **③の技術を最優先で勉強しましょう!**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/cc6218f5-b24c-509d-2414-52fcc8a41bc9.png)

ここから、この図について詳しくみていきます。

## この図は何を表している?

上記の図では、勉強すべき技術を下記3つのカテゴリに分類して表し

元記事を表示

Laradoc×Dockerでマイグレーション

# 前提条件
– mac Big Sir(intel core)
– LaraDockで環境構築済

※ 今回はマイグレーションの話なので、基本的な操作や概念は変わりませんが、マイグレーションのコマンドがDockerのワークスペースに入って行うので、多少異なっています。

参考:[Laravel8.x マイグレーション](https://readouble.com/laravel/8.x/ja/migrations.html)

# テーブルとマイグレーションファイルを作るコマンド

※ 必ず、Docker Desktopを立ち上げて、laradocディレクトリで
`$ docker-compose up -d workspace php-fpm nginx mysql phpmyadmin`
のように起動させた状態で行う。

`$ docker-compose exec workspace`+コマンド
で、Dockerのワークスペースに入らなくてもコマンドを実行できる。

そのため、マイグレーションコマンドは以下のようになる。
必ずlaradocのディレクトリに移動してから以下のコマ

元記事を表示

PHPDocについての個人メモ

# 概要

– PHPDocについてまとめられているリンクなどをここにメモ的に記載しておく。

# わかりやすく説明されていたリンク

– PHPDocそのものについて
– [https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/basic-syntax.html#id1](https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/basic-syntax.html#id1)
– PHPDocのタグについて
– [https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/tags/index.html](https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/tags/index.html)

元記事を表示

【CloudWatch / Laravel / Fargate】特定のログだけ別のロググループに出力したい

## 特定のログだけ別のロググループに出力したい

Fargateでアプリを動かしている場合、標準エラーを拾ってそれをCloudWatchに流しています。
しかし、基本的なログとは別に、特定の操作だけロググループを別にしてログを収集したくなることがあります。
また、吐き出し先のログストリーム名は決まっていて、オートスケーリングでコンテナの数が増えても、全てのコンテナから同じログストリームに出力して欲しい。
何かいい方法がないかなと色々調べていました。

https://qiita.com/ggg-mzkr/items/0201b411425a75deca52

あんまりログの出し分けをしているものがなく、現在のプロジェクトではログチャネルはstderrで使ってしまっているので、
とりあえず自分でハンドラーを作ってみました。

## 実装

“`php: App\Aws\CloudWatchLogsHandler

元記事を表示

【PHP】エラー:Parse error: syntax error, unexpected

## エラー内容

Parse error: syntax error, unexpected

## 解決法

うっかりミス。

末尾の「;」とすべきところを「:」としてしまった。

“`diff_php
例)
– $val = ‘value’:
+ $val = ‘value’;
“`

元記事を表示

HomesteadでLaravel開発環境を構築する

## この記事に書いてあること
Laravel8.xの開発環境を構築する手順

## Laravel日本語ドキュメント
基本的には[こちら](https://readouble.com/laravel/8.x/ja/homestead.html)のドキュメントを参考にすれば問題なく構築できます。

## Laravelの開発環境構築について
Laravelでは開発環境の選択肢がいくつか準備されています。
ドキュメントではDocker DesktopやLaravel Sailなどのコンテナを利用した構築方法を推奨しているようです。

しかし、Dockerに馴染みがない人は、HomesteadというVagrantをベースとして環境構築方法がおすすめです。

## インストールと設定
Homestead環境を起動する前に、Vagrantと、以下のプロバイダのいずれかをインストールする必要があります。

– VirtualBox 6.1.x
– Parallels

Parallelsプロバイダを使用するには、[Parallels Vagrantプラグイン](https://github.co

元記事を表示

【Laravel】Web開発初心者が1週間で入門チュートリアルを実施した記録(5), (6)

以下の続き。

https://qiita.com/yotty19911207/items/c4dc76d8c4146899a364

フォルダに続き、タスク一覧の作成もできた。
■(4)の復習:
・外部キー制約の設定

// 外部キーを設定する
$table->foreign(‘folder_id’)->references(‘id’)->on(‘folders’);

・Laravel が提供するクエリビルダの機能を使用したデータ操作

// 選ばれたフォルダに紐づくタスクを取得する
$tasks = Task::where(‘folder_id’, $current_folder->id)->get();

・モデルクラスにおけるリレーションを意識した記載
上記はリレーションを意識してモデルクラスを記載することで以下のように表現できる。

$tasks = $current_folder->tasks()->get();

リレーションを意識したモデルクラスの記載

class Folder extend

元記事を表示

Laravelのbladeテンプレートの作り方

# 概念
– レイアウトの親ファイルはresources/views/layoutsの中に入っている
– コンポートのようなパーツは、resources/viewsの中に直で入っている

# 親レイアウトの作り方
いつも通りHTMLを書いて、コンポーネントのようなパーツを挿入したいところに`@yield(‘パーツ名’)`を挿入するだけ

# パーツの作り方
1. `@extends(‘layouts.親レイアウトの名前’)`を最初に挿入して、どのレイアウトを継承するかを書く

2. `@section(‘パーツ名’)`で書き出して、パーツの名前を指定。ここで使ったパーツ名を親レイアウトで使う

3. `@endsection`で書き終わり

元記事を表示

OTHERカテゴリの最新記事