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

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

Laravel Auditingでデータベースの変更を監視する

『誰がいつ、データをいじったか知りたい』というデータの監視が必要な時に、[Laravel Auditing](http://www.laravel-auditing.com/)が便利です。

## 概要
Laravel Auditingはデータベース上の指定した監視対象のテーブルに追加・更新・削除などの変更が行われた場合に、誰がどのような変更を行ったかを自動でログ保存するパッケージです。

![outline.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9882/7283423f-56a7-dfbb-bb80-9d1ada558a4b.jpeg)

## インストール & 設定

### インストール
composerで行います。

“`
composer require owen-it/laravel-auditing
“`

### 設定
インストール後、`config/app.php`にプロバイダーを追加します。

“`diff:config/app.php
‘providers

元記事を表示

【PHP】出したエラーの数々

エラーが出た原因と解決法の備忘録

##シンタックスエラー

`syntax error, unexpected ‘;’, expecting ‘]’`
‘]’付近に想定外の’;’があると怒られました。
連想配列の最後にセミコロン付けてるのが原因です。

“`php
$result = [
‘result’ => ‘NG’,
‘message’ => $e->getMessage();
];

// getMessage();の’;’を消して解決↓

$result = [
‘result’ => ‘NG’,
‘message’ => $e->getMessage()
];
“`

元記事を表示

Phoenixお気軽API開発①:PHP的ハックを応用してNode.js Express/Go的な軽量APIをPhoenixで実現してみた

[fukuoka.ex/kokura.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます :bow:

[前々作は「PHP的気軽さでWebアプリを作る方法」](https://qiita.com/piacerex/items/25c82153976dcb6d57c1)、[前作はこれを応用して「リアルタイムフロントであるLiveViewにも気軽さを導入」](https://qiita.com/piacerex/items/f6963b87a1bf624b506f)してみましたが、今作では、Phoenix API開発に、Node.js Express/Go的な軽量APIのテイストを付与してみます

この対応により、APIも、WebアプリやLiveView同様、ルーティング/MVCが不要になります

また、従来通りのmix phx.gen.jsonによるScaffold(≒コード自動生成)で構築されるAPIだと、JSONフォーマットがカスタマイズしにくかったり、カスタムフィールドを乗せるのにもノウハウが必要ですが

元記事を表示

本日の学習内容Part3

##追加ボタンがクリックされたかどうか判断する
“`input.php


?>
“`

今さらながら学習記録について、その日に特に使い方を覚えておいた方がいいものを一つだけ取り上げます。

元記事を表示

WordPress プラグインの作成と管理画面の作り方

## プラグインの作成
プラグインを作るにはプラグインフォルダを作成し、プラグインの設定項目を記入する。

プラグインフォルダは、`wp-content/plugins`に作成する。

プラグインフォルダの最初のファイルはプラグイン名と同じようにする。ここでは`test-plugin.php`にした。

このファイルに最低限記入が必要なのは次のような内容。

“`php

元記事を表示

Mac Laravelでライブラリ「laravel-dompdf」をインストールする

# 目的

– Laravelのライブラリインストールが初めてだったので実施方法をまとめる
– ライブラリ「laravel-dompdf」のインストール方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Air (11-inch ,2012) |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 |
| メモリ | 8 GB 1600 MHz DDR3 |
| グラフィックス | Intel HD Graphics 4000 1536 MB |

– ソフトウェア環境

| 項目 | 情報 |
| — | — |
| PHP バージョン | 7.4.3 |
| Laravel バージョン | 7.0.8 |

# 実施方法概要

1. インストール
1. 設定
1. 確認

# 実施方法詳細

– ローカル開発環境を前提に説明を記載する。

1. インストール
1. 下記コマンドを実

元記事を表示

1分で読める GET POST 違い

#それでは解説していきます
##GET
ブラウザでURLを入力し検索するときにGETメソッドを使っています。
基本的には読み取り専用な機能に対して使うべきメソッドになります。
・HTTP通信で、サーバから情報を取得してくる時に使用する
・情報を検索したり取得するために使うためのもの。

##POST
HTTP通信で、サーバへ情報を登録する時に使用する(データベースへの格納など)
・ツイートや記事を投稿する
・新規ユーザーを登録
・既存のデータを更新する時

なんとなくこうゆうときに使うんだなあーと思っていただけばいいかなと思います!!
細かいところもあるのでぜひ他の記事やサイトで深掘りしてください:fist:

元記事を表示

【PHP8.0】gettypeとget_classの悪魔合体

ワレハget_debug_type、コンゴトモヨロシク…

