ポンコツエンジニアのごじゃっぺ開発日記。

いろいろポンコツだけど、気にするな。エンジニアの日々の開発などの記録を残していきます。 自動で収入を得られるサービスやシステムを作ることが目標!!

php

PHP から ChatGPT が利用できる openai-php/client を使ってみる。

OpenAIのAPIを操作する処理をラップしてくれているPHPのライブラリのopenai-php/clientというものがあります。これを利用することで、PHPでOpenAIのChatGPTを利用することができるようになります。 github.com また、触るきっかけとなったのが、開発者のNuno…

【PHP】Reflectionを使わずにprivateなプロパティやメソッドにアクセスする【Closure::bind】

php

プログラミングを普通にしていたらprivateやprotectedなプロパティやメソッドにアクセスすることはないかもしれません。 しかし、ユニットテストでprivateなプロパティの値を設定しておいてテストを実行する、みたいなことをしたくなることがあるかもしれま…

【Mockery】テストでstaticメソッドをモックするやり方【PHP】

php

PHPのテストコードを書いていて、モックしたい場合にMockeryはよく使われるツールかなと思います。PHPで有名なフレームワークのLaravelでも使われてますね。 github.com 今回はそのMockeryでstaticメソッドをモックするときにちょっと躓いたので、記事にメモ…

S3バケットのバージョニングを使って指定したバージョンのファイルを取得してみる。

AWSのS3にバージョニング機能があるので、試しにいろいろ使ってみました。 S3バケットのバージョニングとは 実際に使ってみる バージョニングの有効化 アップロードする 中身を書き換えてアップロードする オブジェクトバージョン(VersionId)を取得する PH…

【PHP】あ を人間が読める文字に変換する。

php

この文字コードというのか、これ自体をちゃんと理解してないのですが、あという文字はあを示しています。 変換については、こちらのサイトで確認できます。 www.shurey.com では、この変換をPHPではどう実装すればできるのでしょうか? ヒントはPHPの…

Laravel 9.x からランダムな文字列やuuidの生成できるhelperが追加された。

Laravel 9がそろそろリリースされますが、まだまだ新しい機能が追加されています。その中でも今回はいろんな文字列の生成について紹介したいと思います。 str() ヘルパーが追加された str()というヘルパーが追加されました。 github.com これはどういうもの…

Laravel 10.xはPHP8.0.2以上、Laravel 11.xはPHP8.1以上になりそうな話。

そろそろLaravel 9.xがリリースされる予定です。まだ9.xもリリースされてないのですが、早くも10.xや11.xについても見ることが多くなりました。 今回見るのは以下の[10.x] Prepare Laravel 10 #40382というPull Requestです。 github.com ちなみに、Laravel …

【PHP8.1】LaravelのEnumバリデーションを使ってみる。

PHP8.1からEnum(列挙型)が使えるようになりました。 www.php.net そのため、Laravel 8.xからEnumを使えるような機能がいくつかマージされてます。その中でも今回はリクエストパラメータなどバリデーションに対して、Enumを用いてチェックできるようになっ…

【Laravel 8.x】Request $requestからCarbonオブジェクトを一発で取得する。

Laravel 8.77.0から$request変数から日付型のものはCarbonオブジェクトでも取得できるようになりました。 github.com 今回はその機能を実際に使ってみたいと思います。 今回、使用する共通のリクエストパラメータ 実際に取得する 通常のCarbonオブジェクトと…

【Laravel 8.x】パスワードのバリデーションを使いこなそう。

Laravel 8.xからパスワード入力に対するバリデーションが使いやすくなりました。 そこで、実際に使ってみながら試してみました。 パスワードの入力ルールを作成する Laravel 8.xのパスワードのバリでションについては、日本語のドキュメントではこちらになり…

dockerでPHP 8.1を動かしてみる。

先週、PHP 8.1がリリースされ、先程dockerのイメージもダウンロードできるようになったので、docker上でPHP 8.1を試してみたいと思います。 なぜ、dockerなのか PHP 8.1の環境を用意するのが大変だったため。dockerだと楽じゃないですか! ということで、こ…

LaravelのFacadeを使ってみる。

LaravelのFacadeを最近使うようになったので、勉強ついでにFacadeの使い方についてまとめてみようかなと思います。 Laravelのファサードとは 実際にFacadeを実装してみる Facadeクラスを作成する 呼ばれる側のインターフェースの作成 クラスの実装 サービス…

GitHub Copilotが使えるようになっていたのでIntelliJで試してみる【PHP】

噂のGitHub Copilotですが、いつの間にか使えるようになっていました! Join the GitHub Copilot waitlist Access is limited to a small group of testers during the technical preview of GitHub Copilot. Sign up today for your chance to try it out a…

chromium-chromedriverの文字化け?日本語のフォントを入れて解決!

symfony/pantherを用いて、サイトをクローリングしてスクリーンショットを残すということをしてました。それをGithub Actionsで実施して、最終的にSlackに送る、みたいなことです。 そのため、Github Actionsの処理内では、ubuntu上でchromium-chromedriver…

composer require symfony/pantherでエラーになった問題の解消【PHP】

composerでsymfony/pantherのインストールがエラーになったので、その解消方法のメモになります。 $ composer require symfony/panther Using version ^1.1 for symfony/panther ./composer.json has been updated Running composer update symfony/panther …

