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

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

Laravelで絞り込み検索に役立つ構文

$keywordが存在している時、where句による絞り込みを行う。

“`PHP
when(isset($keyword),function($query) use($keyword){
return $query->where(“name”,”LIKE”,”%” . $keyword . “%”)
});
“`

( A or B ) or ( C and D )

“`PHP
$users->where(function($query){
return $query->where(“条件A”)->orWhere(“条件B”);
})->orWhere(function($query){
return $query->where(“条件C”)->where(“条件D”);
});
“`

例)日報一覧のうち、「日付」が指定されていた場合、日付で絞り込み、さらに、キーワードが入力されていた場合、「案件ID,案件名,顧客名」のいずれかで絞り込みを行いたい。

“`PHP
$assign[“reports”] = ViewReport::when(iss

元記事を表示

FuelPHP の Pagination を読んでみた。

## FuelPHP の Pagination を読んでみた
FuelPHP の Pagination を使っているコードを読んでいて、自分で Pagination を使った実装しようかと思ったけど、その前に仕組みが気になったので、FuelPHP の Pagination の内部実装を見てみました。

https://github.com/fuel/core/blob/2c8c548a2f9f4aa08ecfe321c3e744d03472479c/classes/pagination.php

## 読む順番

Controller 側での pagination の初期化から、

“`php
$pagination = \Pagination::forge(‘name’, $config)
“`

View 側での レンダー処理の順で読んでいきます。

“`php
echo Pagination::instance(‘mypagination’)->render();
// つまり
$pagination->render()
“`

## Pagination を読んでみる

元記事を表示

キョムからYiiの環境構築:Ubuntu

## まえがき
Adventカレンダー21日目の投稿予定です
## What is Yii framework?
YiiはPHPのフレームワークで日本ではあまり採用されないものの海外では評価が高いフレームワークです
特徴は
・MVCによるUI構成
・完全オブジェクト思考
・軽量高速で負荷に強い
上記以外にもたくさんのメリットがあります
詳しくは公式サイトを見てみてください

https://www.yiiframework.com/doc/guide/2.0/ja/intro-yii

## 早速導入!
### composerの導入
まずは公式サイトにそってcomposerをインストールします
~~~bash:console
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -v
~~~
この画面がでればインストール成功です
![image.png](https://qiita-image-store.s3.ap-northea

元記事を表示

Laravel のリクエストだけでなく、レスポンスもバリデートしよう

こんにちは。やまゆです。

この記事は [PHP アドベントカレンダー 2022](https://qiita.com/advent-calendar/2022/php) 18 日目のものとなります。

前日の 17 日目の記事は @tanakahisateru さんの[ちょうぜつ設計とは](https://qiita.com/tanakahisateru/items/3024bdd650b6614b2f27)です。
翌日の 19 日目の記事は @ippey_s さんの [GitHub CodespacesでリモートPHP開発環境を整えてPhpStormで使う3ステップ](https://qiita.com/ippey_s/items/616213e1b2c98a68bbb7)です。

## リクエストのバリデーション

https://laravel.com/docs/9.x/validation#form-request-validation

Laravel には [FormRequest](https://laravel.com/api/9.x/search.html?sear

元記事を表示

オブジェクトにステータスを、”Workflow”

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

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

元記事を表示

【Laravel6】ユーザー招待機能の詳細設計と実装(2)マイグレーションファイルからのテーブル作成

# はじめに

ユーザー招待機能の詳細設計と実装(2) マイグレーションファイルからのテーブル作成 について投稿します。

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

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

## 投稿内容(全5回)

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

– **[招待ユーザー機能の概要と基本設計](https://qiita.com/ryamate/items/751b06dc95ab9b24e361)**
– **招待ユーザー機能の詳細設計と実装**
– [(1) 招待メール送信フォーム](https://qiita.com/ryamate/items/a1d0a5b1db9d11a69671)
– **(

元記事を表示

すぐ使えるファサードの設定(Laravel)

## 始めに
Laravelにて、ファサード(Facade)を使用することがあったので、
備忘録として記事にしました。

__ファサードとは__:staticメソッドみたいな感じ(どこでも使えるメソッドにする機能)
“`PHP:適当なController.php
// どこのController, ServiceでもTestFacadeクラスのtestメソッドが実行可能!
TestFacadeClass::test();
“`

## 環境
| 開発環境 |バージョン |
|———–|————|
| __Laravel__ | 8.83.19 |
| __PHP__ | 7.3.10 |

## 流れ
1、ControllerかServiceにクラスを作成する
2、/app/Providers/AppServiceProvider.phpの設定
3、ファサード用ファイルを作成する
4、config/app.phpの設定

## 1、ControllerかServiceにクラスを作成する
今回はサービスにファサード化したい

元記事を表示

FuelPHP の Format でどうしても HTML のパースが失敗する場合

備忘録

## FuelPHP の HTML パーサー「Format」
FuelPHP で HTML をパースする時は、Format というライブラリを使います。使い方は以下です。

“`php
$html = \Format::forge($html_body, “xml”)->to_array();
$element = $html[“path”][2][“html”][“element”];
“`

でも、これでも失敗する場合があります。それは例えば、以下のような 文字列とタグを一緒にしたタグをパースする場合です。

“`xml


Dan He
<br /> <i>BMA</i><br /> <sup>*</sup><br /> : An Efficient Algorithm for the One-to-Some Shortest Path Problem on Road Maps.<br /> 346-357

元記事を表示

WordPressでパンくずリストを実装(プラグインなし)

私がサイト構築する際に、使用している「パンくずリスト」です。

プラグインで簡単に実装は出来るのですが、お客様のサーバ環境によって、PHPのバージョンが古くプラグインが実装できない場合に重宝しています。
テーマファイルの別ファイルとして保存しているので、テーマさえ適用できれば、すぐに実装できる手軽さもあります。

ファイルはテーマファイルフォルダ内に`fnc-bredcrumb.php`として`fnc`フォルダへ保存して、`functions.php`に`get_template_part(‘fnc/fnc-bredcrumb’);`を記述し、パンくずリストを使うテーマファイルで`output_breadcrumb();`で呼び出します。
※汎用性の高いファイルは、`fnc`フォルダへ別ファイルとして保存し、`functions.php`で読み込んでいます。

このデータは、特殊なページを想定していないので、カスタム投稿やタームによって表示を変えたい場合は、`elseif`で追加してください。
デザインが合えば、「HOME」の部分をFont Awesomeのアイコンや画像にしても良いで

元記事を表示

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

# 1.はじめに

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

https://adventar.org/calendars/7752

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

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

最近は、

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

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

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

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

– **単一責任の原則( ← 今回はここ)**
– オープン・クローズドの原則
– リスコフの置換原則
– インターフ

元記事を表示

実際のブラウザを使ってリクエスト処理する、”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) マイグレーションファイルからのテーブル作成](https://qiita.com/ryamate/items/bfca

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事