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

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

?XdebugでStep Debuggingしよう!

この記事は[ミライトデザイン Advent Calendar 2021](https://qiita.com/advent-calendar/2021/miraito-inc)の4日目の記事です?
昨日は[@Nyokki](https://qiita.com/Nyokki) 大先生の[MySQLのEXPLAIN ANALYZEの読み方を勉強したよ](https://qiita.com/Nyokki/items/c2d95cb2a75d3c0acb64) という記事でした!
皆さん読みましたよね!?

なんでお前がミライトデザインのアドベントカレンダー参加してるんや!?って思うかもしれませんが

> エントリーは自由です、社内外の人たちと盛り上げていきたいです。

って書いてあったし、[@hirodragon112](https://twitter.com/hirodragon112)ファンなので参加しましたw

さて、何を書こうか迷っていましたが、ミライトデザインといえばPHPってイメージが強いのでPHPネタということでXdebugのことを書こうと思います。

最近の[若いエンジニ

元記事を表示

コマンド解説:今何やったの?

雑な投稿ですが、
環境構築とかで迷ってる人の助けになればと思います。

projectという、オープンソースのパッケージをダウンロードした前提です。

“`
$ cd project

$ cd ← ホームディレクトリに戻る
$ cd project ← projectフォルダへ移動する。
$ pwd ← 自分が今ドコにいるのかを確認する。
“`

「cd」でFinderで言う所の「フォルダ移動」です、
自分がどのフォルダを今触るかを変えます。

ちなみに、入力が面倒な時は「cd 」と入力した後で、Finderで移動したいフォルダを
ターミナルにドラッグ&ドロップすると、カンタンに入力できます。

“`
$ rm -f .gitignore
$ rm -rf /directly ←ディレクトリを削除する時
“`
上は「`.gitignore`」を削除するコマンドです。`-f`は確認なしで削除する意味です。
`rm` は「remove」で、 `-f` は「force」の頭文字。

“`
$ git init
`

元記事を表示

「いつものパターン」にこだわらず実装方法を自由に検討してみた

[WordPressアドベントカレンダー](https://qiita.com/advent-calendar/2021/wordpress)4日目の投稿です。

## これはなに?
「おすすめ記事一覧をTOPに表示する」という、よくある機能をいろんな方法で実装できないかと検討してみた記事になります。
自分はコードを書くことが好きですが、仕様に対してどんな実装方法が一番良いのだろうかと検討する時間も好きです。
この記事では最初から選択肢を絞らずに広い視野で実装方法を検討して、実装してみた内容をまとめています。

### 実装方法を複数検討するメリット
– 柔軟な対応ができる
– スキルアップになる

例えば想定していた実装方法では上手く行かないと気付いた際に、事前に検討していた2つ目の案に切り替えることで柔軟な対応ができる

いつもと違う実装を検討することで新しいロジックや機能に触れる機会が増える。新しい知識を身につけることで当たり前だと思っていた実装方法にも改善点を見つけられることでスキルアップしていく。

## 実装方法
それでは「おすすめ記事一覧をTOPに表示する」機能を実装

元記事を表示

php: いろいろなリダイレクト

リダイレクトしたいURL
https://sample.domain/xxx

https://xxx.jp

#★PHPでかく場合
“`php
/**
* @Route(“/xxx”, name=”xxx”)
*/
public function index()
{
header(‘Location: https://xxx.jp’, true, 301);
exit;
}
“`

#★Symfonyで書く場合

“`php
/**
* @Route(“/xxx”, name=”xxx”)
*/
public function index()
{
return $this->redirect(‘https://xxx.jp’, 301);
}
“`

#★.htaccess でやる場合

“`
(Rewrite Engine on の下に追記する)
RewriteCond %{QUERY_STRING} ^$

元記事を表示

【Laravel】Str::isでは改行を扱えませんよという話

# 環境

PHP 8.0
Laravel 8.x
Docker(Laravel Sailで構築した環境を使っています)

# 目的

Laravelのヘルパ関数Str::isを使っていてハマった時の備忘録にすること

# Str::isって何よ?

ある文字列Aの中に、別の文字列Bが含まれているかどうか判定してくれるヘルパ関数です。いくつか例を挙げておきます。

“`PHP
use Illuminate\Support\Str;

$matches = Str::is(‘foo*’, ‘foobar’);

// true

$matches = Str::is(‘baz*’, ‘foobar’);

// false
“`
引用元(一部改変):[Laravel 8.x ヘルパ Str::is](https://readouble.com/laravel/8.x/ja/helpers.html#method-str-is)

# ある日のこと…

しゃっちょさん「キーワードの判定が改行に反応してくれないんだけど…」

私が参画していたプロジェクトでは問題のStr::is関

元記事を表示

ファミレスのメニューもどき管理画面を作ってみた

**下記サンプルサイトは同じDBから書き出したメニュー注文ページです。**
[▶︎サンプルサイト](https://mymenu.okamechan.com/menulist/)

**下記の記事の続きです**
[▶︎ファミレスのメニューシステムもどき作ってみた](https://qiita.com/kanrek_jyosi/items/22950ac280e6bb3a5d02)

**やりたいこと**

+ DBの連携、入力、変更、削除をブラウザで操作
+ 画像アップは別フォルダへ
+ DB一覧書き出し
+ バリデーションで同じ名前と画像はアップさせない

**作成ファイル**

+ index.php(ログイン画面)
+ logout.php(ログアウト画面)
+ control_top.php(トップページと追加入力)
+ change.php(変更UPDATE)
+ change_check.php(UPDATEのバリデーション)
+ delete.php(削除)
+ db_join.php(インクルード用、DBの接続や共通で使う関数と配列を格納)
+ select_cat.

元記事を表示

ajaxでControllerに飛ばした処理がDELETEだけ動かない

#はじめに
 この前、ajaxを使用し、画面内でデータ更新を行う処理を作成しました。
 その際、新規(CREATE)と更新(UPDATE)の処理は動くのに削除(DELETE)の処理だけなかなか動かずに時間を取られてしまったので備忘録です。

#結論
 結論から先に言います。
 新規や更新処理の時にエラーチェックで使用していたRequestの判定を削除処理でも使いまわした結果、削除処理では使用していなかった引数のチェック処理が勝手に走っていたため、インスタンスエラーが起きていました。

 原因をいろいろ探しまわった時に、DELETE処理はajaxのPOSTでは飛ばないというような記述があり、データの飛ばし方に拘っていた結果、気づくのが遅れた初歩的なミスでした。

 ちなみに返ってきていたエラーは422エラーでした。
 動き自体は正しいのですが、Request処理が内部的に処理できなかったためこのエラーが返ってきていたのかなあと思います。

#コード

 新規・更新処理時に使っていたコードがこれです。

“`javascript:hogehoge.js
// 新規・更新
$.ajax({

元記事を表示

PHPでNoSQLデータベース(簡易)を作る

# はじめに
こんにちは。初投稿のまろという者です。
Qiitaでは主にPHP系の投稿をしていこうと思ってます。
今回は、PHPでNoSQLのDBMSを作るわけです。
XMLじゃなくてJSONを使います。

# 概要
– NoSQLのDBMS
– JSONを用いる
– データをそのまま保存

# コード
いきなりコードです。

“`php:dbms.php
path = $path;
}
// ファイルパスの変更関数
function PATH($path){
$this->path = $path;
}
// ファイル内容を変換して取得
function GET(){
return json_decode(file_get_contents($this->path), true);
}
// ファイル内容を変換して書き換え

元記事を表示

コマンド上でphpコマンドを実行できるようにする(Windows)

PHPのPATHを設定する

PATHとは

PATHとは、コマンドを実行したときに読み込まれるファイル階層の設定です。

本来、プログラムをコマンドで実行する場合は、そのプログラムの保存場所を含めて書く必要があります。今回設定するXAMPPのPHP(C:xampp/php)を使用する場合は

C:xampp/php (続けて、実行内容やオプションなど)

と入力する必要があります。

これをWindowsの場合は、『システム環境変数』というWindows側で把握しているコマンドのブックマークに登録し、プログラム名だけで実行できるように設定することができます。(登録することをPATHを通すと言います。)

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にメニューを入れる管理システムも作ってみました。
[▶︎ファミレスのメニューもどき管理画面を作ってみた](https://qiita.com/kanrek_jyosi/items/252cf415c11769bd2e11)

下記が相関関係図です。
![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です

元記事を表示

[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のソースコードの品質管理はどのように実施していますでしょうか。

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

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

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

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

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

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

元記事を表示

OTHERカテゴリの最新記事