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

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

【Laravel】SOLID 原則の単一責任の原則を取り入れてみた

# 1.はじめに

この記事は「[つながる勉強会 Advent Calendar 2022](https://adventar.org/calendars/7752)」の18日目の記事です。
(1日間違ってしまったのは内緒の話…)

開発に携わらせていただいて約 1 年ほど経ちました。
この 1 年は開発経験を積むということはできました。

ただ、まだまだ良いコードを書けているとは思えません。

最近は、

– 保守のしやすいコードを書きたい
– 理解しやすいコードを書きたい
– 再利用しやすいコードを書きたい

と思うようになり、
アーキテクチャ関係の本を色々と読んできました。

ただ、本を読むだけだと身についてないので、
コードを書き、記事を書きながらアウトプットし、知恵にしていきたいと思っています。

本記事は、SOLID 原則の 5 原則についてキャッチアップしたことをまとめました。

– **単一責任の原則( ← 今回はここ)**
– オープン・クローズドの原則
– リスコフの置換原則
– インターフェース分離の原則
– 依存関係逆転の原則

# 2.目次

[1.はじめに]

元記事を表示

実際のブラウザを使ってリクエスト処理する、”Panther”

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

## 最初に
[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

元記事を表示

初めて書いて感じたテストコードのメリット

[アドベンチャーアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/adventure)の19日目の記事です。

# おまえ誰やねん
株式会社アドベンチャーでサーバーサイドのエンジニアをしている者です。
新卒でエンジニアとして仕事をし始め、2022年4月から、エンジニア3年目の節目に入社しました。日々勉強をしながら、いつの日か強いエンジニアになれる日を夢見て日々仕事をしてます。

# どんな記事か
アドベンチャーに入社してからエンジニア人生で初めてテストコードを書く機会に恵まれました。前の会社ではデバッグ業務をやっていたことはあったのですが、テストコードを書いたことがなく、「どういう観点でテストをするべきなのか」「そもそもテストコードの書き方もわからん」みたいな状態でした。テストコードに関して何もわからない状態でしたが、実際に書いてみるとめちゃめちゃ便利でした。

この記事では「テストコードってこういうところが便利だよ!」 という話を、まだテストに詳しくない人にも伝わるように話して行きます。
「テストコードかくあるべし」「こうい

元記事を表示

【Laravel6】ユーザー招待機能の詳細設計と実装(1)招待メール送信フォーム

# はじめに

ユーザー招待機能の詳細設計と実装(1)招待メール送信フォーム について投稿します。

Web業界実務未経験での転職活動用にポートフォリオとしてはじめて作成したWebアプリ開発のオリジナルの機能として **家族ユーザー招待機能** を実装したときのものです。
※ 作成したポートフォリオは、絵本を読み聞かせしたことの記録・管理を、家族と共有できるWebアプリケーションです(作成期間は、2021年2月末〜7月)

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

## 投稿内容(全 5 回)

本連載は以下の順序で投稿します。

– [ユーザー招待機能の概要と基本設計](https://qiita.com/ryamate/items/751b06dc95ab9b24e361)
– **ユーザー招待機能の詳細設計と実装**
– **(1) 招待メール送信フォーム**
– (2) マイグレーションファイルからのテーブル作成
– (3) 招待メール送信処理
– (4) 招待メールのテンプレート

元記事を表示

【Laravel】Artisanコマンドの作成方法

[qnote Advent Calendar 2022](https://qiita.com/advent-calendar/2022/qnote) の19日目の記事です。

# はじめに
いつも使っているArtisanコマンドですが、業務で自作する機会がありました。
少し気になったので備忘録がてら書きました?

## 環境
PHP 8.0.25
Laravel 9.34

# コマンド作成
“`shell
$ php artisan make:command SampleCommand
“`

“`PHP:SampleCommand.php

元記事を表示

GitHub CodespacesでリモートPHP開発環境を整えてPhpStormで使う3ステップ

先月、GitHubとJetbrainsはGitHub CodespacesがJetbrains製IDEで使えるようになったと発表がありました。

https://blog.jetbrains.com/blog/2022/11/09/remote-development-in-jetbrains-ides-now-available-to-github-codespaces-users/

ということで、リモートなPHP開発環境を整えてPhpStormで使うまでの3ステップを紹介します。

:::note alert
まだ、ベータ版なので安定はしていないです。
:::

## ステップ1: GitHub上にリポジトリを作ってGitHub Codespacesのコンテナ設定を行う

まずはGitHubのリポジトリを作って、GitHub Codespacesの設定を行います。
本来は、設定せずともCodespacesは利用できますが、デフォルトはNode.js用開発環境なため、PHP開発環境に変えます。変えると言っても簡単で、MicrosoftがPHP開発環境用のコンテナイメージを用意してい

元記事を表示

Laravel ファサード、ヘルパーを使わないコントローラを作る

[Laravel Advent Calendar 2022](https://qiita.com/advent-calendar/2022/laravel) 19日目の記事です。

## ファサードを利用しないメリット

– クラスの依存関係がわかりやすくなる
– テストがしやすくなる
– 再利用性が高くなる

### 参考記事

https://blog.ytake.jp.net/entry/2015/12/16/011812

https://www.slideshare.net/KenjiroKubota/laravelfacade

https://www.slideshare.net/KenjiroKubota/laraveltips

https://qiita.com/mikankari/items/40627769f8487853bc5f

## Laravelのベースコントローラについて

Laravelフレームワークが用意している `app/Http/Controllers/Controller.php` を親クラスとして `make:controller` でコン

元記事を表示

DoctrineとEloquent比較大全17: 更新チェック

day17(?)の今日はエンティティ・モデルのデータに更新があるか(UPDATE文を発行する必要があるか)チェックする方法を見ていきます。

## Doctrine

“`php
getRepository(Book::class)->find(1);
$book1->setTitle(‘Symfony6 The Fast Track’);

$entityManager->getUnitOfWork()->computeChangeSets();
if ($

元記事を表示

FuelPHP の Validation を読んでみた

## FuelPHP の Validation を読んでみた
最近 業務で PHP を使うことになったので、趣味で FuelPHP を使い始めました。その中で FuelPHP の Validation を使おうと思うのに腰が重かったので、使う前に実装を読んでみようと思いたち、フォーム の Validation 部分の実装を読んでみました。

ただ、FuelPHP は core の開発が最近あまり進んでいなさそうなのが何とかならないですかね。。。
~~※ 趣味で読んでいる Mocha が難しすぎて、少し気休めが欲しかったのもありますが…~~

## FuelPHP の Validation とは?
FuelPHP の Validation とは、フォーム を使う時に、フォーム の内容が正しいかをチェックする機能で、下のような ファイルで書きます([こちらのサイト](https://sil.hatenablog.com/entry/fuelphp-default-validation-rule-specification)から借りてきました)。

“`php:app/classes/

元記事を表示

LaravelアプリケーションにSAML認証方式のシングルサインオンログインを実装する(IdP設定+ログイン処理編)

これは[株式会社マイホム アドベントカレンダー2022](https://qiita.com/advent-calendar/2022/myhm)の18日目の記事です。
記事の内容は会社の業務とは一切関係ありません。

## 概要

[前回の記事](https://qiita.com/shkfn/items/8ebea0d0dd605b955221)の続きです。

## IdPにSPの情報を設定する

### SAMLアプリケーションを登録する

Azureコンソール > Azure Active Directory > エンタープライズアプリケーション > 新しいアプリケーション > 独自のアプリケーションの作成

任意のアプリ名をつけて、ギャラリーに見つからない…を選んで作成します。
![2022-12-14_22-32-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260612/39f7cf14-c92a-7cba-6bfc-71ec4c8aee01.png)

### SAMLアプリケー

元記事を表示

configure: error: Cannot find OpenSSL’s libraries

`openssl-devel`をインストールしましょう。`–with-openssl=/usr/`にもしてみる

“`bash
sudo dnf install -y openssl-devel
./configure –with-openssl=/usr/
“`

https://serverfault.com/a/788223

元記事を表示

configure: error: Unable to build the PDO PostgreSQL driver: a newer libpq is required

`–with-libdir=lib64`をつけてコンパイルしましょう
“`
./configure –with-libdir=lib64
“`

元記事を表示

configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path

`postgresql-devel`をインストールします

“`bash
sudo dnf install -y postgresql-devel
“`

PHPの`./configure`でエラーがでました

元記事を表示

configure: error: C++ preprocessor “/lib/cpp” fails sanity check

`gcc-c++`をインストールします
“`bash
sudo dnf install -y gcc-c++
“`

phpの`./configure`でエラーがでました

元記事を表示

./configure: /opt/lampp/bin/apxs: /bin/perl: bad interpreter: No such file or directory

/bin/perlにパールがなかったので、シンボリックリンクを作成
“`bash
sudo ln -s /opt/lampp/bin/perl /bin/perl
“`

`–with-apxs2=/opt/lampp/bin/apxs`でphpを./configureしたらエラーがでた

“`bash
Configuring SAPI modules
checking for Apache 2.0 handler-module support via DSO through APXS…

Sorry, I cannot run apxs. Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using –with-apxs2=/path/to/apxs
3. Apache was not built using –enable-so (the apxs usage page is displayed)

The output o

元記事を表示

configure: error: libxml2 not found. Please check your libxml2 installation.

`libxml2-devel`をインストール

“`bash
sudo dnf install -y libxml2-devel
“`

元記事を表示

プログラミングの勉強に困った時の対処法

プログラミングを学習し始めると、必ず壁にぶつかります。
* 環境構築が分からない。
* 作るたびにエラーが起こる。
* CSSを書いているのに、スタイルが当たらない。

エラーが解決できない時は、モチベーションも下がります。
私もずっと独学で勉強していたので、エラーが起こるたびにモチベーションが下がったものです。

今回は、プログラミングの学習で困った時の対処法をまとめています。

## プログラミングの勉強に困った時の対処法

### 先生を作る
**プログラミングの学習の難しいところは、分からないことが多いことです。**
分からないことが続くと、楽しくなくなるのは誰でも同じです。

そういう時に、教えてくれる人がいると壁を乗り越えやすいです。
多くの職場で、メンターや師匠のようなポジションの人を作ったりします。

独学でやっていると、どうしても難しいところです。
当時は、理解するまでドットインストールを何回も再生しました。

独学の場合は、ある程度まで覚えたら就職して実際の実務で磨いていくのもありです。

### 解決するまで試す
エラー、理解できないことにぶつかった時は、一度は自

元記事を表示

configure: error: no acceptable C compiler found in $PATH

gccをインストール

“`bash
sudo dnf install -y gcc
“`

元記事を表示

ZendEngineにえこひいきされる標準関数たち (前篇)

こんにちは! えこひいきしてますか? *僕はしないようにしてます!*

ところでPHPとかいう言語の標準ランタイム *(つまりは、みなさんが普段使ってる`php`コマンド)* はPHPスクリプトを直接実行するの**ではなく**、実行前にコンパイラがPHPスクリプトをオペコードと呼ばれる中間表現(バイトコード)にコンパイルしてから、ZendEngineと呼ばれるVM(仮想機械)がオペコードを実行する構成になっていますよね。

PHPスクリプトで関数呼び出しをすると、あたりまえですが関数呼び出しをする命令にコンパイルされます。これはまったく不自然ではないことです。ところが、PHPの標準関数にはその前提に従わない、つまりは特別扱いえこひいきされているものがあります。

今回の記事はそんな**えこひいき**された関数たちを眺めていきましょう ヾ(〃><)ノ゙ :tada:

:::note info
ふざけた導入に反して、この記事は比較的まともな技術的トピックを扱っているつもりです
:::

## 前提: バイトコンパイルさ

元記事を表示

プログラマーへの道(2) -社会人編-

# 社会人になる前

[プログラマーへの道 -青春時代編-](https://qiita.com/Atsulabo/private/e5e534f461d3f22e12c5) でお話ししてます。前編。
なんでこれ書いてるかもこっちに書いてますので是非読んでくださ〜い!

追加で。社会人になる前に、Avivaに通ってWordとExcel勉強して、なんかマイクロソフトの資格取りました。
Avivaの人は筆談で教えてくれてほんと親切でした。この場を借りてありがとうございます。

あ、そういえば。大学時代に、北斗の拳だったかな?タイビングゲームかってタイピング練習してたな。
そんなわけで、社会人になる前はパソコンに不安はなかったです。

# 社会人 ピカピカの新人

内定式の時色々研修受けて、手配してくださったホテルに入るなり、ベッドに腰かけてたと思ったら2時間ぐらい寝てしまうほど疲れた記憶。
あのホテルはまだあるのかなあ。

その数ヶ月後、社会人新人になりました。
ただし、周りは大学卒業したて、こっちは色々あって大学院を5年満期取得退学でやめたので5年の差がッ!!
ジェネレーションギャップと

元記事を表示

OTHERカテゴリの最新記事