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

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

【BladeOne】CSRF対策

# はじめに
Laravel感覚で途中まで実装できていましたが、CSRF対策のところで躓きました。
実装するのに少し時間がかかってしまいました。
同じように悩む方の参考になればと思います。

## インストールがまだの方
[こちらの記事](https://qiita.com/Shogongon/items/80ae1a2183d0fb2d1c02)が参考になります。

## 注意
下記内容は「厳密なCSRFの用語の定義」を満たしていません。
CSRFの前提条件として「ログイン済み」であることが条件のためです。
あくまでもサンプルソースであることのご理解願います。

# 結論
※注意:session_start();でセッションの処理を開始しておく必要があります。
– CSRFトークンの送信側
“`php:form.php

元記事を表示

VSCodeで利用できるクイックフィックスはありませんが出た時の対処方法(PHP)

# 動機
文法的に間違ってない+エラーも出なく、出力されるのに、クイックフィックスはありませんと出てきたので気になって調べてみました。
# 要点
1.PHP Suggest : Basicのチェックを外す
2.PHP Intelephenseを導入する。

# PHP Suggest : Basicのチェックの外し方
1.「ファイル>ユーザー設定>設定」と進む。
2.Suggest:Basicと検索し、チェックを外す。

# PHP Intelephenseの導入の方法
1.拡張機能ボタンを押す。
2.PHP Intelephenseと検索する
3.インストールボタンを押す。

#結果
この方法を試すと、治りました。
もし同じ症状が出ているなら、試してみてください。

# 参考サイト
https://trios.pro/visual-studio-code-how-to-use/
https://yama-itech.net/visual-studio-code-recommend-setting-php

元記事を表示

[Laravel] テスト中のエラー ‘SAVEPOINT trans2 does not exist’

`laravel 8.75`にて

## エラー

__コマンドテスト中の一幕。__

コマンド画面にて突如現れしエラー。
`SQLSTATE[42000]: Syntax error or access violation: 1305 SAVEPOINT trans2 does not exist`

![testerr.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/990851/5a144f2e-5757-2248-3dec-20af9ee4cd1e.jpeg)

テストを書いてただけなのに……

## 解決?

__テストファイルの`use RefreshDatabase;`コードを削除した。__
(画像は削除する前)
![testerr-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/990851/8b987d55-4171-6612-92b7-08113de60715.jpeg)

Commandフ

元記事を表示

PHP基礎

PHPの基本的な記述ルール
①拡張子は「xxx.php」
②コードの書き方
と書く。
※ちなみにphpはhtmlに埋め込んで書くことも可能
ex)
“`




PHP基礎





“`
※参考にさせていただいたサイト

PHP基礎を超初心者向けに徹底解説!構文・文法・関数が丸わかり!

元記事を表示

PHP基礎①代入の仕方・変数の画面表示

1⃣ 変数とは、、、
→”値”を格納するための”箱”
(PHPでは、値そのものを変数に格納する)

●記述の仕方
“`
$変数名 = 値;
“`

※変数は事前に宣言は必要ない。値を格納した時点から、その変数が使用可能になる。
→それぞれの変数を区別するために変数には任意の変数名を付ける。

★変数は 「$」 + 変数名 で表される。

~変数命名時のルール~
“`
$name
$_name_name
$name1234
“`
上記例のように
1.頭がアルファベットで始まるもの
2.頭がアンダーバー(_)で始まるもの
3.上記2つ + その後にアンダーバー、数字、アルファベットが続くもの
が条件。

2⃣ 代入演算子
変数に値を代入するには、「=」を使う。
→右辺の値を左辺に代入する。

“`
$age = 20;
$name = ‘田中’;
“`

上記の場合だと、
「$age = 20;」→数値「20」を、変数「age」に代入している。
「$name = ‘田中’;」→文字列「田中」を、変数「name」に代入している。
また一度値を代入された変数に、別の値を代入するこ

元記事を表示

[静的解析 x PHP]気軽に静的解析をするために”phpstan”と”phan”をDockerで実行する手順をまとめる

# phpstan

https://github.com/phpstan/phpstan

#### 実行コマンド

“` .sh
docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse {解析対象のディレクトリ}
# (例)docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse backend/packages

# ターミナル上でなく、テキストファイルに出力したい場合
docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse {解析対象のディレクトリ} > phpstan.txt
“`

##### ▼動作確認
以下を実行してバージョンが表示されれば実行可能な状態

“` .sh
docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse -V
> PHPStan – PHP Stati

元記事を表示

PHPの構文省略形まとめ

うっすっす。豚野郎です

今回はPHPの省略構文形を書いていこうと思います。
前から知ってはいるんですけど、たまに読んでて「ん?」ってなったりすることがあるので
ここでまとめておこうと思います。

・バージョン:PHP 7.4.29

## 1. echo
普通のechoの書き方は以下の様な形です。
“`echo.php

“`

結果
“`
テストです。
“`

省略構文形を使うと以下のようにも書けます。
“`echo.php

“`

結果
“`
テストです。
“`

公式でも省略が推奨されているみたいですね。

## 2. if文
①. コロンを使う方法
“`if.php

“`

結果
“`
test
“`

htmlに埋め込む時は以下の様な書き方もできます。
“`if.php

元記事を表示

Laravelの個人的プラクティス

## 最初に
数ヶ月Laravelを使った開発を行ってきました。
その中で、今後実装する上で気をつけたい点が溜まってきたので、備忘録として残しておきます。
※ 用途はReactのバックエンドのAPIサーバーで、[Bladeテンプレート](https://readouble.com/laravel/8.x/ja/blade.html)は使っておりません。

ここに記載されてあるポイントはこちらのボイラープレートに反映されています。

https://github.com/PaykeDeveloper/payke-hinagata-backend

## サービスコンテナを使用する
サービスコンテナとは、以下の事を指します。

https://readouble.com/laravel/9.x/ja/container.html

コントローラーにロジックが乗ったり、モデルにそぐわないメソッドが実装されるのを防ぐ為に
最初からこういったレイヤーを導入すべきでした。

このサービスコンテナを導入する事で、他のメリットも享受できます。
サービスコンテナはDI(Depedency Inject

元記事を表示

PHP Docker環境でMysql DBに接続する際の注意点

## はじめに
Dockerについての解説はしない
DockerでPHP環境が構築できているのが前提

## PHPからDBに接続

適当なファイルを作成する
内容を記述

“`php
getMessage() . “\n”;
exit();
}
“`

## 注意点
*DB_HOSTの*`mysql:host=mysql`はコンテナ名を指定している
厳密にいうとコンテナのipアド

元記事を表示

【PHP】PHPUnitの環境構築(インストール→オートロードの設定→テスト実行まで)

最近仕事にゆとりができたので、TDD(テスト駆動開発)の勉強として、PHPUnitを使って試そうとしたところ、見事にハマったので備忘録として記載する。

# 0.環境
MacOS 11.5.2(Big Sur)
php 8.1.2
XAMPP
Composer 2.3.7
※ComposerとはPHPのパッケージ管理システムである。
参考:[composerとは](https://qiita.com/atwata/items/d6f1cf95ce96ebe58010)

# 1.ComposerでPHPUnitをインストール
まず、/Applications/XAMPP/xamppfiles/htdocs直下に、TDD用の”phpunit”ディレクトリを作成。
phpunitディレクトリ直下にcomposer.json作成。下記のプログラムを記述し、ターミナルで“`composer update“`を実行。インストール後、“`composer.lock“`と“`vendor“`フォルダが追加されている。
“`json:composer.json
{
“requir

元記事を表示

Qiitaの記事投稿画面みたいなリアルタイムで編集状況わかるやつを作ってみる(第一回)

# 目的
友達が記事投稿のサイト作りたいらしくて、折角ならQiita真似してやろうと思って、今回少しやってみました!

# 投稿画面

Qiitaの投稿画面をディベロッパーページで確認してみると…

“`html

“`
で、textinputを使わない方法を使ってることがわかります…

そんなん出来んのかよ…

これを真似し始めたことが全ての始まりでした…

# type=roleでcontenteditable=”true”のdiv

こいつを使って何がいい

元記事を表示

Laravel 認可について

# はじめに
Laravelで認可について学習しましたので そのアプトプットです。

# 認可って?

公式(https://readouble.com/laravel/9.x/ja/authorization.html)

> あるユーザーが認証されていても、アプリケーションが管理している特定のEloquentモデルまたはデータベースレコードを更新や削除する権限を持っていない場合があるでしょう。Laravelの認可機能は、こうしたタイプの認可チェックを管理するための簡単で組織化された方法を提供します。
>

CRUD処理で自分が投稿・編集・削除など基本的に自由に操作できますが、他人が自分の投稿を勝手に削除されたりするとまずい。防ぐための方法として「ゲート」と「ポリシー」の2つが存在し、アプリケーションを構築する時は両方混在する事もあるそう。とりあえず今回はポリシーに絞ってアウトプットしていきたいと思います。

### ゲート
ダッシュボードの表示など、モデルやリソースに関連しないアクションに適しています。 
### ポリシー 
特定のモデルやリソースアクションを認可する場合に適して

元記事を表示

LaravelとmicroCMSでのコンテンツ管理 応用編

PHPフレームワークであるLaravelと、ヘッドレスCMSであるmicroCMSで、コンテンツ管理機能を実装する手法をご紹介します。Laravelの実装とmicroCMSのコンテンツ管理2つに関してハンズオン形式で記述していきます。

## 前回の記事はこちら

https://qiita.com/masakichi_eng/items/6ceda3b4d7f82ec22aa5

この記事では、応用編として記事詳細ページの表示と、記事にタグを設定する方法について解説していきます。

## 記事詳細ページの実装

### ルーティングの追加

“`php:routes/web.php
Route::get(‘/articles/{id}’, [ArticleController::class, ‘show’])->name(‘articles.show’);
“`

### microCMSのサービスクラスに追記

“`php:app/Services/MicroCmsService.php
public function getSingleContent(string

元記事を表示

ポケモンのクラスを作ってPHPオブジェクト指向の3大要素を理解する

## はじめに
こんにちは。masakichiです。

PHPのオブジェクト指向には3大要素というものがあります。
「カプセル化」「継承」「ポリモーフィズム」の3つだそうです。

知らない人からすると、なんのこっちゃだと思います。
これらを理解するには、PHPのクラスから学んでいくといいと考えています。

ということで、まずはPHPのクラスについて理解するために、ポケモンを通して実装例を書いていこうと思います。

ポケモンには様々な種類がいます。
一番最初は151匹だったのに、いまでは900種類以上いるそうです。

とても覚えられたものじゃありません。

さて、いきなりですが、ここであなたはポケモンの開発者になったとします。

900種類以上のポケモンを表現するために、プログラミングコードを記述しなくてはいけません。
そんな時、1匹ずつ別々のプログラミングコードを記述することで実現は可能かもしれません。

しかし、そのやり方だと、もしまた新しいポケモンが発売された時、同じように新種のポケモンの数だけコードを書き足さなくてはいけなくなります。

そんな時に役立つのがクラスという考え方です

元記事を表示

AWS: 簡単なLAMPサーバーでWordPressを動かすまで(Intel Mac) 〜PHPをインストール〜

# はじめに
AWSハンズオンの学習記録です。
2022年8月の情報をもとに投稿します。

ゴールは、EC2を使って簡易的な仮想サーバーを作り、ブログソフトであるWordPressをインストールします。
また、WordPressを外部公開できることを想定しています。

**今回はプログラミング言語である「PHP」のインストール方法を投稿します。**

尚、ハンズオンがメインのため、各サービスの概要や用語の解説は極力省かせていただきます。
### ゴール
仮想サーバーでWordPressを使える状態にします

### ゴールまでの流れ

[1.VPCとサブネットを作成](https://qiita.com/holySh10/items/749b98e320fc71e6739e)
[2.EC2を作成/セキュリティグループの設定](https://qiita.com/holySh10/items/90a3501d819f1ae2c7cd)
[3.EC2へSSH接続](https://qiita.com/holySh10/items/689f4c83cd18db128983)
[4.Webサー

元記事を表示

Docker環境でPHPでGDライブラリを有効にする方法

# ハマったこと

php:8.0-apache-bullseye環境で開発中、GDに依存しているライブラリをcomposer requireした際、Dockerの立ち上げ時に以下のエラーが出るようになった

“`
#0 0.140 + composer update
#0 0.216 Loading composer repositories with package information
#0 1.609 Info from https://repo.packagist.org: #StandWithUkraine
#0 6.428 Updating dependencies
#0 7.318 Your requirements could not be resolved to an installable set of packages.
#0 7.318
#0 7.318 Problem 1
#0 7.318 – maatwebsite/excel[3.1.28, …, 3.1.30] require phpoffice/phpspreadsheet 1.

元記事を表示

ubuntuにcomposerをインストール

参考
https://mebee.info/2020/06/02/post-10844/

“`
sudo apt install -y php libapache2-mod-php php-gd php-xml php-cli php-mbstring php-soap php-xmlrpc php-zip
“`

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

“`
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
source ~/.bashrc
“`
確認
“`
composer -v
“`

元記事を表示

はじめてORM(Eloquent, Doctrine)を使うことになったPHPerのための手引き

## はじめに

この記事ではORM(=Object Relational Mapper)を使うメリットやORMとはみたいな小難しい話はしません。フラットなPHPを書いていたPHPerがORMを使う世界に初めて来た場合、そもそもORMの1レコード=1オブジェクトという世界観に対してなかなかイメージがつかめないことがあるのを観測したので、そこのイメージギャップを埋められればと思って書いてみました。

そもそもクラス?オブジェクト?インスタンス?プロパティ?メソッド?みたいな用語面で躓いている場合は https://www.php.net/manual/ja/language.oop5.php 辺りを別タブで開いて行ったり来たりしながら読んでもらうと良いかもしれません。

## データの読み取り

### 従来の考え方

![データベース](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23963/bccd50a9-8992-3d9f-baee-98c7af738ca0.png)

上の図のようなデータベースの表

元記事を表示

LaravelでHttpRequestを扱う際の個人的ベストプラクティス

[最終的な成果物](#最終成果物)

# 基本的な考え方と、問題点
LarvelにてRequestを扱う際、少しググった場合も、書籍等の場合も大体FormRequestを継承すると便利だよー。
といった旨の解説とともに、Sampleでコードを載せてくれています。
そのSampleはとてもSimpleで確かにこれは簡単だ!と思わせてくれる内容であるので大抵はそのSampleに習い実装をしていくことかと思います。

しかし、時と場合によっては複雑なHttpRequestを扱わなければいけなかったり、とても大量のパラメータを扱わなければいけなかったりします。
そのような状態に陥ったときに、

FormRequestを継承して使う。

だけでは少々苦しい場面に遭遇することがあります。
苦しいとはいっても

– RequestクラスがFatになる
– バリデーションの記述が少し難解になる

くらいではあるのですが。
また、これはそもそもですがLaravelのFormRequestは

– どのようなパラメータを受け付けるかについての見通しがよくない

とも思ってます。

そのうえ

元記事を表示

PHP MAMPで環境構築 

PHPの環境構築をMAMPで行います。

環境{
Mac
MAMP
VScode
}

備忘録
## MAMPとは
Webアプリの開発に必要な環境をまとめたソフトウェア。
MAMPをインストールするだけでPHPの実行環境が整う。

従来、Mac向けに開発されたソフトウェアであり、Macユーザー向け。
(現在はWindows版も提供あり)

Macintosh(マッキントッシュ):従来、Mac向けに開発されたため
Apache(アパッチ):Webサーバー
MySQL(マイエスキューエル):データベース
PHP:PHPで書かれたプログラムを実行するソフトウェア

## インストール
まず、公式からインストールします。
[MAMP公式](https://www.mamp.info/en/mac/)

“`terminal
1,Free Download をクリック

2、intel か M1(2) のいずれかを選択しダウンロードを開始

3、ダウンロード終了したら、インストーラーを実行し、ホップアップで「続ける」を選択

4、更に警告ホップアップ。移動したり名前を変更したりするな。とのこと

元記事を表示

OTHERカテゴリの最新記事