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

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

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`で書き終わり

元記事を表示

Laravelでルーティング(web.php, コントローラー)の使い方

# web.phpに最初から入っているコードを使って解説

初めてlaravelのプロジェクトファイルを作って、laravel/uiをインストールすると、web.phpの最終行に以下の記述がある

“`web.php
Route::get(‘/home’, [App\Http\Controllers\HomeController::class, ‘index’])->name(‘home’);
“`

– `/home`: ドメインの後に入るファイルパスを指定
– `App\Http\Controllers\HomeController::class`: HomeControllerのclassメソッドを参照
– `->name(‘home’);`: ルーティング名

# web.phpに新しいルートを作ってみる
web.phpの最終行に先ほどのコードを複製して、ファイルパスの部分と、ルーティング名を変更する(ややこしくなるので名称は同じにしてOK)

“`web.php
Route::get(‘/任意の名前’, [App\Http\Controllers\HomeContro

元記事を表示

Laracastsでテストコードを勉強したときのエラーメモ

結構前に書いた記事なのですが、投稿せずに下書きにしたままだったので、今更だけど投稿!ww

『[Laracasts](https://laracasts.com/)』の、[こちらのページ](https://laracasts.com/series/build-a-laravel-app-with-tdd)でテストコードの書き方を学習をしていました。
但し、動画通りに書いても動かなかったりする箇所があったので、私なりに躓いた箇所を以下にご紹介!(と言っても最初の方の5点だけ。。。ww)
※ご注意:私の場合、環境はXAMPP for Windowsでした。それ以外で作る場合は、同じエラーが出るとは限らないので、参考程度にどうぞ。

その1:[EPISODE 2 Let’s Begin With a Test](https://laracasts.com/series/build-a-laravel-app-with-tdd/episodes/2) の回にて。

動画内では、
『public function a_user_can_create_a_project() 』という名前の関数を使

元記事を表示

pukiwikiプラグインをRectorPHPでphp8.1へ静的に自動修正させてみた

# はじめに
そろそろ、pukiwiki 1.5.4がリリースされる予定らしく、php8ではJITコンパイラーが実装され、処理が高速になるそうなのでpukiwikiプラグインをすべてphp8で動くようにRectorPHPで自動修正させようと思います。
ただ、あくまで静的解析して修正するのでもちろんファイルによっては手動で修正しなければならないこともあります。
Windowsで動作させてます。
他のOSでも動作するとは思いますが、その場合は参考程度でお願いします。

# 完成したファイル
すぐに使いたい方は次の見出しからは読まなくても大丈夫です。
RectorPHPがMITライセンスだったのでGitHubにて配布しておきます。
tweakphp8.phpについてはこちらでつくりました。
これもMITライセンスとしておきます。
– [RectorPHP](https://github.com/PTOM76/FileStorage/releases/download/rectorphpetc/RectorPHP.zip)

PHP8をインストールしているのであれば動作すると思います。
inp

元記事を表示

画像をリサイズして表示

## 画像をリサイズして表示する流れ
1.画像を読む込む
imagecreatefromjpeg(ファイルパスorURL|false)
画像オブジェクトをファイルパスもしくはURLから作成する。
成功した場合には画像オブジェクト、エラー時にfalseを返す。

2.画像サイズ取得
getimagesize(string $filename, array &$image_info = null): array|false
サポートする任意の形式の画像ファイルの大きさを決定し、 ファイルの型と高さ/幅を表す文字列を返します。
imagejpeg() 画像からJPEGファイル作成

3.リサイズ
imagecopyresized()  画像の一部をコピーしサイズを変更する
位置 (src_x,src_y) の src_image から幅 src_w と高さ src_h の長方形の領域を取り、位置(dst_x、dst_y)の宛先画像の長方形領域の間に配置。
|arg name |description|
|:—–|:—–|
|dst_image |コピー先の画像リンクリソー

元記事を表示

画像ファイルのアップロード

## 画像をアップロードの流れ
1. フォームからファイルを受け取り、バリデーションする。
2. 問題がなければ、サーバーの一時フォルダに保管。
3. move_uploaded_file()で一時フォルダから指定のパスに移動させ、保存。

**画像ファイルを送るフォーム**

“`html:index.php

      
      

“`

**フォームから画像ファイルを受け取る**
グローバル変数「FILES」
$_FILES[‘upload’][‘tmp_name’]はアップロードされたファイルの情報が格納されたグローバル変数です。
“`php:upload.php
image = $_FILES[‘image’]

元記事を表示

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

皆さんこんにちは!techfeedのPHP項目の日間で、自分の記事が1位になっていたのにビビりまくってます。
長かったけれど今回が最終回と思います!

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

  • OTHERカテゴリの最新記事