- 1. 【Laravel11】Roach PHPでスクレイピングをする
- 2. ふーん、で、君はPHPのフレームワークで何が好きなの?
- 3. PHPのアクセス修飾子について
- 4. IPAのアイコン画像が壊れているように見える問題のメモ
- 5. [Laravel]文字と数字が混在する場合のsort
- 6. 【Docker Network】PHP コンテナから MySQL コンテナに通信する
- 7. オブジェクト指向の世界に入門
- 8. mb_detect_encodingとmb_convert_encodingの不思議
- 9. CodeIgniter3でMailpitを使ってlocalhost内でメール送信
- 10. 【PHP】Excelを操作するライブラリを作ってみた
- 11. XDebug を使用した PHP プロジェクトのデバッグ
- 12. PAY.JPの定期課金を使用してサブスクを実装
- 13. 【PHP】トレイトとは
- 14. phpMyAdminを手動で導入する方法
- 15. 【CakePHP5】自動テスト/CIとかのまとめ
- 16. 早期リターンして認知負荷を下げよう
- 17. Eloquentのgetメソッドとchunkメソッドのパフォーマンスを比較してみる
- 18. 【CakePHP5】GitHubのPush時にPHPUnitでテストする
- 19. Dockerを使ってLaravel(php-fpm + mariadb + nginx) の環境を構築したい!
- 20. Docker で PHP8.3 + Apache + Laravel + MySQL 8 + phpMyAdmin 環境を構築
【Laravel11】Roach PHPでスクレイピングをする
# はじめに
こんにちは、エンジニアのkeitaMaxです。
今回はLaravel11とRoach PHPでスクレイピングしてみようと思います。
# Roach PHPとは
>Roach is a complete web scraping toolkit for PHP.
(引用:https://roach-php.dev/docs/introduction)Roach PHPはスクレイピングをするためのPHPのライブラリです。
# インストール
以下のコマンドでインストールします。
“`
composer require roach-php/laravel
“`# ファイル作成
スクレイピング用のファイルを以下のコマンドで作成します。
“`
php artisan roach:spider LaravelDocsSpider
“`すると、`src/app/Spiders/`に`LaravelDocsSpider`ファイルが作成されます。
![スクリーンショット 2024-07-03 11.21.26.png](https://qiita-im
ふーん、で、君はPHPのフレームワークで何が好きなの?
オウフwwwいわゆるストレートな質問キタコレですねwww
おっとっとwww拙者『キタコレ』などとついネット用語がwww
まあ拙者の場合PHPフレームワーク好きとは言っても、いわゆる一般的な開発用途としてでなく
メタプログラミング的観点から見ているちょっと変わり者ですのでwwwFunctional PHPの影響がですねwwww
ドプフォwwwついマニアックな知識が出てしまいましたwwwいや失敬失敬www
まあファサードパターンの実装としてのLaravelは純粋によく設計されてるなと賞賛できますがwww
私みたいに一歩引いた見方をするとですねwwwポストSymfonyのパラダイムと
モダンPHPの実用主義を引き継いだフレームワークとしてのですねwww
Laravelのパイプライン処理はですねwwww
フォカヌポウwww拙者これではまるでデザインパターンオタクみたいwww
拙者はギークではござらんのでwwwコポォ
PHPのアクセス修飾子について
PHPには、public、private、protectedの3つのアクセス修飾子があり、これらはクラスのプロパティやメソッドに対するアクセス制限を設けるために使用されます。それぞれ異なるアクセスレベルを定義し、クラスの設計と使用を適切に行うために重要な役割を果たします。
### 目次
1. public
2. private
3. protected
4. アクセス修飾子の違いと使用例
5. アクセス修飾子の適切な使用方法### 1. public
### 定義
クラスのプロパティやメソッドがクラスの外部からもアクセス可能になる。
### 使用ケース
クラスの機能を外部に公開し、外部からの利用を容易にするために使用。
### 例
“`php
class MyClass {
public $publicProperty = ‘I am public’;public function publicMethod() {
echo ‘This is a public method’;
}
}$instance = new
IPAのアイコン画像が壊れているように見える問題のメモ
# IPAのアイコン画像が壊れている!?
自作ツールで、IPAからアプリアイコンを保存したファイルをブラウザで表示すると画像が読み込めない!
PhotoShopで開こうとするとCgBIチャンクが壊れているという。
普段、画像をIrfanViewを使用しているので気が付くのに時間が掛かった。調べると、どうもIPAないのファイルにはPNGにCgBIチャンクを追加される場合があるようです。
CgBIチャンクをビルド時に入れたくない場合は、他のサイトでも沢山解説されているのでここでは割愛します。## CgBIは不要
今回実装中の機能は、サーバーにあるアプリのアイコンを表示する機能なのでCgBIチャンクのあるアプリアイコンは表示できませんとかは出来ないので頑張ります。
CgBIのあるPNGを標準のPNG戻すライブラリを探します。
PHPでは、全く見当たらないです。
いつくかありましたが、怪しいコードだったりそもそも正しく動かないものも多かったです。
辛うじて、pythonのライブラリが見つかりました。
https://pypi.org/project/PyiPNG/
ありがとうござ
[Laravel]文字と数字が混在する場合のsort
## はじめに
こんにちは!2024年新卒で無事エンジニアデビューしたものです。
私は私立の文系大学を卒業後、現在、株式会社ダイアログに入社し、エンジニアチームに配属されました。
自社では1ヶ月の全職種研修を終え、さらに1ヶ月のエンジニア研修を終えたのち案件にアサインされる形となっております。
そこで今回は私が初めてアサインしていただいた案件でつまづいた箇所を記載できればと思っております。
## 案件内容
衣類を扱う会社の帳票の改修## 文字と数字が混在している場合のサイズ名の昇順
衣類を扱う中で色々なサイズ表記があります。
S・M・Lのような文字表記の場合もあれば70・100・115のような数字表記の場合、また3Lのような数字と文字の混在している表記の場合もあります。この場合、昇順をつける上では文字列または数列のどちらかに表記を合わせる必要があります。
### 文字を数字に置き換える
例えば
サイズ表記の種類がsz_nm = [SS,S,M,L,XL,4L,90,100,120]あったとします。
・今回は[SS,S,M,L,XL,4L,90,100,120]とい
【Docker Network】PHP コンテナから MySQL コンテナに通信する
# はじめに
この記事では、Docker のネットワーク機能を利用して、PHP コンテナから MySQL コンテナへ通信できるようにする手順について記載します。
ネットワークへの理解促進の一環で行っています。https://docs.docker.com/network/
# 開発環境
開発環境は以下の通りです。– Windows 11
– Docker Engine 26.1.1
– MySQL 8.4.0
– PHP 8.3# ネットワークの作成 `docker network create`
`docker network create` でネットワークを作成します。
https://docs.docker.com/reference/cli/docker/network/create/
“`powershell
docker network create my-network
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/a37cd0
オブジェクト指向の世界に入門
# はじめに
エンジニアになりたての頃、なにも考えずにコーディングをしていたところ、ベテランエンジニアの友達から「現場で役立つシステム設計の原則」という本を勧められ読んでみました。
将来のことを考えたシステム設計のことなど考えたこともなかった私には目からウロコの内容ばかり書いてありました。なので今回は、学んだことの備忘録と、少しだけオブジェクト指向について触れる記事になります。
**※記事内の言語はPHPで書いています**
—
#### 今回参照した書籍
「現場で役立つシステム設計の原則」(増田亨さん著)
初学者の方にもおすすめです。
—
# この記事の目的
オブジェクト指向は、正直ネットで調べても意味がわからず、初心者の私にはさっぱりでした。
難しい概念ばかり出てくるし、これだけやればOKみたいな単純なものでもないし、概念や思想だという記事まで出てきてより混乱してしまいました。この難解さが、私のような初心者が「オブジェクト指向」を怖がる原因になってしまいます。
が、しかし今回は、「現場で役立つシステム設計の原則」を読んでみて、オブジェクト指向に少しでも
mb_detect_encodingとmb_convert_encodingの不思議
# はじめに
これはPHP8.1を利用していて遭遇した“`mb_detect_encoding“`と“`mb_convert_encoding“`に関する不思議なお話です。それでは行ってみましょう。
# 用意するプログラム
“`php:test.php
CodeIgniter3でMailpitを使ってlocalhost内でメール送信
# はじめに
少々レガシーかもしれませんがDocker/CodeIgniter3を使ってローカル環境で開発をしている際、「メール配信処理もMailpitを利用してローカル環境内で完結させたい」というケースに対するTIPSです。ドキュメントや参考事例が見当たらなかったので備忘録です。https://mailpit.axllent.org/
# Laravel
LaravelではMailpitが標準でサポートされており、まずDockerでイメージを指定してコンテナをデプロイします。“`yaml: docker-compose.yml
mailpit:
image: axllent/mailpit:v1.8
container_name: mailpit
ports:
– “8025:8025”
– “1025:1025”
environment:
MP_DATA_FILE: /tmp/mailpit.db
volumes
【PHP】Excelを操作するライブラリを作ってみた
:::note info
この記事は、PHPのライトなExcelライブラリの紹介です。
:::# はじめに
PHPer皆さん、Excelは好きですか?Excel好きなユーザーから、オンライン画面でExcelからデータをインポートしたいなどの要件がくることがありますよね。そんな時はPhpSpreadsheet。PhpSpreadsheetは、スプレッドシートの読み書きや書式設定など、なんでもできるとても素晴らしいライブラリです。https://github.com/phpoffice/phpspreadsheet
ある日、PHPで特定セルの値を変更して、その結果をExcelのチャートに反映するという要件をいただきました。具体的には、図中の `A3` と `A5` の値を変更して、`Qiita閲覧者数` のチャートで見たいという案件です。
![スクリーンショット 2024-06-28 22.21.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962814/b8583351-8d96-8a
XDebug を使用した PHP プロジェクトのデバッグ
[XDebug](https://xdebug.org/) は PHP 開発において不可欠なデバッグツールであり、ブレークポイントデバッグ、パフォーマンス解析、コードカバレッジなどの強力な機能を提供します。XDebug を使用すると、開発者はコードにブレークポイントを設定し、変数の値を検査し、関数呼び出しスタックをトレースし、パフォーマンスのボトルネックを分析することができ、PHP 開発の効率とコード品質を大幅に向上させることができます。
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ypve7o80tern64wn7pc4.png)
### XDebug の紹介
XDebug は、デバッグと解析機能を提供するために設計された PHP 拡張モジュールです。開発者はコードにブレークポイントを設定し、コードをステップ実行し、変数の値やプログラムの状態を検査することができ、コードをより理解しやすく、デバッグしやすくします。
### Xdebug の有効化とデバッグ環境の構築
PAY.JPの定期課金を使用してサブスクを実装
定期課金の実装を行いました。
備忘録として残したいと思います。
定期課金は単発課金と異なり、かなり処理が複雑でしたが
ドキュメントを熟読して、とってもよい経験となりました。# 定期課金おおまかな流れ
### 1. 顧客がクレジットで定期課金を購入💳
[PAY.JPのcheck outに記載のカード情報入力フォームを用意します。](https://pay.jp/docs/checkout)
このフォームのdata属性に公開用APIKEYをセットする必要があります。“`js
“`## 2. PAY.JPに顧客情報・プランを作成し、アプリケーション側のDBにも必要データを保持しま
【PHP】トレイトとは
## トレイトとは
「トレイト」とは、PHPにおけるコード再利用のための仕組みの一つで、複数のクラスで共有したいメソッドやプロパティを定義するもの。## 実装例
例:
“`php
// トレイトの定義
trait Cacheable {
public function cacheMethod($key, $value) {
// キャッシュ機能を実装するコード
}
}
“`クラスにトレイトを適用することで、トレイトで定義されたメソッドやプロパティを追加できる。
これにより、共通の機能を複数のクラスで簡単に共有でき、コードの重複を避けられる。“`php
// トレイトの使用
class SomeClass {
use Cacheable;public function someMethod() {
// このクラスはCacheableトレイトのメソッドを利用できる
$this->cacheMethod(‘key’, ‘value’);
}
}
“`Cacheableというトレイトを定義し、
phpMyAdminを手動で導入する方法
![php004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668800/c8a36a9b-272b-b847-fad8-c1f29c5edffb.png)
phpMyAdminを利用した事はござざいますでしょうか。
phpMyAdminを利用する事でsqlを使用せずに視覚的にデータベースを操作できる便利ツールとります。
そこで、今回はphpMyAdminを手動で導入する方法についてご紹介致します。
下記公式サイトとなります。
https://www.phpmyadmin.net/
下記公式リポジトリとなります。
https://github.com/phpmyadmin/phpmyadmin
## phpMyAdminをダウンロードする
始めにphpMyAdminをダウンロードを実施致します。
下記コマンドを使用しドキュメントルートディレクトリに移動します。
“`
cd /var/www/html/
“`※上記コマンドの移動パスは用途に合わせて修正下さい。
次に「
【CakePHP5】自動テスト/CIとかのまとめ
# はじめに
こんにちは、エンジニアのkeitaMaxです。
CakePHPの自動テストとかをいろいろやったのでまとめです。
今までCakePHPの記事を書いてきたので、それをまとめました。
これから紹介するものが全て入っているリポジトリは以下です。
https://github.com/NiheiKeita/cake-example-app
# Docker環境を作成
Dockerを使用してCakePHPの環境を作成しました。
https://qiita.com/keitaMax/items/6152aa9fff66bee4e887
# PHPstanを使った自動テスト
PHPstanを使って静的解析をしました。
https://qiita.com/keitaMax/items/77df412e05a537571549
また、以下記事ではPHPstanをGitHubにPushしたときにテストできるようにGitHubActionsを使用しました。
https://qiita.com/keitaMax/items/6e354b9a0b7c54344fa1
下の
早期リターンして認知負荷を下げよう
## はじめに
if ~ elseif ~ elseなどで複数条件を処理しているコードを、エンジニアなら誰しも一度は見たことがあると思います。その条件が何層もネストしているコードにもお目にかかったこともあるでしょう。
今回はそういうコードを、早期リターンを使って読みやすくしてみたいと思います。
## 早期リターン実施前
“`php
/**
* ユーザーの参加資格をチェックする関数
*/
function isUserEligible($user) {
// 18歳以上の場合
if ($user[‘age’] >= 18) {
// アクティブの場合
if ($user[‘active’]) {
// サブスク契約中の場合
if ($user[‘hasPaidSubscription’]) {
return true;
} else {
return false;
}
Eloquentのgetメソッドとchunkメソッドのパフォーマンスを比較してみる
## はじめに
下記の記事で大量データを扱う際は`chunk`メソッドを使った方が良いといった内容を書きましたが、実際にどれくらい良くなるかを今回は検証してみましたhttps://qiita.com/t1k2a/items/25f145135a16bc5e3f44
## パフォーマンステストの準備
– データベースの準備
– テスト用のデータベースを用意し、十分なレコード数を挿入します
– 今回は4000件のデータを使用します
– 環境の準備
– 同じ環境でテストを行います
– 今回はDocker+Laravel+MySQLの環境で行います
– 詳しくは下記の記事をご参照くださいhttps://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4
測定項目
– メモリ使用量
– 各メソッド使用時のメモリ消費量を測定します
– 処理時間
– 各メソッドが処理を完了するまでの時間を測定します## テストデータの使用
テストデータは下記を使用しましたhttps://dev.my
【CakePHP5】GitHubのPush時にPHPUnitでテストする
# はじめに
こんにちは、エンジニアのkeitaMaxです。
今回は前回作成したPHPUnitをGitHubActionsでGitHub上でテストできるようにしようと思います。
前回
https://qiita.com/keitaMax/items/7327c83cea938fe124f9
# GitHubActionsのymlファイルを作成
GitHubActionsを作成します。
以前Laravelで作成したものを参考にしようと思います。
https://qiita.com/keitaMax/items/bbfecbdb73322b53bb4c
“`yml:phpunit.yml
name: phpuniton: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
steps:
– uses: actions/checkout@v2
– name:
Dockerを使ってLaravel(php-fpm + mariadb + nginx) の環境を構築したい!
# はじめに
大学のプロジェクトで環境をDockerに移動しなければいけない機会があったので,Laravelの環境を作成しました!
コンテナ内のartisanコマンド等で作成されたファイルは権限を変更しないとVScodeで直接編集でしたが、今回はVScodeで直接編集ができるように工夫しました!# やりたいこと
php-fpm + mariadb + nginx のLaravelの環境を作成したい!# お急ぎの方
以下のリポジトリをForkして作成したリポジトリをcloneしてください!
※ .envファイルを記述する必要あり.https://github.com/46maru/Laravel_container
# 動作環境
– windows10
– wsl2
– VScode
– docker for windows (4.30.0)# ファイル構成
“`
project名
┣━ docker/
┃ ┣━ app/
┃ ┣━ Dockerfile
┃ ┣━ php.ini
┃ ┣━db/
Docker で PHP8.3 + Apache + Laravel + MySQL 8 + phpMyAdmin 環境を構築
[また今度](https://qiita.com/naente/items/d259ea84c172deeff7d8)が来るまでに 5年かかったゾ。
# 対象読者
– 私
– これまで XAMPP インストールして hosts 書いて httpd.conf に VirtualHost 書いてローカル開発環境を構築していたが、そろそろ Docker に移行したい私
– 上記の工程を開発メンバー各自にも行なってもらっていて、今時 Docker じゃなくてゴメンと思っていた私
– 他の Docker 環境構築記事のレベルが高すぎて理解できなかった私# 動作確認環境
あらかじめ Docker Desktop と Composer のインストールを完了しておいてください。## Windows
– Windows 10 Enterprise 22H2
– Docker Desktop 4.31.1
– Docker 26.1.4
– Docker Compose v2.27.1-desktop.1
– Composer 2.7.2## Mac
– macOS Ventura