PHPにはプリミティブ型名を取得する[gettype](https://www.php.net/manual/ja/function.gettype.php)と、オブジェクトのクラス名を返す[get_class](https://www.php.net/manual/ja/function.get-class.php)という関数が存在します。
`_`があったりなかったりと命名の不統一も気になりますが、それよりgettypeはオブジェクトに使うと`object`しか返さず、get_classをプリミティブ型に使うとE_WARNINGが発生します。
いや、プリミティブ型であれば`int`とかの型が欲しいし、オブジェクトなら`PDO`とかの型が欲しいんだ、という問題に対する答えはありませんでした。

というわけで両者を合体させた[get_debug_type](https://wiki.php.net/rfc/get_debug_type)というRFCが提出されました。

# PHP RFC: get_debug_type

#

元記事を表示

【WordPress】カスタムブロックの作り方を書いてみた

## はじめに
WordPress 5.0からGutenbergと呼ばれるブロックエディターがデフォルトのエディターとして採用されました。
そのため、今後はこのブロックエディターによる開発が増えてくると思われます。

個人的には、今までのWysiWygエディターに不満を感じていたわけではありませんが、ブロックエディターという選択肢が増えたことで、**できる事の幅が増えてくる** と思います。
本記事では、このブロックエディターの新規ブロック(以降、カスタムブロック)の作り方を記載して行きます。

## ブロックエディターとは?
ブロックエディターは、名前の通り、HTMLをブロックように積み上げてHTMLを作成していくエディターです。

詳細は、以下を参照ください。

Say Hello to the New Editor

ブロックエディターの特徴の1つとして、上記リンク先のページにも記載

元記事を表示

tailコマンド メモ

PHP側のログを追うことになったのでメモ(FuelPhp以外だとよくわからん)

▼追記されるログを表示
 tail -f ファイル名
 tailf ファイル名

 ■参考URL
 https://uxmilk.jp/12218

▼PHPのログ
 これしか使ってない
 log::info(‘abcdeとかとか・・なんでも日本語もいけました’)

 ■参照URL
 http://fuelphp.jp/docs/1.7/classes/log.html

▼Gitコマンド

 普段SourceTreeでコマンドあんまり打たないからリンクだけ貼っておこう。
 https://qiita.com/2m1tsu3/items/6d49374230afab251337
 

元記事を表示

ポートフォリオ

#記事の概要
PHP,MySQLを使って作った掲示板アプリです。
レスポンシブ対応してあります。
#作った背景
自分の母親がピアノ教室の先生をやっていて、生徒同士や先生と生徒が気軽に情報を交換したり、質問ができるようなものを作りたいと思ったからです。
#機能
会員登録していなくても掲示板を見ることができ、会員登録することでメッセージを投稿できるようになるといった感じです。

##会員登録
会員のお名前、メールアドレス、パスワードを入力します。
会員登録する際に、空欄があったり、既に登録されている会員だったり、パスワードが3文字以下だった場合は、エラーメッセージを表示するようにしました。
![sampleapp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606851/1c4d647a-d384-662d-b7cc-4726b9729e86.gif)

##ログイン機能
メールアドレスとパスワードでログインができるといったシステムです。
ログインでも空欄があったり、登録されていない場合などはエラーメッ

元記事を表示

Nginxのエラー「413 Request Entity Too Large」の対処

###問題
Nginxを使ったアプリにおいて少し大きめのファイルをアップロードしたところ、このようなエラーが
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/f37adc39-e0c7-ad3b-a813-3270a3e79ae6.png)

ファイルサイズが大きすぎるためこのようなエラーが出るようです。

Nginxはデフォルトでは最大のアップロードのサイズが1MBとなっているようです。

###対処法
####Nginxの設定を変更
自分は環境構築にDockerを利用しているのでdocker/nginx/default.confを編集します。

“`conf:default.conf
server {
listen 0.0.0.0:80;
server_name localhost;
charset utf-8;
client_max_body_size 10M; #追加
“`
serverブロック内にclien

元記事を表示

正規表現で制御文字以外とマッチさせる方法(in PHP)

※半角スペースは制御文字に含めない

“`php
preg_match(‘/\A[^\x00-\x1f\x7f]+\z/’, $text)
“`

参考: https://kanonji.hatenadiary.com/entry/20100226/1267173195

元記事を表示

lockファイルがコンフリクトしたときの対処法

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪ ---- ------------------- ↓ 余談はここから ↓------------------- lockファイルでインストールを制御ってのは、 割と理想論だと思っている。 まぁ、それはいいとして、 lockファイルをコミットすると、 ほぼ間違いなくコンフリクトする。 そんなときの対処法を残しておこう。 ---- ------------------- ↓ 本題はここから ↓------------------- ## composer.lock コンフリクトを適当に解消して以下のコマンドを打つ ``` $ composer update --lock ``` ## package-lock.json コンフリクトした状態のまま以下のコマンドを打つ ``` $ npm install ```

元記事を表示

Laravel7 新たに追加された3つのマイグレーションエイリアス

## Laravel7 で追加されたマイグレーションエイリアス

使用できるカラムタイプのエイリアス

– `id`
– `foreignId`

外部キー制約のエイリアス

– `constrained`

上記の3つのエイリアスが追加されてます。

## 環境

“`
$ php artisan -V
Laravel Framework 7.2.2
“`

## 使い方

“`php
Schema::table(‘posts’, function (Blueprint $table) {
$table->id();
$table->foreignId(‘user_id’)->constrained();
});
“`

上の定義は、下記のように定義したのと同じ内容になります。

“`php
Schema::table(‘posts’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->unsignedBigInteger(‘user_id’);
$t

元記事を表示

PHPStormでクラスのnamespaceを移動する

以前 [PHPStormでnamespaceを一括変更](https://qiita.com/kazuhei/items/fc52a27706db30b64ff7) でディレクトリの移動にあわせてnamespaceも一緒に移動する方法を書いたのですが、今回はクラスを特定のnamespaceに移動させる方法です。

PHPStormでファイルを開き、クラス名にカーソルを当てた状態でF6キーを押すと、
namespaceの移動のダイアログが出ます。

phpstorm.jpg

Move Class 〇〇 to namespaceのところを編集して保存するとクラスのnamespaceとあわせてファイルのディレクトリも移動します。

元記事を表示

PHP Intelephense の有償版を Neovim で使ってみる

[PHP Intelephense](https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client) は PHP の Language Server の一つ。
VS Code での利用例は

– [VSCode PHP用のインテリセンス拡張機能は「Intelephense」の方がオススメ! │ wonwon eater](https://wonwon-eater.com/vscode-php-intelephense/)
– [VS CodeのPHP Intelliphenseがとても心地よくコードを補完してくれる件 \- Qiita](https://qiita.com/motuo/items/1600ca1fc4e8dd6a19f2)
– [VSCode で PHP 開発するならインテリセンス最強の intelephense を使おう \| 株式会社ビヨンド](https://beyondjapan.com/blog/2020/02/intelephense-vscod

元記事を表示

Mac Catalina 10.15 に、古いバージョンのPHPをインストールする

# Mac Catalina 10.15 に、古いバージョンのPHPをインストールする

CakePHP2のアプリを修正依頼が合ったが、Mac Catalinaではhomebrewに
もう古いバージョンが無く・・・

(なんでそんなに古いまま、ほっといたんだよってツッコミはなしで、、、)

brew tap exolnet/homebrew-deprecated
でも、php 5.6

どうしても、php5.5を入れたいと調べてたら、binary packageを入れる方法がありました。

https://php-osx.liip.ch/

PHP 5.3〜PHP 7.3がある

## インストールする

“`
curl -s https://php-osx.liip.ch/install.sh | bash -s 5.5
“`

## pathを通す

“`
export PATH=/usr/local/php5/bin:$PATH
“`

元記事を表示

Phoenix LiveViewでもPHP的に気軽なWebアプリ開発ができるんです

[fukuoka.ex/kokura.ex](https://fukuokaex.connpass.com/)のpiacereです
ご覧いただいて、ありがとうございます :bow:

[前作のPHP的気軽さでWebアプリを作る方法](https://qiita.com/piacerex/items/25c82153976dcb6d57c1)を、今度はLiveViewでも展開してみたいと思います

前作同様、LiveViewにおいても、ルーティングは不要になります

なおLiveViewでは、パラメータ渡しによるMPA(Multiple Page Application)的ハンドリングでは無く、handle_event()等によるSPA(Single Page Application)的イベントハンドラが中心となるのですが、ここでは、できるだけMPAのようなテイストになるように作ってみます

LiveViewでのSPAフォーム開発に抵抗が高い方もまだまだ多いんでは無いかと思いますが、このスタートだと案外、気楽になれるかもです

# 本コラムの検証環境

本コラムは、以下環境で検証していま

元記事を表示

【Laravel7.2】Migrationを用いてテーブルを作成。Seederを用いてデータを投入する

# 前提環境
Laravel7.2環境を構築。Welcome!画面が表示された状態から開始。
その他、DBの設定等も済み。詳細は以下参照。

【準備編】https://qiita.com/katsuhito_01/items/db5b9581a2b6af6dc803
【導入編】https://qiita.com/katsuhito_01/items/439e3af4cea8ff00832c

# Migrationを用いてテーブルを作成
まずはMigrationを用いて参照するテーブルを作成する。今回は都道府県マスタを作成。

### Migration作成
Laravelプロジェクトのディレクトリ内にて、以下コマンドを実行

“`
# php artisan make:migration create_mst_prefectures_table
Created Migration: 2020_03_22_163920_create_mst_prefectures_table
“`
すると、database\migrations\日付_create_mst_prefectures_

元記事を表示

OTHERカテゴリの最新記事