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

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

まだレビューでそんなやりとりしてるの?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年周期になっています。

## インストール要件

最低でも PHP8.0 以上である必要があります。
Laravel 9の内部でSymfony

元記事を表示

Laravelでポケモン図鑑をつくってAWSでデプロイまでしてみた

[株式会社やどかり](http://www.yadokari.tv/)のカイノと申します。
アドベントカレンダーを作ってみんなに書いてください〜って言ってやってもらってる張本人です。

今年もう少しで終わりだー今年もクソお世話になりましたー!

[やどかり&ネッコス Advent Calendar 2021](https://qiita.com/advent-calendar/2021/yadokari_qiita)の1日目を担当させていただきます。
明日は圭ちゃんです

# はじめに
2020年8月に入社して2021年6月までWeb開発をやってました。
2021年の7月からAndroid開発とWeb開発の2足のワラジでやってます。
今年はエンジニアとしてだけでなくマネジメント系の仕事もかなり増えててそっちもめちゃくちゃ面白いのですがやっぱりコード書いている時間は楽しいなとこの開発をしている時に改めて思いました。

去年も[似たような記事](https://qiita.com/kaino5454/items/e12a0214c76aea6cdc2b)を書いたのですが以前よりはレベルア

元記事を表示

BitbucketからGithub、そして伝説へ…

# はじめに

今年もアドベントカレンダーはじまりました!
この記事はHamee Advent Calendar 2021の1日目の記事です。
Hameeのエンジニアが自分の興味あるテーマについて自由に書いていきます。
毎年一緒に参加して盛り上げてくれる皆さんに感謝です :clap:
今年で7年目の参加となりました!

Hamee開発部は長年Bitbucketを使ってきましたが、つい最近Githubへ切り替えを行いました。

* BitbucketからGithubへの移行の仕方の説明
* Bitbucket PipelinesからGitHub Actionsへの移行の仕方の説明

これらについてまとめていきたいと思います。

# BitbucketからGithubへの移行

こちらの記事が大変参考になりました。
[2段階認証有効のBitbucketからGitHubにリポジトリをインポートする](https://ryuta46.com/1249)
Githubの[インポート用ページ](https://github.com/new/import)にBitbucketのリンクを指定してインポ

元記事を表示

【PHP8.1】PHP8.1がリリースされたので新機能全部やる

[PHP8.1](https://qiita.com/rana_kualu/items/e350b8ff80f929626eb9) / [PHP8.0](https://qiita.com/rana_kualu/items/c110cb244c3ee38c6859) / [PHP7.4](https://qiita.com/rana_kualu/items/50f9f5735321fe995ff5)

2021/11/26にPHP8.1.0が[リリースされました](https://www.php.net/)。
大きな新機能については、PHP8.0以降公開されるようになった[ランディングページ](https://www.php.net/releases/8.1/en.php)で見ることができます。

ここでは、概要ではなく[UPGRADING](https://github.com/php/php-src/blob/php-8.1.0/UPGRADING)に載っている変更点を全部見て回ることにします。

# Backward Incompatible Changes

下位互換性のな

元記事を表示

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = hogehoge and table_name = migrations and table_type = ‘BASE TABLE’)

# 前提
・Mac m1チップ
・Laravel8系
・MySQL8系
・PHP7系
・envファイルに正しくDB情報を書いた。 ← ここまでちゃんと切り分けしましたか?

#補足:.envに正しく書いたらしいことを確認する方法
・ターミナルで下記を打って、パスワードをちゃんと入力して入れますか?

“`php
mysql -u 書いたユーザー名 -p
show databases;
“`

・下記コマンドを打って、対象DBをちゃんと用意したことを確認しましたか?

“`php
show databases;
“`
 → 結果に対象のDB名が出て来れば良い。

・接続先がDockerのMySQLコンテナである場合、別途調べてください。

#注意
・タイトルのhogehogeを接続先となるDB名に置き換えて、もし手元のエラーと等しくないならやらない方が良いかもしれません。DBなので。(とは言っても、やってしまっても大丈夫なよう新規ユーザーを作成するような形にしてます。)

# 解決方法
・利用しているユーザーのパスワードを「mysql_native_password」で変更

元記事を表示

laravel8 超絶簡単なCRUD処理を作る

# 目的

– laravel8にて超絶簡単なCRUD処理を含んだWebアプリを作る方法をまとめる

# 環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Big Sur(11.6) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.11 | Homebrewを用いてこちらの方法で導入→[Mac HomebrewでPHPをインストールする](https://qiita.com/miriwo/items/cd54077aad7e139cf518) |
| Laravel バージョ

元記事を表示

property_exists()でstatic|selfを使う

##はじめに
静的クラス(関数)で自身のクラスのプロパティが存在するか調べたい、という願いを叶える記事です。

##解決
普通に書くとこうなります。

“`php:ダメな例
public static function existsFoo() {
return property_exists(static, ‘foo’);
}
“`

しかし、この状態だとこんなエラーが出ます。

>syntax error, unexpected token “,”, expecting “:”

もう答えは書いてありますが、さっぱりわからない、という方もいると思います。

まずは、正解をご覧ください。

“`php:正解例
public static function existsFoo() {
return property_exists(static::class, ‘foo’);
}
“`

`static`に`::class`を付け加えました。

>::classとは
> class キーワードでもクラス名の解決を行うことが出来ます。 クラスの名前が ClassNam

元記事を表示

Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ

# Nikita、会社辞めるってよ

https://externals.io/message/116475

“`text
The first is that I’m changing jobs at the end of the month, and won’t be working on PHP in a professional capacity anymore.
I’ll still be around, but will have much less time to invest in PHP development.

今月末で転職するため、今後仕事としてPHPに関わることはなくなります。
今後も活動は続けますが、PHPに関わる時間はずっと少なるでしょう。
“`

Nikita Popovは、ここ数年のPHPエコシステムを主導してきた人物です。

それまでもボランティアで[年間1000以上のContribute](https://github.com/nikic?tab=overview&from=2018-12-01&to=2018-12-31)をしていたのですが

元記事を表示

PHP sort array by key

“`php
$name = array_column($projects, ‘name’);
array_multisort($name, SORT_ASC, $projects);
“`

元記事を表示

MAMPでローカルDB開発環境(確認編)

このページでは、下記の内容を解説していきます。

  • Laravelで作成したページを確認する
  • ターミナルでMAMPのMySQLにログインする方法

MAMP環境にLaravelを制作された方は、このページを参考に、それぞれブラウザで開いて確認してみましょう。

Laravelで作成したページを確認する

Laravelでは、artisanコマンドでビルトインWEBサーバーを起動することができます。
まず、Laravelの中にcdコマンドで移動します。

ターミナルで以下のコマンドを入力して下さい。

cd /Applications/MAMP/htdocs/Laravel

続けて、サーバーを起動します。

元記事を表示

【WordPress】Ajaxでデータを送信する方法

WordPressに対してajaxでデータを送信する方法を、ご紹介したいと思います。
POSTで送信する方法を例に挙げて書いていますが、GETでも同じことが可能です。

## 環境
WordPress 4.9.18
PHP 7.0.27
jQuery 2.2.4

## 受け取り側の実装
まず、WordPressがajaxリクエストを受け入れるために任意のaction名を名前の末尾にもつアクションフックに、リクエストを受け取った時に実行されるコールバック関数を登録する必要があります。
アクションフック名の書き方は「wp_ajax_action名」または「wp_ajax_nopriv_action名」となります。
これら二つのアクションフックの違いは、前者がログインユーザー、後者の方は未ログインユーザーからのajaxリクエストを受け入れるものになります。
両ユーザーからのリクエストを受け入れる必要がある時は両方書く必要があります。

コードとしては以下のようになります。

``` function.php
function ajax_sample () {
$data = $_P

元記事を表示

macOS に phpenv で PHP 8.1 をインストールする

[PHP 8.1.0 が2021年11月25日にリリースされて](https://www.php.net/archive/2021.php#2021-11-25-1)、 phpenv + php-build では2020年11月29日に PHP 8.1.0 が追加された(ちなみに、 [PHP 8.1.0 を追加する PR は私が送った](https://github.com/php-build/php-build/pull/691))ので、早速 macOS にインストールしてみた。

といっても [PHP 8.0 のとき](https://qiita.com/dounokouno/items/0883ff318846072efbc4)と変わらず、下記のコマンドでインストールできた。

```
$ PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv" phpenv install 8.1.0
```

下記のような感じで、問題なくインストールできている

元記事を表示

「例外処理」と「バリデーション」の使い分けを自分なりに理解

# 背景

## 当初の実装

- 以下の一連の処理を実行するプログラム
- 1, 「製品」リストから「注文」ボタン押下
- 2, 同じルートにPOST送信を実行
- 3, 2,のリクエストの中にorder_idを一緒に送る
- 4, そのidをもとに「製品」テーブルからデータを取得
- 5, 4,で取得した「製品」データを「カート」テーブルに格納
- 6, 5,の保存処理が終了すると、「カート」一覧に移動

- この状況で3, での想定外処理であるリクエスト値の書き換えに対して、4, の実装時に例外処理を実装していた
- 例外処理にしていた理由は以下の考えによる
- 基本的にユーザーはここで入力処理をすることはないので、エラーが起きる可能性は非常に低い
- ここでエラーが発生するのは基本的に「ユーザーに悪意がある場合」のみ
- この「ユーザーに悪意がある場合」というのはもはや開発者の想定外の事象

## 開発環境

※注意

状況をイメージできるために書いているので、正常に動くかは検証していないです。ご了承くださ

元記事を表示

PHP で PDO を使用し SQL から取得したデータを表にして見やすくする方法

PDO を使用して、SQL から取得したデータはそのままだと、「ただの文字列。」って感じで読みやすくないですよね。

そこで取得したデータを表にして色付けとかするやり方を解説します。

内容としてはめっちゃ簡単。
しかし僕は 2 時間くらい無駄に彷徨ってたので初心者としてはあるあるな悩みかと思います!

今回は簡易的な本のブックマークアプリを作りました。
SQL からのデータの取得はもちろん SELECT を使用しています。

#Before
それではまずは元のコードを見てみます ↓

```cpp

元記事を表示

php -vで確認したバージョンとは違うバージョンですとエラーに言われて困った話

#### 環境
M1 Macbook Air
MAMP

Cakephpの環境構築過程でcomposer updateを実施したところ下記のエラーが発生。

```
$ composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Root composer.json requires php <8.0 but your php version (8.0.13) does not satisfy that requirement. Problem 2 - phpunit/phpunit[6.0.0, ..., 6.5.14] require php ^7.0 -> your php version

元記事を表示

コアサーバーのDB環境をローカルに再現

#はじめに
 サーバーにサイトをあげる際には、まずローカルのテスト環境で同じものを作って、動作を確認してからサーバーにあげますよね。
 私はレンタルサーバーのコアサーバーでデータベースを使っていますが、テスト環境でも同じ仕様のデータベースを作ろうとしました。ただ、コアサーバーでは独自のコントロールパネルを使って、データベースを作るので、ローカルで同じ状況を再現するのには少々苦労しました。
 ここに、コアサーバーと同一のmysql環境を構築するまでの道のりを記録として残します。コアサーバー使っている少数の初心者の参考にできればと思います。

##環境
サーバー側
コアサーバー :プラン CORE-MINI
DB:mySQL

ローカル側
ubuntu 20.04
DB:mySQL

##①Mysqlへログイン
###ローカル側
```shell
 mysql -u root
#若しくは
sudo mysql
```

###コアサーバー側
写真1「データベースの設定画面」
※個人設定のある枠はぼかしています
![Screenshot from 2021-11-27 17-05-41.

元記事を表示

[PHP] Git Commit 時にコードの整形、静的解析を実行

### プロジェクトに整形ツール、静的解析ツールを導入

```
cd /プロジェクトのパス/
composer require --dev friendsofphp/php-cs-fixer
composer require --dev phpmd/phpmd
composer require --dev phpstan/phpstan
composer update
```

### git commit 時に呼び出されるファイル pre-commit の用意
```
copy .git/hooks/pre-commit-sample .git/hooks/pre-commit
```

### pre-commit の編集

```
vi .git/hooks/pre-commit
```

```shell:.git/hooks/pre-commit
# 指定ブランチへのpush防止
while read local_ref local_sha1 remote_ref remote_sha1
do
if [[ "${remote_ref##refs/heads/}" = "

元記事を表示

WSL2のubuntuにapacheとphpをインストールしてバージョン管理

この記事は、zennに書いた [WSL2のubuntuにapacheとphpをインストールしてバージョン管理](https://zenn.dev/sakots/articles/a4217c84e10a41) のコピーです。

---

さこつです。無事退職しました。

XAMPPのアップデートめんどくさい!でも自分のPC環境でphpのバージョン管理したい!!と試行錯誤した結果、
WSL2のubuntuにapacheとphpをインストールすることになったお話。

## ubuntuのapacheならラクそう

こういう記事があった。[ubuntu20.04.1 phpのバージョンを切り替える](https://mebee.info/2020/08/17/post-16891/)

## そうだ、WSL2のubuntuにapacheを入れて管理しよう

### 1.上記をもとにphpをインストール

ただし、2021年11月27日時点でphp8.1をインストールするとapacheが503エラーで動かなくなるので注意。
7.3、7.4、8.0くらいにしとく。

その後、apacheインスト

元記事を表示

PHP で .txt ファイルから文字列を読み取り、配列に変換し表示させる

プログラミング初心者の Qiita 初投稿なのでヘタクソな文面、ご了承ください。

PHP を習いたてで、下記のような流れで制作していて少しつまずいた点を書いていきます。
1. 「post.php」というファイルで form を作成し「write.php」へ送信
2. 「write.php」から「data.txt」へデータを書き込み
3. 「data.txt」のデータを「read.php」というデータで読み取り

今回詰まったところは上記 3 の手順です!
ということで自分が詰まって、解決まで数時間かかった超しょぼいオチをご覧ください。

まず、「data.txt」は以下のデータが入っております。

```
2021-11-25 06:37:41,たけし,a@g.com,29
2024-6-09 12:08:26,まさる,aghf@aggaag.com,40
```

左から順に「日付, 名前, メールアドレス, 年齢」です。
今回は 2 人がフォームを送ってくれたので、 2 行です。

はい、そして僕が最初に書いたのはこちら ↓

```cpp

元記事を表示

OTHERカテゴリの最新記事