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

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

【Laravel,MySQL】設定ファイル.env、.env.example、database.phpの違いとは?

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref=pd_lpo_1?pd_rd_i=4798060992&psc=1)で学習している中の疑問・つまづきの備忘録です。

今回はLaravelでDBを利用する際の設定ファイルについてまとめます。
なお、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%

元記事を表示

ページごとに別のスタイルシートを読み込みたい

# やりたいこと
ページごとに違うスタイルシートを読み込む。
htmlからPHPにした際に、ヘッダーはheader.phpにまとめたので、動的に読み込むスタイルシートを変更させたい。

* index.php のとき style.css
* mypage.php のとき mypage.css

を読み込むようにする。

# 変数を使ってそれぞれにシート名を代入する
PHPの変数を使って動的に読み込む。

“` header.php 【Laravel-Mix】npm run productionしたらエラーが出た時の苦し紛れの解決方法

###npm run productionしたらエラーが出た

“`powershell:Terminal
npm run production
“`

##前提
Laravel 8.4
webpack-cli 4.9
Laravel-mix 5.1

Laravel-uiのLaravel-mixを使いたかった。

“`package.json
“scripts”: {
“production”: “cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js –no-progress –hide-modules –config=node_modules/laravel-mix/setup/webpack.config.js”
}
“`

#苦し紛れの解決方法
###そうだ、Laravel-mixを最新にしよう
“`bash:Terminal
npm install laravel-mix@latest
“`

私の環境ではうまくいきました。

“`nodejs:T

元記事を表示

備忘録~詰まってしまった繰り返し処理においての疑問点

“`
‘;
$score = (int)trim(fgets(STDIN));
if ($score === -1){
break;
}

$scores[] = $score;
$sum = 0;
for ($i = 0; $i < count($scores); $i++) { echo $i + 1 . ':' . $scores[$i] . PHP_EOL; $sum += $scores[$i]; } echo '合計:' . $sum . PHP_EOL; } while(true); /* 80=>
点数を入力 >80
1:80
合計:80

80=>
1:80
2:80
合計:160
点数を入力 >
*/

“`
上コードは入力した値とその合計を出力する。

“`

元記事を表示

(備忘録)初学者からLaravelで開発できるまでの要点まとめ

まずは軽くLaravel内でのクラス、メソッド、プロパティの書き方をおさらい

クラスが持つ「変数」を「プロパティ」と呼びます。
クラスが持つ「関数」を「メソッド」と呼びます。

プロパティはpublic、private、protected (アクセス修飾子)で定義します。

クラス内でプロパティやメソッドを参照するときは、$this という変数を使います。

このときプロパティ名に$(ダラー)はつけません。

× $this->$number1   〇 $this->number1

クラス(設計図)からインスタンス(newで定義)を作成。

インスタンス内のプロパティやメソッドにアクセスするには、オブジェクトに対して -> (アロー演算子)を使用します。
$math = new Math; //クラス(Math)からインスタンスを作成。

※ 作成したインスタンス($math)は、クラスで定義したプロパティ($number1,$number2)とメソッド( add(),minus() )を持ちます。
$result1 = $math->ad

元記事を表示

Laravel5.5 ファイルアップロードメソッド(store)を使用せずに画像ファイルを保存

一般的にアップロードされた画像ファイルの保存方法は下記のようになります。Laravelでは、画像アップロードのフォームから送信された画像に関してはstoreメソッドを使用すれば、簡単にサーバーに画像を保存する事が可能なのですが、画像URLのパスを取得して、直接的に画像を保存する場合は若干処理が助長的になってしまうのがネックだと思います(この部分もっとスマートに出来るよ等、アドバイスがあればコメント欄にて教えて頂けますとありがたいです!

“`
$path = $request->file(‘userimage’)->store(‘public/img’);
$image = User::find(\Auth::id());
$image->image = basename($path); //imageカラムに保存
$image->save();
“`

#前提
上記のように、アップロードされた画像ファイルの保存処理はLaravelだと簡単に書けるのですが
バッチ処理等で画像ファイルのパス(URL)を予めDBに格納した場合の、画像ファイルを保存する方法で少し躓いたのでメモ代わりに

元記事を表示

空白投稿もエラーメッセージが表示されない(Laravel)

# <エラー概要>
◉LaravelMix学習

:::note warn
Class “App\Http\Controllers\Admin\Profile” not found
:::

#<仮説>
・ Profileが存在するか確認
・ 名前空間とファイル名の命名規則相違
・ ファイルの階層を、Profileの名前を確認
・ namespace App;
→ namespace App\Models;

※いずれも変化なし。

#<解決方法>

①複数形になっているmodel削除
②単数系で再度作成
③validation.phpで日本語表示に設定

modelは原則単数系で命名しないといけないにも関わらず、
複数形で命名していたことが原因。
冷静になって基礎から調べたら解決できました。

元記事を表示

【Laravel】フォーム送信時に419 Page Expiredが発生する件について調べてみた

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref=pd_lpo_1?pd_rd_i=4798060992&psc=1)で学習している中の疑問・つまづきの備忘録です。

今回はCSRF対策の際のエラー解決と根本原因についてまとめます。

#発生したエラー

フォーム送信時に以下のエラーが発生しました。

![スクリーンショット 2022-01-08 12.03.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475547/014f3ed8-896f-6f72-be5e-602b6f2

元記事を表示

PHP基礎

#PHPの宣言
HTMLでPHPを宣言するには``内に記述する。
また1行の場合は、末尾の`;`を省略できる。

“`sample.php