Laravel9.xはPHP8.0以上じゃないと動かない

2022年リリース予定のLaravel 9.x系ですが、Symfonyのバージョンが6系になるのもあり、PHP7.3とPHP7.4のサポートも削除されました。 そのため、Laravel 9.0からはPHP7系以下では動かなくなってしまうことになります。 [9.x] Drop PHP 7.3 #36038 まず、こち…

LaravelのValidationExceptionのメッセージが物凄いわかりにくい件の解消。【PHP】

リクエストパラメータ等のバリデーションでrules()などを利用して、バリデーションをしていると思います。その他にもLaravel内でバリデーションをしているところはいくつかあるかと思います。 バリデーションについては、こちらのドキュメントが参考になると…

Laravel 9 のリリース日延期と現行バージョンのサポート期間の変更について。

PHPで書かれたフレームワークの中でも有名なLaravelについてのバージョン情報について新たなアップデートがあったのでまとめてみました。 Laravel 9のリリース予定日 今年の9月にリリースされるんじゃないかと噂がありましたが、Laravel 9のバージョンのリリ…

【初心者向け】自分流のLaravelの勉強方法の紹介。

自分自身、Laravelをちゃんと使って3年くらいが経ちました。PHP歴は8年くらいでしょうか。 (でもLaravelが10歳を迎えるので、Laravelの歴史で言えば3割程度しか触れていません) laravel-news.com さて、Laravelを使って開発とかをしていて思ったのが、Lara…

【Laravel】SQLを発行しているのに、DB::getQueryLog()で空が返ってくる。

Laravelで発行されるSQLは、DB::getQueryLog()を使えば取得可能です。 ただ、間違いなくクエリを投げているはずなのに、getQueryLog()の結果が空配列になってしまって、悩んでいました。 解決策 どうやらDB::getQueryLog()で取得できるのは、defaultで設定し…

【PHP】Carbonの日付・時刻の書式一覧をまとめてみた。

PHPで日時を扱うのに強力なCarbonですが、今回はformat系のメソッドを試してみて、書式の一覧を確認したいなと思いまして、今回記事にまとめてみることにしました。 フォーマット書式 まずはフォーマットについてですが、PHP標準のDatetimeのformatを利用し…

【PHP】第一ソート、第二ソート、・・・の並び替えをスマートに実装してみた。

php

PHPで並び替えをしたいけど、第一ソートと第二ソート、第三ソート・・・で並び替えをしたい時ってどうやればいいんだろう、と昔思ったことがありました。 ということで、今回はそのソートアルゴリズムを考えたいと思います。 単純な実装 工夫してスマートに…

【PHP】loadHTMLでエラーが発生、その原因と解決策。

php

PHPのDOMDocumentを利用すると、HTMLやXMLのドキュメントに対して検索したり、アクセスしたりできるかと思います。 www.php.net この中の文字列からHTMLを読み込むときに使用するloadHTMLを使っていて、問題が発生した時の原因と解決策のメモを書いた記事に…

【解消済み】docker、apt-getでエラー

エラーになったのでその解消メモ 事象 docker-compose up -dでエラーが発生した phpのコンテナないでapt-getしているところでエラー エラー内容 エラー内容は以下 Building php Step 1/12 : FROM php:7.4.6-fpm ---> 612022ee981a Step 2/12 : ENV TZ=Asia/T…

【PHP】安全なパスワードハッシュを学ぶ

php

パスワード管理って大事ですよね。ただ、未だにどうするのが正解なのかってのをちゃんと調べたことがなかったのです。 そこで、以下のPHPのドキュメントを参考に、安全なパスワードハッシュについて学んでいきたいと思います。 www.php.net はじめに なぜ、…

PHPのジェネレータを初めて使って勉強してみる。

php

PHPのジェネレータというものは、名前は聞いたことはあったけど、使ったことがなかったので、お正月休み中に使ってみて、勉強しようと思いました。 ということで、この記事は、その勉強のメモになります。 ジェネレータとは まずは、ジェネレータってなんな…

【PHP】curl_execするとレスポンス内容が標準出力される問題の解決策

php

curl_execを使って指定したURLにリクエストを投げる、ということができると思います。 メソッドを呼んでみる ただ、何も考えずに使ってみると、

【解決済み】Laravel 8.xにバージョンアップしたらページャーがおかしくなった

Laravelを5系から8系にバージョンアップさせてみたのですが、ページャーの表示がおかしくなりました。。 正常系 ↑今まではこのように表示されていたのが、バージョンアップしてみると↓こんな感じになってしまいました。 異常系 ドキュメントの再確認 cssかな…

PHPカンファレンス2020@東京に参加したメモ

php

本日はPHPカンファレンスの日だったので、今年も参加してきました。 今回は新型コロナウイルスの影響もあり、21年目にして初めてのオンライン開催になりましたので、Openingと同時に起床して参加しました。(寝起きで参加すみません) ということで、今年も…

【PHP】PHPUnitの一番最初と一番最後に処理させる方法と実行前後のタイミングについて

php

PHPUnitの各テスト項目の直前直後だったり、全体の最初と最後に処理させたいってことありますよね。 今回はそれの実現の仕方についてと動きについて紹介したいと思います。 テスト全体の最初と最後 まずは、最初と最後に処理させたいパターンについてです。 …

お問い合わせプライバシーポリシー制作物