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

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

Laravelでphp artisan系コマンドを実行すると、「Could not open input file」と表示される。

php artisan系コマンドを実行した際に、「Could not open input file」と表示された際は、
自分のLaravelプロジェクトディレクトリ配下に移動していないことが原因と考えられます。

なのでcdコマンドで移動してから、再度php artisan系コマンドを実行してみて下さい。

元記事を表示

PHP Unix タイムスタンプを取得する

:::note info
この記事は[miriwoお一人様 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/miriwo)の10日目の記事です
:::

# 概要

– PHPにて現在時刻のUnixタイムスタンプを取得する方法をまとめる。

# 方法

– 組み込み関数の`microtime()`を使う。
– 下記の様に記載すると完全な実行時のUnixタイムスタンプを返す。

“`php
microtime();
“`

– 当該関数に特に引数を渡さないと下記の様にmsecとsecの値が返される。secは1970年1月1日の0時00分00秒からの経過秒数、msecは更に細かいマイクロ秒部分を表しているらしい。
– デフォルトだと`msec sec`と返されてしまい、マイクロ秒も含むUnixタイムスタンプ値を取得したいときは戻り値の2つを連結する手間などがある。
– そんな時は引数にtrueを与えよう。`sec.msec`のように値を連結し、少数点の値でタイムスタンプを取得する事ができる

元記事を表示

座標と向きについて

# 前書き
https://github.com/pmmp/PocketMine-MP

PocketMine-MPというオープンソースソフトウェアを用いるとプラグインという形でModのようなものが開発・導入できるようになり、それを用いた画期的なサーバーやプラグインが今、世界中に転がっています。そんなプラグインは、プレイヤーの動きを制御したり、オリジナルなMobを製作したりと、多種多様です。
今回はそのなかでもプレイヤーの動きを制御する座標関係の面にフォーカスして書き綴っていきます。

