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

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

PhpStormでCodeShinifferを利用し、カスタムルールを読ませる。

# CodeShiniffer追加まで
https://qiita.com/reflet/items/3ddf3cab030a80af4d2a

# カスタムルールの適用
下図の青いPHP_CodeShiniffer inspectionを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272812/f91d6a0c-34ba-ceac-155e-9ebd76b8e30d.png)

Config standardをカスタムに変更する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272812/f1d20108-6399-947b-2536-c604657b476e.png)

config standard横の三点リーダを押し、ファイルを指定する。
適用すると、PhpStormがルールを読み込んでくれます。

元記事を表示

ファミレスのメニューシステムもどき作ってみた

しばらくぶりにシステム作ってみました。
飲食店のチェーン店でタブレットのメニューシステムを見てた時、「作れそうかも」と思ったこと。

ですがPHPはまだまだ初心者。想像しながらの穴だらけ試作システムです。
DBも初めて連携しました。

**やりたいこと**
– DBからメニューを書出し
– メニュー注文機能の作成(追加、変更、削除)
– 検索システム

下記が相関関係図です。
ブラウザからDBにメニューを入れる管理システムも作ってみました。
![relation.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641189/e9740c92-d49a-1709-80ee-42d4969babb4.jpeg)

##トップページ index.php
XDでざっくりデザイン作成後、HTMLとCSSで組み立て。
こんな感じのUIです。
![menutop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641189/4baa

元記事を表示

[CentOS7] 古いバージョンのApacheとPHPを連携するまで

:::note warn
警告
この記事は、前回の記事 を読んだ前提で書いてます。
ご了承ください
:::

[リンク](https://qiita.com/Marny/items/3824eca3b3194ba37f30)

# はじめに

この記事は[[CentOS7]Apacheの古いバージョンの導入とデーモン化](https://qiita.com/Marny/item/3824eca3b3194ba37f30)の続きです。

Apacheインストール終わったけど、PHP使いたくてもできない!!!!!

ってことで一日使いました。無念。。
てか、デフォルトでできない分、普通の設定だとうまく動きません。なので、発生したインシデントと対応についてつらつら書きます。

# 経緯

先日上げた[記事](https://qiita.com/Marny/item/3824eca3b3194ba37f30)では、Apacheのインストール・デーモン化を行いました。
ウッキウキな僕はおもむろにPHPを記述。
Apacheを起動!
ブラウザで確認!!!

何も出ない。

\omg/

yum

元記事を表示

PHP 8.1 がリリース!だけど思わぬ落とし穴も

# PHP 8.1 がリリース!
2021年11月25日に **PHP 8.1** がリリースされました :tada:

https://www.php.net/releases/8.1/en.php

enum の追加や readonly プロパティが設定できるなど、嬉しい機能が盛りだくさんですね。
詳しい内容は既に記事がありますので、ぜひそちらをご覧ください(感謝! :bow: )。

https://qiita.com/rana_kualu/items/e350b8ff80f929626eb9

# Laravel の対応は?
普段は **Laravel** をメインで使っていますので、 **PHP 8.1** の恩恵を受けるためには **Laravel** のバージョンアップをしなければなりません。
Github を見ると、2021/10/22 リリースの `v8.67.0` からサポートされているようです。

https://github.com/laravel/framework/blob/8.x/CHANGELOG-8.x.md#v8670-2021-10-22

元記事を表示

Azure App Service – Web Apps(Windows)に ImageMagick + Imagick + Ghostscript を導入

# はじめに
ImageMagick は言語毎に異なるモジュールや依存関係の複雑さから yum 等のパッケージ管理の仕組みを利用できる Linux 環境での導入・利用が望ましいようです。
Windows 環境への導入は、既に稼働中のサービスへの追加機能開発で必要など、必要に迫られた場合に限るのが無難かと思われます。

本記事は、必要に迫られ四苦八苦 [^1] しながら ImageMagick 等を導入した記録です。

:::note warn
本記事に掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。
:::

[^1]: 今回、32 ビット環境だった為か Azure 拡張機能として用意されている PHP7_64BIT_IMAGICK_6937 は上手く動かなかった。

# 環境

– Azure App Service – Web Apps
– Windows IIS 10.0
– PHP 7.3

# 導入手順
## ImageMagick と Imagick のダウンロード
`phpinfo()` で `Architecture` と `PH

元記事を表示

Viewがない場合のLaravelのデバッグ(ロギング)

API化したコントローラーなどViewのない場合は,
var_dump() や dd() といった関数が使えない

この場合のデバッグの方法はいくつかあるが,手っ取り早くロギング(ログに書き込む)しても大丈夫

LogはLaravelフレームワークの一機能であるため使用する場合は下記を追加し呼び出せるようにする

“`php
use Illuminate\Support\Facades\Log;
“`

あとは下記の通り調べたい変数などを記載

“`php
Log::debug($変数);
“`

#### ログの場所
/storage/logs/laravel.log (デフォルト設定の場合)
(出力先の変更はconfig/logging.phpを書き換え)

ターミナルにログを自動出力できるようにする

“`
$ tail -f storage/logs/laravel.log
“`

ちろんPostmanとか使い勝手の良いテストツールはあるけどね

元記事を表示

PHPMD の ExcessiveClassComplexity (過剰なクラスの複雑さ) を解消しよう

これは [ランサーズ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/lancers) 2 日目の記事です。

DBRE の [まみー](https://twitter.com/mamy1326) です。
DB 相談やサポートをチーム横断、事業横断でやっているのですが、その一環として [PHPMD](https://phpmd.org/) や [PHPStan](https://phpstan.org/) のサポートをしています。

中でも最近 PHPMD にて ExcessiveClassComplexity (過剰なクラスの複雑さ) を指摘される事例が増えてきました。
結論としては **指摘は必ず完全対応を前提に考える** で、例外はありません。

とはいえ理由もよくわからないまま対応を考えるのはしんどいので、実例をエントリーにしてみます。

## 起きていたこと
自分の修正がトリガーとなって PHPMD に ExcessiveClassComplexity (過剰なクラスの複雑さ) を指摘されました。

元記事を表示

色んな思想に触れて、自分の中で納得できるように整理したリファクタリングの指針

# 前述

こちらの記事は、
「[【マイスター・ギルド】本物の Advent Calendar 2021](https://adventar.org/calendars/6579)」の2日目の記事になります。

はじめましての方は、はじめまして。
お久しぶりの方は、お久しぶりです。
私、みたむーと申します。

しばらく技術記事らしい記事を書いていなかったため、
今回は久方ぶりの技術記事になります。

学んだことは数多くありましたが、
その中でも__私が初学者のときに、
こういう記事を読んでみたかったな__と考えた記事を
自ら執筆しているという感じです。

言語は折角ですから、初心にかえって
PHPを選出しようと思います。

# 環境

– OS: Windows
– PHP: 8.0

# リファクタリング -Refactoring-

ところで、あなたは__リファクタリング__はご存知ですか?

まずは、リファクタリングとはそもそも何かを知りましょう。

>__リファクタリング (refactoring)__ とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変

元記事を表示

[PHP] [Laravel] ログ出力

“`php:Controller.php
use Illuminate\Support\Facades\Log;

class Controller
{
public function index(Request $request)
{
$message = ”;
$context = [];

try {
// System is unusable.
Log::emergency($message, $context);

// Action must be taken immediately.
Log::alert($message, $context);

// Critical conditions.
Log::critical($message, $context);

// Exceptional occurrences that are

元記事を表示

【PHP】Facebook広告APIをcurlで操作したい!

#はじめに

今まで広告関係では、

・Google広告のAPI
・Yahoo検索広告
・Yahooディスプレイ広告

について、
**ライブラリを使わず直で叩く!**をモットーに
あれこれ調べ試行錯誤して導入してきました。
YahooはAPIを統一してくれ。。。

APIで使ってきた機能は
広告費やクリック数、インプレッション数などの
レポート情報を取得することと、
入札単価を更新すること。

さて、そんな中、
今回新たにFacebook広告もAPI化したいということで、
運用の方から調査依頼がきましたよ!わくわく!!

調べてみたところ、FacebookのAPIは通称**グラフAPI**というらしい。
2021/12現在の最新バージョンはv12.0。
ドキュメントは[こちら](https://developers.facebook.com/docs/graph-api?locale=ja_JP)

一方、Facebook広告で使いたい機能を検索して
出てくるのは**マーケティングAPI**。
ドキュメントは[こちら](https://developers.facebook.com/

元記事を表示

LarastanでLaravelプロジェクトを静的解析しよう!

# はじめに
[Laravel Advent Calendar 2021](https://qiita.com/advent-calendar/2021/laravel) 2日目の投稿です。
PHPのソースコードの品質管理はどのように実施していますでしょうか。

チームで開発している場合はコーディング規約に従ってコードレビューを実施している場合もあるかと思います。
しかし、コードレビューを人の手で実施している場合は以下のような問題があるかと思います。

# 人力によるコードレビューのつらみ

* レビューに時間がかかる
* 修正コード量が多いと修正差分を見ただけで「うっ・・・」っとなります

* ルール違反していても見逃してしまう場合がある
* ルールが増えれば増えるほどチェック漏れのリスクが増加します

* コードレビューしてくれる人を探さなければならない
* コードレビューできる人が限られている場合、修正したコードがマージされるまでにかなり時間差が生まれることも

* コードレビューできない人をできるように育てないといけない
* 特定のスーパープログ

元記事を表示

Laravel de Lambda

PHP Laravelをサーバーレス化する方法として、[AWS SAM](https://aws.amazon.com/jp/serverless/sam/)を使用した手順は[Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/the-serverless-lamp-stack-part-4-building-a-serverless-laravel-application/)で公開されています。
今回は[コンテナイメージ](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/)化することで、より簡単に`AWS Lambda`上で動かす手順を記載します。

# 前提
## PHPをサーバーレス化するための必須ライブラリ
– [bref](https://bref.sh/)
– 拡張機能
– [brefphp/extra-php-extensions](https://github.com/

元記事を表示

Laravelについて

#Laravelとは
PHPのフレームワークで、webアプリケーションを制作に用いられる。
## 1 MVCモデルを活用している。
MVCとはビジネスロジックをModelが担当し、表示などをViewが処理に、全体の制御を Controllerで行う形態いなる。
## 2パッケージ管理はComposerを行なってくれている。
依存関係などもまとめてインストールしてくれる。
## 3 Eloquent(エロクアント) ORM
 データベスの操作を行なってくれている。
Eloquent Object Relational Mappingの略で、データベースとモデルにリレーションを持たせて、データを柔軟に扱えるようにしたもの。

#Laravelのディレクトリ構成
““`
─── Laravel
├── app
├── bootstrap
├── config
├── database
├── public
├── resources
├── routes
├── stor

元記事を表示

laravel8 Storageファサードのドライバの振る舞い

# 目的

– `Storage::get()`の振る舞いについて若干詰まったので簡単にまとめておく

# Storageファサードの振る舞い

– そもそもStorageファサードは`disc()`メソッドや.envで指定しない限り`config/filesystems.php`の`’default’`で指定されたドライバを参照しにいく。
– ここで言うドライバとはローカルとかS3とかの記憶する「場所」の話である。
– 完全にデフォルトの場合下記のように記載されてlaravelプロダクトのローカルを参照するようになっている。

“`config/filesystems.php
/*
|————————————————————————–
| Default Filesystem Disk
|—————————————————-

元記事を表示

プログラミング初学者が「変数って何なの???」を乗り越えた話

この記事は、2021年4月にプログラミングを始めたわたしが
最初にぶつかった壁である「変数って何なの???」をなんとか乗り越えたよ〜という内容です。
初学者の方で、当時のわたしと同じように悩んでおられる方のお役に立てましたら嬉しいです。



## ■ 最初の壁
プログラミングって何か楽しそう〜と思い、
「プログラミング言語ってこんなにいっぱいあるんだー」とか「フレームワークって何w」とか、
基礎知識ゼロの状態だったわたしが、アハハウフフな気持ちで最初にさわり始めたのはPHP(Laravel)でした。

おそらく初学者の登竜門(?)であるToDoアプリを作り始めるやいなや
ぶつかった最初の壁は、そう、タイトルにも冒頭にも書いたとおり、「変数って何なの???」というやつです。
それはそれはもうめちゃくちゃ検索しました。
`変数とは` `変数って何` `変数とはつまり` `変数 わからない` `変数 意味` etc…

**あああああああ〜調べても調べても書いてあることが理解できない〜〜**

“`php:user.php
‘user_id’ => $user_id;

元記事を表示

Laravel 7.* にbootstrapを導入する方法

Laravelにbootstapを導入する方法

まずは、自分の環境を確認する。

“`php:qiita.rb
$ composer -v
Composer version 2.1.11 2021-11-02 12:10:25

$ php artisan –v
Laravel Framework 7.30.5
“`

環境を確認できたら、実際にLaravelを組み込みましょう。
Laravel6~からbootstrapが使えなくなったので、自身で使えるようにしないといけません。

まずは以下のコードをターミナル上でコマンドしてみましょう。

“`php:qiita.rb
$ composer require laravel/ui
“`

おそらくエラーが起きるのではないかと思います。

バージョンを指定して、インストールする必要があります。
私はLaravel7.30.5ですので、2系にあたります。

“`php:qiita.rb
///1系
$ composer require laravel/ui:1.*

///2系
$ composer require la

元記事を表示

PHPの正規表現を具体例を見ながら紐解いてみる

業務で正規表現に触れる機会があったのですが全くと言っていいほど理解していなかったため、備忘も兼ねて改めて整理してみました。

本記事では正規表現の記法を詳述するものではなく、実際に使用される機会の多いパターンを紐解いていくことで、概要を把握することを目的とします。

より詳しい内容は各種リファレンス等をご参照ください。また今回はPHPでの記法になります。

# そもそも正規表現って何?

ネット上のいくつかの記事を参考にしたところ、共通して抽出できる言葉は以下のようなものでした。

__『正規表現とは、いくつかの文字列を一つの形式で表現するための表現方法』__

文面上では分かりづらいので具体例で考えてみようと思います。

例えば、果物を表すこれらの文字列を一つの形式で表現してみるとどのようなものになるでしょうか?

“`
apple
pineapple
melon
Strawberry
Orange
“`

上記5つの文字列を正規表現で表記すると以下になります。

“`
//果物を示す文字列を正規表現で表記
[a-z]+
“`

以下で説明していきます。

まず[a-z]は

元記事を表示

techpitのlaravel講座の手順通りにやっていたらTarget class [UserController] does not exist.が出た件

techpitのlaravel講座をやっていたら

![スクリーンショット (1622).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/1f81358b-12dd-7807-d556-b1b546718995.png)

とあった。
しかし、ユーザーコントローラーファイルはちゃんとあるし、クラスもある
講座通り進めていたが、誤字などがあると思ったので、今度は講座のコードを完全コピペで試してみた
![スクリーンショット (1622).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281946/1f81358b-12dd-7807-d556-b1b546718995.png)

はい、ダメでした

原因

私のlaravelのバージョンが8で、講座で使用しているlaravelのバージョンが6だった

laravel8とlaravel6では、ルーティングの仕様が変わって違うことが判明(正確には

元記事を表示

まだレビューでそんなやりとりしてるの?PHPStanとPHP-CS-Fixerを導入して楽しよう(Github Actionsを添えて)

# はじめに

`弁護士ドットコム Advent Calendar 2021` 記念すべき1日目?(2年連続)

> 本記事はあくまでも、Laravel MeetUp Okinawa でお話しした内容を記事にしたものになります。

# 本題

突然ですが、レビューでこんな事を言われた/言った経験はないだろうか。

**「インデント!!これもう指摘するの3回目!!」**

**「ここの変数未定義だし、ここも型合ってないよ!!」**

……………
…………………………
………………………………………

`指摘された側` はその場では反省して、気をつける事だろう。
しかし、所詮は人間。同じミスはしてしまう。

`指摘する側` も同じことを注意するのは面白いものではないし、
何よりロジックや設計のレビューに集中してレビューしたい。

# 静的解析と自動整形を導入してみない?

そんな時に `静的解析` と `自動整形` の導入を検討してみよう。

# 静的解析(PHPStan)

プログラムコードを実行せずにドキュメントやソースコードなどのチェックによって誤りや脆弱性を検出するテスト手法。

元記事を表示

1年半振りのメジャーバージョンアップ(予定)!Laravel9の新機能ピックアップ!

[Laravel Advent Calendar 2021](https://qiita.com/advent-calendar/2021/laravel) 1日目の投稿です。
来月(2022年1月)、1年半ぶりのLaravelのメジャーバージョンアップするのでLaravel9の主要な変更点をまとめてみました。

## リリース日

– Laravel 8: 2020年9月
– Laravel 9: 2022年1月(予定)
– Laravel 10: 2023年1月(予定)
– Laravel 11: 2024年1月(予定)

[Symfony6.0](https://github.com/symfony/symfony/releases/tag/v6.0.0)が2021年11月30日にリリースされました。それに伴ってLaravel 9のリリースが2022年1月に延期されています。
また、Laravel 9以降は半年周期のメジャーリリースが1年周期になっています。

|Version|PHP (*)|Release|Bug Fixes Until|Security Fixes Unti

元記事を表示

OTHERカテゴリの最新記事