// 1行の時は、セミコロン不要

“`

#変数
変数の宣言と使用

“`sample.php

“`

#計算
加減乗除

“`sample.php

“`

簡略化した書き方

“`sample.php

元記事を表示

【Laravel8.x】Laravel + Ngram + Observerを利用した全文検索機能の実装ハンズオン

# はじめに

本記事は以下の続編になります。
https://qiita.com/naoki-haba/items/ace7a5d1e0d9d72ed040

## 続編記事を書くことにした経緯

シンプルなテーブル構成の場合は以下の通りにすれば全文検索の準備は整います

“`php
DB::statement(“ALTER TABLE shops ADD free_word TEXT as (concat(IFNULL(age, ”), ‘ ‘,IFNULL(name, ”), ‘ ‘,(case gender_id when 1 then ‘男性’ when 2 then ‘女性’ else ” end), ‘ ‘)) STORED”);
“`

しかし、複雑な要因(複数テーブルとの外部結合が必要な場合etc)の場合に、上記の記述をすることに苦労したので、今回は対処方法の選択肢の1つとしてご紹介させていただきます。

# 記事の流れ

1.既存のDDLから`free_word`カラムを削除する
2.ダミーデータを投入する
3.`free_word`カラムを追加する
4.

元記事を表示

Laravel備忘録

#はじめに
Laravelのプロジェクトを作成するにあたって毎度実行することは変わらないが、覚えるのが大変なものを備忘録としてまとめ上げた。