:::note warn
ここから先はPocketMine-MPのAPIの関数などを出しつつ解説していきます。
:::

 
# 前提事項の確認
Minecraftの世界では三次元空間が用意されており、その空間内でプレイヤーが移動したりしています。
首の向きや角度は $x-z$ 及び $xz-y$ 平面に落とし込んだ際の極座標として考えられます。
## X, Y, Z
![qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

ミノ駆動本を読んで、保守しやすい成長し続けるコードを書ける自分になる。 – 第1章 悪しき構造の弊害を知覚する

# はじめに

現在、 **[#ミノ駆動本](https://twitter.com/hashtag/%E3%83%9F%E3%83%8E%E9%A7%86%E5%8B%95%E6%9C%AC?src=hashtag_click)** こと **『良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方』** を読み進めています。

https://gihyo.jp/book/2022/978-4-297-12783-1

今回は、 **「第1章 悪しき構造の弊害を知覚する」** を読んで学んだ内容について記事にします。
第1章でまずは悪い例を知りましょう、という位置付けの章です。

ただ読むだけでなく、以前取り組んでいたブラックジャックのソースコードを練習の舞台(良い具合に修正が必要なコードに仕上がっているはず…)として、ミノ駆動本で学んだ内容を元にチェック、修正するというアウトプットをしていこうと思っています。

https://qiita.com/ryamate/items/f77efb0888bb025e5f5b

ブラックジャックの PHP で書いたソー

元記事を表示

よく使うクラスをサクッと作成、”Maker Bundle”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の10日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、S

元記事を表示

サービスをAzureからGCPに移行した話

:::note info
“[ゆるWeb勉強会@札幌 Advent Calendar 2022](https://adventar.org/calendars/7513)” 9日目の記事です。
:::

# サービス移行の経緯

[2022年11月28日をもってPHP7.4がEOL](https://www.php.net/supported-versions.php)となりました。さらに以降のPHP8からはWindowsでのサポートがされないようになりました。

Azure App Service(Windows)でもPHP7.4以降のランタイムは選択できず、さらにAzureはEOLとなったバージョンを積極的に廃止しているので、サービスがダウンしないように対応する必要がありました。

ここでGoogle Cloud Platform(以後 GCP)に移行することになったのは、かねてからAzureのオートスケールの速度に不満があり、社内で「Google App Engine(以後 GAE)の方が速い」という実績があったので、GCPに移行を目指すことになりました。

ちなみにその時の私は

元記事を表示

PHPとは?用途は?メリット・デメリットを解説!(初心者向け)

私はPHPエンジニアになってまだ5年目。
周りには10年続けている人もいたりして、つよつよエンジニアが多い印象を受けている。
そのため5年PHPエンジニアやっているだけでは「まだまだ」だと思う。

PHPエンジニア界隈ではひよっ子レベルの私だが、今回は皆さんにもPHPの面白さを分かってもらいたいので、PHPとは何か?という簡単なところから、どんなことができるのか?といった基本的なことを書いていきたいと思う。

また、デフエンジニアの会も学生や社会人になって間もない方々も何人かいるため、彼らにも分かるように書いていきたい。

# PHPとは
では、PHPとは何か。
Wikiによると、こう書いてある。

>”The PHP Group” によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページを作成するための機能を多く備えていることを特徴とする。

このことからも分かるように、PHPは主にWEB周辺で使われることが多いように思われている。
実際、PHPはもともと最初から動的なホームページを作るために

元記事を表示

徳丸本2版の実習環境をDockerに移植した話

# はじめに
拙著「[安全なWebアプリケーションの作り方 第2版](https://www.amazon.co.jp/dp/4797393165/)(以下、徳丸本と略記)」では、脆弱性を読者が試せるための実習環境を提供しています。書籍でご案内しているのは、VirtualBox上のバーチャルイメージとして提供する形式で、中身はDebian9上で動くウェブアプリケーションです。VirtualBoxを採用した理由は、WindowsとMacの両方で無料利用できるからです。
しかし、2020年にApple SiliconのM1 Macが登場し、当時Virtual BoxがM1 Macに対応していなかった[^1]ことから、M1/M2 Mac上で実習環境が使えないという問題が起きました。有志の方が、[Apple Silicon Mac(M1 Mac)で徳丸本の実習用仮想マシンを動かす – Qiita](https://qiita.com/bamboo_and_tyre/items/2e5dd35d0b03235e9ed9)などの記事を公表いただいたりしたものの、設定が大変などハードルの高いものであ

元記事を表示

DoctrineとEloquent比較大全9: 複雑な条件での絞り込み(1) QueryBuilder

day9の今日は複雑な条件でレコードを絞り込む書き方を見ていきます。

## Doctrine

“`php
$books1 */
$books1 = $entityManager->getRepository(Book::class)
->createQueryBuilder(‘b’) // aliasは何を設定しても良い
->where(‘b.price < :max_pric

元記事を表示

【PHP】+(plus)プラス記号をつけたい

# コード
“`PHP

元記事を表示

【PHP】【str_replace】でforeach() 不要論

# コード
“`PHP

元記事を表示

xdebug3.2.0でphp7がサポート対象外になったのでDockerfileを直した

# 概要
Xdebug最新版はphp7をサポート対象から外した
よってphp7環境を構築するときはXdebugは3.1.6以前を指定しなければいけなくなった
それに伴ってローカル開発環境のDockerfileを直した

# 本文

## ビルドが失敗するようになった

ローカル開発環境を再構築する必要があったので docker-compose up したところ、エラーが出てました。

“`:log
> [ 5/17] RUN pecl install xdebug && docker-php-ext-enable xdebug:
#9 5.238 pecl/xdebug requires PHP (version >= 8.0.0, version <= 8.2.99), installed version is 7.3.29 #9 5.238 No valid packages found #9 5.238 install failed ``` xdebugはphp8以上じゃないとだめ!というエラー。 いつの間にそんなことに。 https://xdebug.org/annou

元記事を表示

SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: ‘1988’ for column ‘created_at’ at row 1

SQLが悪そうなので、

試したこと

SQLの 「created_at 」のタイプを「date」 →「timestamp」へ変更

「date」 とは
”1000-01-01 00:00:00″から”9999-12-31 23:59:59″
・年、月、日、時、分、秒を持ちます。ミリ秒がありません。
・文字列をDate型にするには、TO_DATE関数を使用します。
・Date型を文字列にするには、TO_CHAR関数を使用します。

「timestamp」とは
・”1970-01-01 00:00:01″UTC から”2038-01-19 03:14:07″UTC
・年、月、日、時、分、秒、秒の小数部を持ちます。
・文字列をTIMESTAMP型にするには、TO_TIMESTAMP関数を使用します。
・TIMESTAMP型を文字列にするには、TO_CHAR関数を使用します。
・TIMESTAMP(6)の6は、小数部の桁を意味します。

画面上
mysqlのタイプを「date」にすると「 2000-04-18 」となります

mysqlのタイプを「timestamp」にすると「 198

元記事を表示

LOAD DATA LOCAL INFILEで気を付けること(DBからCSVに書き出してDBにロードするとき)

この記事は[Qiita x Code Polaris共催!女性ITエンジニアが作るアドベントカレンダー Advent Calendar 2022](https://qiita.com/advent-calendar/2022/qiita-code-polaris)の9日目の記事です。
Qiita初投稿です。このカレンダーに参加することで背中を押してもらい記事を書くことが出来ました。ありがとうございます。
実務半年ほどのよわよわエンジニアなので認識違いなどありましたら指摘いただけるとありがたいです。

# 概要
業務の中で大量データ(最大で40万件ほどのレコードのテーブル)をMySQLの旧DBから新DBへ移行する機会があり、`LOAD DATA LOCAL INFILE`を使ったのですが、その時一筋縄ではいかず苦労したので、備忘録もかけてこの記事を書きました。

# この記事で伝えたいこと
– `LOAD DATA LOCAL INFILE`がざっと何をするのか
– `LOAD DATA LOCAL INFILE`でデータをロードするときに気を付けること
– DBのデータをCSVに書き出

元記事を表示

【Laravel】ScribeでAPIドキュメントを作成

Laravel Advent Calendar 2022 9日目の記事です。
Laravel+ScribeでAPIドキュメントを作成する方法をまとめました。

https://qiita.com/advent-calendar/2022/laravel

## はじめに
小規模ですが、フロント・バックエンドのチームに分かれて開発をしています。
フロント側の人から「APIの仕様がまとまっていたら助かる」という声をもらい、APIのドキュメントについて調べたところ、今回のScribeを見つけ実装しました。
本記事では、途中つまったところに重点を置いてまとめます。
## 環境
* PHP 8.1.5
* Laravel 9
* Laravel Sail
## 使用したライブラリ
https://scribe.knuckles.wtf/
## 実装手順
こちらの記事に分かりやすく書かれてましたので、参考にさせていただきました。
こちらをご参照ください。

https://aimstogeek.hatenablog.com/entry/2021/07/19/080000#Scribe%E3%81%

元記事を表示

AR.jsを使って恐竜を家に呼んでみた

# はじめに
こんにちは!今回初参加させていただきます。
[CYBIRD Advent Calendar 2022](https://qiita.com/advent-calendar/2022/cybird)、9日目担当の@ayany0_zzZです!:hugging:
前回は@moffunnyaさんの「Terraformを使った環境構築入門(AWS)」でした。

初めての投稿なので、お手柔らかにお願いいたします…!

# 自己紹介
私は、2022年にサイバードに新卒入社いたしました。
ドキドキワクワクの研修期間を経て、現在は:rose:[イケメン王子~美女と野獣の最後の恋~](https://ikemen.cybird.ne.jp/title/prince/original/):rose:のクライアント兼サーバーエンジニアとして開発に携わらせていただいております!
ちいかわとポケモンとゲームが大好きなひよっこエンジニアです:hatching_chick::dizzy:

最近ではポケモン最新作「ポケットモンスターバイオレット」で、色違い集めに励んでいます。
目標は、

ValueObjectについてまとめてみた

案件の中で、Value Objectを使用している箇所がいくつかあったのでまとめました。

**Value Object(バリューオブジェクト) とは、**

– 値をクラスにすること
– 値を変更したくなったら、バリューオブジェクトごと置き換えること
– どの箇所からでも再利用できること(バリューオブジェクト内のデータを使うので、データの値を担保できる)

と自分は認識しています。

例として、Userモデルを挙げます。
| Userモデル |
| ———- |
| id |
| name |
| tel |

`name`はその人の名前を表すものなので、バリューオブジェクトにする必要はないと思います。
下記あたりが、バリューオブジェクトにしやすいものと思います。

– CRUDするときに、変な値で登録させたくないもの
– typeが存在するもの(性別や、血液型など)

例として、Userモデルの中の、`tel`をバリューオブジェクトにしてみます。

“`php

Auth0を使ってSSOの流れを確認してみた

## はじめに
この記事は[OPENLOGI Advent Calendar 2022](https://qiita.com/advent-calendar/2022/openlogi)の9日目の記事です。

業務と全く関係ないのですが、今回は個人的に気になっていたSSOの具体的な流れについて手元で環境を作り処理を追っていきたいと思います。
[Auth0](https://auth0.com/jp)や[SSO](https://auth0.com/blog/jp-sso-login-key-benefits-and-implementation/)、またその他利用しているツール類の説明は、詳しく解説されてる記事がありますので割愛させていただきます。

## 概要
SSOの分かりやすいフロー図が[Auth0 blog](https://auth0.com/blog/jp-sso-login-key-benefits-and-implementation/)にありますので、Auth0を使ったSSOの1〜13までの流れを確認します。
![typical-sso.png](https://q

PHPで書いたブラックジャックのコードをレビューしてもらって、リファクタリングしたこと3選♠️

# はじめに
下記の記事執筆していたとき、ブラックジャックのソースコードについて、以下の課題がありました。

> 機能としては完成させて、やり切った思いはあります。ただ、もっとこうしたら良くなるという、自分では気付かないことが多々あるはず…という状態なので、第三者にコードレビューをしてもらう機会を得ようと思います。
>

https://qiita.com/ryamate/items/f77efb0888bb025e5f5b

今回、コードレビューしてもらう機会を得たので、レビューに基づいてリファクタリングしました。

ちなみに、PHPで作ったコンソール画面で操作するブラックジャックゲームのソースコードです。
![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/8a00bf37-8060-b3b8-e124-080b427009ba.gif)

## 自己紹介

– 私は公務員からWebエンジニアに転向して、 2 年目に入ったところです。
– 1 年目は、研修 3 ヶ月、

HTMLテンプレートを扱う、”Twig Bundle”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の9日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy