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

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

【PHP】PHPの関数の型の指定

# コード
“`PHP

元記事を表示

PhpStormの重さ改善

# 概要
PhpStormが重く、フリーズすることが多いので改善方法を調査しました。
結果、割り当てるメモリを増やすことでフリーズなく動作するようになったので、改善手順を記載します。
# 環境
OS:Windows
PhpStormのバージョン:2022.1.3
# 手順
1. [ヘルプ]>[メモリ設定を変更]を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015414/b75aa8da-5af6-debe-cdfb-272aaca6ecfe.png)
2. [最大ヒープサイズ]を増やし、[保存して再起動]を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015414/1b1c917c-c887-6c80-57ed-f940eb199ffe.png)

元記事を表示

OpenBlocks IoTをWEBサーバにする

OpenBlocks IoT をWEBサーバにする方法です。
OpenBlocks IoT をセンサー類のゲートウェイとして使用し、さらにWEBサーバとすることができれば、OpenBlocks IoT 1台でセンサーからのデータを入力しモニターする等のシステムを稼働させることも可能となります。
![Screenshot from 2022-08-14 10-28-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/5b26ce5c-cdbb-4e5c-ea82-1b55f186c504.png)
FW4搭載の OpenBlocks IoT を対象とした解説です。FW4非搭載の OpenBlocks IoT については、汎用OSが裸で搭載されているため、それぞれのOSに応じた手段でWEBページの実装と配信が可能であり、それは難しいことではないためわざわざ解説する必要はないでしょう。

>FW4とは?という方はこのサイトを参照してください。
>[IoTゲートウェイソフトウェア FW4](ht

元記事を表示

チュートリアル記事を丁寧に追った結果起こったHeroku Build failed “Script @php artisan package:discover –ansi handling the post-autoload-dump event returned with error code 255”

# はじめに
Docker によって Laravel 環境を構築し、Heroku にデプロイするこちらのチュートリアル記事

https://qiita.com/roughstorm/items/f9f86a7048c06c7d6544

を参考にして取り組んでいたところ、Heroku での自動デプロイに失敗しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916638/579bae00-8edf-f67f-a7d0-5b15e85c901b.png)

> Script @php artisan package:discover –ansi handling the post-autoload-dump event returned with error code 255

上記のエラーは View build log で出てくるログの最後の方にあるエラー文の抜粋です。

この記事では初学者なりに格闘した内容を書きます。

# 単刀直入に言うと
**PHP のバージョン

元記事を表示

数字と文字リテラルを使わずFizzBuzz

### TL;DR
* [第5回 KusoKoudoKaigi | KusoKoudoKaigi](https://kusokoudo.love/kaigi/5/)
* こんなのやってたの知らなかった
* 応募しそこねたので15分で書いた。むしろこのエントリ書くほうが時間かかった。
* 以前書いたやつのリバイバル作品

### 動くやつ
* https://3v4l.org/djZu7

### コード

“`php
f($i);
$this->b($i);
if (ob_get_contents() == fa

元記事を表示

Goのcryptoで暗号化(AES-GCM)された文字列をPHPで復号した

Goのaesパッケージ(crypto/aes)で暗号化された文字列を、PHPで復号したときのことを備忘録がてらまとめます。

# 前提
– Go 1.13
– PHP 8.0
– AES-256-GCM
PHP歴は1年超、Goは書けないけどなんとなく読める。
今回の平文は、仕様上すべてが短い英単語である。

# GoのAES-GCMの仕様
認証タグ(tag)が暗号化後のバイナリに連結される。
“`
[暗号][tag(16Byte)]
“`
ivとtagの長さは次のコードの153行目あたりで定義されている。
https://go.dev/src/crypto/cipher/gcm.go
“`
const (
gcmBlockSize = 16
gcmTagSize = 16
gcmMinimumTagSize = 12 // NIST SP 800-38D recommends tags with 12 or more bytes.
gcmStandardNonceSize = 12
)
“`

つまり、末尾16Byteをtagと

元記事を表示

PHP 一定文字列以上は…に省略するコード

# 概要

– 一定文字数以上は`文字列…`のように文字列を変換するコードをメモ的に記載する。

# コード

– 下記のように記載することで`$limit`に入れた文字列をオーバーした場合`…`に省略する事ができる。

“`php
= $limit) {
$str = mb_substr($str, 0, $limit) . ‘…’;
}

echo $str;
“`

– 例えば下記のように記載すると「ありが…」と出力される。

“`php
= $limit) {
$str = mb_substr($str, 0, $limit) . ‘…’;
}

元記事を表示

「速習 Laravel 改訂2版」誤記

概要

「速習 Laravel 改訂2版」誤記の内容についてサンプルの通りにコードを書いても動かなかったため、自分でコードを訂正しています。

誤記と思われる点と訂正コードを他の学習者のために投稿します。
まだ経験浅い立場なので見当違いであればご指摘ください。

環境

win10 home
PHP 8.1.6
MariaDB 10.4.24

コード

P205 create.blade.php 4行目
x “`

“`
o “`

“`

P210 hello/list.blade.php 27行目
x “`id}}/show”>詳細“`

元記事を表示

【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つが存在し、アプリケーションを構築する時は両方混在する事もあるそう。とりあえず今回はポリシーに絞ってアウトプットしていきたいと思います。

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

元記事を表示

OTHERカテゴリの最新記事