# 目次
1. [プロジェクト初期設定](#プロジェクト初期設定)
2. [migrationファイル作成](#migrationファイル作成)
3. [Herokuデプロイ](#herokuデプロイ)

# プロジェクト初期設定
## Laravelプロジェクトを作成
composer create-project laravel/laravel –prefer-dist プロジェクト名

## サーバーを起動
“` bash
cd プロジェクト名
php artisan serve
“`

## Bootstrapのダウンロード & Login関連の見た目を作る
“` bash
composer require laravel/ui
npm install
npm run dev
npm run dev
php artisan ui bootstrap –auth
“`

## モデルの作成
“` bas

元記事を表示

PHPで日付時刻を取得するならCarbon型が便利

# 背景
テストコードを書く時にさっと日付を戻したり進めたりする時にすごい便利だったので使い方をメモします。
# Carbon型とは
PHPのDateTimeクラスを継承して拡張された日時操作ライブラリのことです。
# 導入方法
Composerでインストールすればすぐに使えます。

“`
composer require nesbot/carbon
“`
# 使い方
“`
toDateString(); // 日付のみ取得(2022-01-01)
$carbon = Carbon::create(2022, 1, 1, 10, 20, 30); // 引数で時刻を設定
echo $carbon->year; // 2022
echo $carbon->format(‘Y年m月d日’); // フォーマットを指定できます(2022年0

元記事を表示

Laravel Breezeのインストール

## Laravel Breezeとは

Laravel Breezeとは、Laravelでログイン、登録、パスワードのリセット、電子メールの検証、パスワードの確認などの機能が実装されているLaravelのPluginです。
Laravelの公式ドキュメントの[Starter Kits](https://laravel.com/docs/8.x/starter-kits#laravel-breeze)にはLaravel Breezeのインストール方法が記載されていますが、Sailを使っていないので、今回はSailにLaravel Breezeをインストールします。

## インストール

Laravelアプリケーションのインストールをします。

“`shell
curl -s https://laravel.build/example-app | bash
cd example-app
./vendor/bin/sail php artisan migrate
“`

Composerを使用してLaravelBreezeをインストールします。

“`shell
./vendor/

元記事を表示

(PHP)PDOのプレースホルダーについて

#PDOのプレースホルダーは変数名で書くべき
結論から言うとプレースホルダーには入れ込む変数名を記述するようにしましょう。
?でも可能ですしexecuteの引数の記述も減らせますが可読性や保守性面を考えると変数名で記述すべきだと言えるでしょう。

“`php
$label = ‘素晴らしい!!’;
$n = 80;
$stmt = $pdo->prepare(
“UPDATE
posts
SET
message = CONCAT(?, message)
WHERE
likes >= ?”
);
$stmt->execute([$label, $n]);
“`

↓書き換えると

“`php
$stmt = $pdo->prepare(
“UPDATE
posts
SET
message = CONCAT(:label, message)
WHERE
likes > :n”
);
$stmt->execute([‘:label’

元記事を表示

ビューコンポーザ利用時に発生したMethod Illuminate\View\View::composer does not exist.の原因と解決策

#自己紹介
初めまして、kotobukiと申します。

以前PHPでwebアプリを初めて0から開発した際につまづいた点を残しておらず後悔したので、
今後そのようなことがないように始めてみました。
これからの学習や個人開発でのつまづきポイントや疑問などを投稿していこうと思います。
おそらく初学者の方々も同じような部分でつまづくと思うので、参考になれば幸いです。

・開発したアプリ
 [逆タン!!-タンパク質量から食材の量を逆算-](https://protain-backcalc-app.herokuapp.com/)

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref

元記事を表示

Laravel アプリにlaravel/sail を導入

# はじめに

昔作ったアプリの開発環境がdocker環境になっていなかったのでそれをsail使って実現したことを備忘録として残します。

# 導入

## の前に

sailを利用するにはlaravel, php ともにバージョン7.4以上必要との認識ですので、

PHPのバージョンを7.2 → 7.4

Laravelのバージョンを7.0 → 7.4

“`json:composer.json
{
“name”: “laravel/laravel”,
“type”: “project”,
“description”: “The Laravel Framework.”,
“keywords”: [
“framework”,
“laravel”
],
“license”: “MIT”,
“require”: {
// “php”: “^7.2”,
“php”: “>=7.4”, ここ変更
省略
// “laravel/framework

元記事を表示

PHP 関数で可変長の引数を受け取る

# 概要

– PHPの`…`トークンについて教えてもらったので簡単にまとめる。

# 謝辞

– 本知見は同じ現場で働くエンジニアの方が教えてくださったものです!本当にありがとうございます!

# 可変長の値を引数として受け取る

– 定義した関数の引数部分の前に`…`トークンを記載することで当該の関数が可変長の値を受け取ることができるようになる。
– 引数は配列として渡される。
– 下記に例を記載する。(コードはPHPの公式ドキュメントから抜粋)

“`php

“`

– これなら関数呼び出し時に引数の数が変動する場合でも、’…’トークンを記載し

元記事を表示

[WordPress]抜粋表示にしてみた

“`index.php
get_template_part( ‘template-parts/post/content’,get_post_format());
“`

と記述されていたのを

“`index.php
get_template_part( ‘template-parts/post/content’, ‘excerpt’ );
“`

と書き換えるだけでOK

それと[設定] → [表示設定] → 抜粋表示を選択

元記事を表示

PHPでの実行環境を環境変数で切り替える

# PHPで実行環境毎に環境を切り替えたい
切り替えるにはどうするか。色々方法はあるかとおもいます。
おおきく以下かなとおもいます。

– ローカル環境の場合
– 開発サーバー環境の場合
– ステージングサーバー環境の場合
– 本番環境の場合

で、PHPで以下で取得するとよさそうですが、

“$_SERVER[“HTTP_HOST”]“

これが良さそうだけど、環境によっては取得できない場合がある。

確実に取得するには、ウェブサーバーに値を設定すればよい。確実にその値が取得できる。

**忘れがちなので環境をコピーしたときに、チェック!**

###nginx

“` xxx.conf
location ~ \.php$ {
いろいろ設定
fastcgi_param PROD_STG_ENV production;

}
“`

###apache

“` xxx.conf

SetEnv PROD_STG_ENV production

“`

## PHPで環境変数を取得す

元記事を表示

DockerのPHPイメージのポート番号を変更する

# 背景
(思い出し記事)
コンテナ間通信で複数のPHPコンテナを利用した際、
ポート番号をずらす必要があった

# 問題
単純に `docker-compose.yml` でポート番号を指定しても通信できず…
PHP公式イメージにおいて、イメージ内に含まれている
`zz-docker.conf` で9000番固定となっていたことが原因だった

# 対処
`zz-docker.conf` を複製したファイルを用意し、置き換えることにした

“`conf:zz-docker.conf
[global]
daemonize = no

[www]
listen = 9100 ← 任意のポート番号に変更したファイルを用意
“`

`docker-compose.yml` の `volumes` の指定で、
上記で用意したファイルを
既存の `/usr/local/etc/php-fpm.d/zz-docker.conf` に対してマウントすることで上書き

該当箇所のみ抜粋

“`yml:docker-compose.yml
services:
php:
volumes:

元記事を表示

OTHERカテゴリの最新記事