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

PHP関連のことを調べてみた2021年08月04日
目次

laravelにおいてのbootstrap導入方法

ダウンロードとかいろいろ書いてあるけど、、、
headの部分に

“` “`
を書くだけでOK!

#テンプレート
“`


PDOのqueryの中に変数を入れる方法

ひじょーに単純

$table ="hoge";
$query = "SELECT * FROM $table";

RubyとかJavaとかやってるとこんがらがってくるけど、
PHPはダブルクォーテーションの中に書くだけです。

元記事を表示

つくって学ぶDIコンテナ

## はじめに
LaravelのControllerは、引数をタイプヒントすると依存性を解決してくれますが、
仕組みはどうなっているのか気になったので、簡易的なものをつくってみました。

以下のコードが依存性解決の例です。不思議なことに(?)Requestのインスタンスを自動で引数に渡してくれます。
今回は、DIコンテナを自作し、これと似た挙動を実装します。

### 例

“`php
public function store(Request $request)
{
$name = $request->input(‘name’);
}
“`

## サンプルコード
[GitHub](https://github.com/ksrnnb/di_container)にPHPのサンプルコードを載せています。

## DIコンテナとは
interfaceなどの抽象と、それに対応する具象を管理するオブジェクトだと認識しています。

基本的には、DIコンテナは以下の流れで使用されます。

– 抽象と具象を渡してDIコンテナに登録する
– 抽象を渡して、対応する具象を返す

これができる

元記事を表示

【個人開発】郵便番号から地域を判定するAPIサービスを作りました。または個人でクレジット決済導入について。

# どんなサービスか?

郵便番号が特定の地域に該当するかを判定するAPIです。
おまけとして、よくある郵便番号から住所を取得する機能も付けました。
ですが、一番の目的は地域の判定です。

【サービスURL】 https://api-zipcode.jp/

例えば、ある郵便番号が新宿区内の郵便番号か?を判定できます。

ここでクイズです。
163-8001 は新宿区内でしょうか?
答えは後ほど。

# なぜ作ったか

私は仕事でECサイトの開発をしてます。
ある日、同僚から相談を受けました。
配送先の郵便番号から、自動的に自社配送かを判定したいとのことでした。
このECサイトでは、都内23区は自社のドライバーが配送し、そのほかの地域は外部の配送業者に託しています。

そのようなサービスがないか探しましたが見つけられなかったので自分で作りました。

# 使用技術

PHP7.4
laravel8.x
AWS EC2,ALB など

# クイズの答え

先程の**163-8001**は**新宿区内**か? の答えですが、今回作ったサービスで調べてみます。

1 ユーザー登録

条件の作成

元記事を表示

【Laravel】mysqlに接続できず、migrateできなかった

Laravelをインストールして、migrateしようとしたら、

“`
[ec2-user@ip-172-31-39-229 mosaku]$ php artisan migrate

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = mosaku and table_name = migrations and table_type = ‘BASE TABLE’)

at /var/www/html/mosaku/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we’ll format

元記事を表示

composer require –dev barryvdh/laravel-ide-helperしようとすると[errorexception] include(/var/www/src/vendor/composer/package-versions-deprecated/src/packageversions/installer.php ): failed to open stream: no such file or directoyとエラーが発生する。

laravel ide-helperを入れようとしたときに詰まったのでメモ

##環境

– Vagrant (OS vento/ubuntu-20.04)
– Docker
– PHP 8
– Composer 2.1.3

##事象

Ide-helperインストールしようとすると以下のようなエラー発生

“`
$ composer require –dev barryvdh/laravel-ide-helper

[errorexception] include(/var/www/src/vendor/composer/package-vers ions-deprecated/src/packageversions/installer.php ): failed to open stream: no such file or directory
“`

## 調査

エラーメッセージで検索すると以下の記事がヒット

https://stackoverflow.com/questions/65149298/composer-2-0-8-issue-package-versi

元記事を表示

[個人開発]プログラマーなら気になっちゃうWebサービスを作ってみた。

# まえがき
こんにちは、北海道札幌市で活動しているWebエンジニアチーム「fact」です。
弊チームは2020/5より活動開始したチームです。現在エンジニア歴1〜2年のメンバーが2名で活動しています。メンバー募集中!(特にWebデザイナーが欲しい)

今回は、プログラミング言語を学習した人、学習する人なら一度は気になる「アレ」を可視化してみました!

この記事では、今回作成したサービスの概要から使用技術、どのような過程で作成したかを記載します。
個人開発に興味のある初学者にとっても有益な情報かもしれません!

ぜひ、最後までご覧ください。

# 目次
[1.作ったWebサービス](#1-作ったWebサービス)
[2.作成の流れ](#2-作成の流れ)
[3.使用技術について](#3-使用技術について)
[4.今後について](#4-今後について)
[5.あとがき](#5-あとがき)

#1. 作ったWebサービス

サービス名:プログラミング言語ランキングサイト
URL: https://programming-ranking.com
サービス内容:GitHubのプログラミング言語別リポ

元記事を表示

PHP初心者とお仕事した時に用意したコーディングルールのテンプレ

## 概要

プロジェクトによって色々なコーディングルールがあると思うけど、
PHP初めて触る人に `PSR` に準拠してね!ってだけじゃちょっと難しい時もある。
ただ1から説明するのはめんどくさい…そういう時のためにmarkdownファイルで独自のPHPコーディングルールのテンプレを作ったので配布します。

参考: [【PSR】PHPの標準コーディング規約](https://qiita.com/katsukii/items/e68183f14407722de9cc)

> ちなみにルールはその時に独自で決めただけで、PSRに準拠している訳ではありませんのでご注意を

## コーディングを統一する時のおすすめライブラリ

– `PHP-CS-Fixer`
– 余分な空白改行を削除したり、PSRに準拠した書き方に統一してくれたりする
– もちろん独自にカスタマイズも可能
– CIに設定することで細かなミスに実装者が気付けるのでレビューで細かなミスを指摘する必要がなくなる
– `PHPStan(LaravelならLarastan)`
– 静的解析

元記事を表示

【Laravel】バリデーション(条件付き必須項目)

## はじめに
Laravelでの必須項目のバリデーション設定にて、
「ここの項目に値があれば、こっちの項目を必須にしたい」
なんて思っていた際に便利なバリデーションがあったため、備忘録として残します。

## 開発環境
php 7.4.7
Laravel 8.16.1

##やりたかったこと
項目A, B, Cいずれかに値がひとつでもあれば、全て必須項目にしたい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508299/33ee0ce8-a8c7-e538-5979-ef89506a3e45.png)
## 条件付きrequired種類
・required_if
 => “指定した項目” が “指定した値” であれば入力必須

・required_unless
 => “指定した項目” が “指定した値” でなければ入力必須

・required_with
 => “指定した項目” が “どれか一つでも記載” されていれば入力必須

・required_with_all
 => “指

元記事を表示

Webアプリケーションを作ってみる。[Laravel]

#Route
まず、Laravelを開いたときにページが開くが、なぜこのページが表示されるのか。
それは以下のファイル、コードが関係していて、
localhost:8000/ を開いたときにrerurn view(ファイル)で書かれている。

“`php:routes/web.php
Route::get(‘/’, function () {
return view(‘welcome’);
});
“`

ちなみに、view(‘welcome’) のファイルの場所は、
基本的にresources\views にある。

初期設定では、resources\views\welcome.blade.php というファイルが設定されている。

#MVCのM(モデル)をコマンドで作る
以前まで、modelは何も選択しないと、Procidersフォルダに入ってしまっていたらしいので、 Models/ファイル名としてファイルを整理していたらしいが、
今は、自動的にapp/Models/ 配下にmodelが作成されるので以下のコマンドで大丈夫。

“`bash
//-mcとすることで、m

元記事を表示

Laravelをインストールして初期設定してみる。[Laravel]

#概要
筆者は現役エンジニア(まだまだ未熟者)で現場でphp(laravel)とjs(React Hooks)を使っていてjsのほうは得意だが、サーバーサイドが苦手だったので勉強中。
UdemyでLaravelの講座を購入したので、自分の振り返り兼アウトプットにメモ書き。

##Laravel関係のインストール
###まずXAMPPのインストール
XAMPPでまとめてPHPやMySQLやApacheをダウンロードしてくれる。らしい…便利。

###次にcomposerをダウンロードする。
Webでcomposerと検索すると一番上に出てくる公式サイトがあるのでそこからダウンロードする。
指揮者が特徴のcomposer。
ダウンロードしたら念のためダウンロードできているか確認するために、下のコマンドを実行。

“`bash
composer -v
“`

###Laravelのインストール
上記二つがおわったらいよいよLaravelのインストールをする。
Laravelはコマンドプロンプトなどでコマンドを実行して取り込める。
取り込みたい場所で以下のコマンドを実行。

“`b

元記事を表示

ランダムで特定のユーザーにかつカラムの値だけを表示(Laravel)

プログラミング初心者です。

##やりたい事
特定のユーザーのWord Modelの値をランダムに取得したい。
##まずはWord Modelの値を取得するにはとやってみた事
調べるとinRandomOrder()使うと出てきたので、まずこのコードを書いてみました。

“`php
$word_random = Word::inRandomOrder()->first();
“`
first()はひとつだけ取得し、返り値はインスタンスです。

でもこれだと、WordModelを全て取得してしまいます
wordカラムのだけ表示したいので、カラム指定できるselect()を使いました

“`php
$word_random = Word::inRandomOrder()->select(‘word’)->first();
“`
そして表示したいところに

“`php
$word_random[“word”]
“`
[“word”]は連想配列で、ないと、{word:word1}と波括弧とカラム名まで出てきてしまいます
wordがkeyになっているので指定してあげます。

ただMod

元記事を表示

【初学者必見】LaravelのN+1問題とは、その解決方法

##はじめに
**Laravel: 7.30.4**
**PHP: 7.2.3**

N+1問題についてなぜこの問題が発生するのか、初学者が簡単に理解できるように書いていきたいと思います。

##準備
まず、適当にリレーションを張ったモデルを用意します。今回は`Author`(著者)モデルと`Article`(記事)モデルを用意して、`Author`が複数の`Article`を持つようにします。

“`php:Article.php
belongsTo(‘App\Author’);
}
}
“`
※Authorモデルには特になにも書かなくて大丈夫です。

次にテーブルを用意して適当にデータを挿入していきましょう

テーブル作成はこちら↓のURLが参考になります。
https:/

元記事を表示

Laravel ロールの設定

Laravelでロールを設定する方法についてご紹介します。
今回はuserテーブルにロールカラムを追加する方法と、ユーザーへの役割の設定方法までを記載致します。
現在作成中のポートフォリオで、ログインをロールで認可してユーザー権限ごとにログイン後のリダレクト先を変更する機能を実装中なので、実装が終わったらそちらの方もご紹介できればと思います!

##ロールとは
システム開発において`ロール`とは`役割`という意味ですが、一般的に権限といった言葉で表現されています。
userアカウントを作成した際に、ロールが設定してあることで、このアカウントは`一般ユーザーなのか、管理者なのか`といったアカウントの役割を区別することが可能になります!

ロールの設定をすれば、ログインした際にロールからアカウントの権限を区別し、一般ユーザーや管理者ごとにブラウザの表示内容を変えることができます!

##ロール設定の前に
今回は下記の権限を想定の上で、数値を使ったロールの設定を行います。
数値以外には、文字列でも設定可能です。

「管理者(admin)」
・アプリを管理する用のアカウント。主に、登録してある

元記事を表示

Laravelの使える?ヘルパ関数

## Laravel8のヘルパ関数で実際に使った使えたものをまとめる
Laravelではグローバルに使える関数が多数あり、それらを使用することにより開発効率や可読性が向上します。
そのため用途にあったものがある場合、積極的に使用するようにしましょう。
以下では用途にまとめてヘルパ関数を記載しています。

## パス
### `mix()`
`mix`関数は、バージョンつけしたMixファイルのパスを取得します。

“`php
$path = mix(‘css/app.css’);
“`

### `storage_path()`

`storage_path`関数は、アプリケーションの`storage`ディレクトリへの完全修飾パスを返します。`storage_path`関数を使用して、ストレージディレクトリ内の特定のファイルへの完全修飾パスを生成することもできます。

“`php
$path = storage_path();

$path = storage_path(‘app/file.txt’);
“`

## 文字列
### `Str::lower()`
`Str::lo

元記事を表示

プログラミング初心者が書いたマイグレーションのやり方について

はじめに
—-

現在Laravelを学習しているプログラミング初心者の僕が
今回はマイグレーションのやり方について記載していきたいと思います。

マイグレーションとは?
—-

マイグレーションとはデータベースのバージョン管理機能のことを指します。
PHPのスクリプトを使うことによりテーブルの作成処理などを用意することが出来るのです。

マイグレーションの手順としては以下のようになります。

+ マイグレーションファイルの作成
+ スクリプトの記述
+ マイグレーションの実行

マイグレーションファイルの作成~実行まで
—–

現在作成しているプロジェクトに移動してから以下のコマンドを実行します。
(僕は今回peopleというファイルを作ります)

“`
$ php artisan make:migration cretate_people_table
“`

するとdatabaseフォルダのmigrationsフォルダの中に
xxxxx_create_people_table.phpというファイルが新たに作られていると思います。
(xxxxxには作成した日時が書い

元記事を表示

【Laravel】package不足でcomposer installができない

既存のLaravelプロジェクトをインストールする工程で、composer installをしますが、

“`
[ec2-user@ip-172-31-39-229 laravel]$ composer install
PHP Warning: PHP Startup: Unable to load dynamic library ‘pdo’ (tried: /opt/remi/php74/root/usr/lib64/php/modules/pdo (/opt/remi/php74/root/usr/lib64/php/modules/pdo: cannot open shared object file: No such file or directory), /opt/remi/php74/root/usr/lib64/php/modules/pdo.so (/opt/remi/php74/root/usr/lib64/php/modules/pdo.so: cannot open shared object file: No such file or directory))

元記事を表示

【PHP】配列同士を結合する。配列にカラムを追加する

“`PHP
[ ‘id’ => 10, ‘language’ => ‘PHP’, ‘framework’ => ‘Laravel’],
1 => [ ‘id’ => 20, ‘language’ => ‘Java’, ‘framework’ => ‘Spring’],
2 => [ ‘id’ => 30, ‘language’ => ‘JavaScript’, ‘framework’ => ‘Vue.js’ ],
3 => [ ‘id’ => 40, ‘language’ => ‘Ruby’, ‘framework’ => ‘Ruby on Rails’ ]
];

$add = [
0 => [ ‘id’ => 10, ‘age’ => ‘1995年06月08日’ ],
1 => [ ‘id’ => 20, ‘age’ => ‘2009年05月23日’ ],
2 => [ ‘id’ => 30, ‘age’ => ‘

元記事を表示

LaravelでArtisanコマンド(コマンドライン(Command))処理のテストを書く

### 経緯
・ Laravelにて、バッチ処理を書くにあたって、Commandで実装してgithub actionsで定期実行する形にしようと考えてバッチ処理実装
・ テスト書いてないとかお前それ t_wadaの前でも。。。があるので、テストももちろん書く!
・ マニュアルにあるように
https://readouble.com/laravel/8.x/ja/console-tests.html

“`php
$this->artisan(‘testBatch’)
->expectsOutput(‘batch complete’)
->assertExitCode(0);
“`
と書く。

・ おーいけてるいけてる。じゃあDBの値の変更結果も確認しよう。

“`php
$this->artisan(‘testBatch’)
->expectsOutput(‘batch complete’)
->assertExitCode(0);

$this->assertEquals(Hoge::count(), 1);
“`

“`
FAILU

元記事を表示

【Laravel】Routingがあっているはずなのに404となった場合の対処法

# 概要
ブランチ等を切り替えているうちに、Routing登録済みのページで404となる現象が発生したためその時の対処法を記録

## 開発環境
Docker
PHP 8.0.8
Laravel 8.32.1

## 対処法

正しいroutingが登録されていない可能性があるため、下記の手順で確認&修正します。

– 1.   登録されているroutingを確認

“`
php artisan route:list
“`

– 2. 404が出るページのrouting登録が1のリストで表示されない(または正しいものでない)場合、cacheを削除

“`
php artisan route:clear
“`

– 3. 再度1のコマンドを打ち、正しいroutingとなったことを確認して該当ページの表示確認を実施

元記事を表示

OTHERカテゴリの最新記事