php
OpenAIのAPIを操作する処理をラップしてくれているPHPのライブラリのopenai-php/clientというものがあります。これを利用することで、PHPでOpenAIのChatGPTを利用することができるようになります。 github.com また、触るきっかけとなったのが、開発者のNuno…
プログラミングを普通にしていたらprivateやprotectedなプロパティやメソッドにアクセスすることはないかもしれません。 しかし、ユニットテストでprivateなプロパティの値を設定しておいてテストを実行する、みたいなことをしたくなることがあるかもしれま…
PHPのテストコードを書いていて、モックしたい場合にMockeryはよく使われるツールかなと思います。PHPで有名なフレームワークのLaravelでも使われてますね。 github.com 今回はそのMockeryでstaticメソッドをモックするときにちょっと躓いたので、記事にメモ…
AWSのS3にバージョニング機能があるので、試しにいろいろ使ってみました。 S3バケットのバージョニングとは 実際に使ってみる バージョニングの有効化 アップロードする 中身を書き換えてアップロードする オブジェクトバージョン(VersionId)を取得する PH…
この文字コードというのか、これ自体をちゃんと理解してないのですが、あという文字はあを示しています。 変換については、こちらのサイトで確認できます。 www.shurey.com では、この変換をPHPではどう実装すればできるのでしょうか? ヒントはPHPの…
Laravel 9がそろそろリリースされますが、まだまだ新しい機能が追加されています。その中でも今回はいろんな文字列の生成について紹介したいと思います。 str() ヘルパーが追加された str()というヘルパーが追加されました。 github.com これはどういうもの…
そろそろLaravel 9.xがリリースされる予定です。まだ9.xもリリースされてないのですが、早くも10.xや11.xについても見ることが多くなりました。 今回見るのは以下の[10.x] Prepare Laravel 10 #40382というPull Requestです。 github.com ちなみに、Laravel …
PHP8.1からEnum(列挙型)が使えるようになりました。 www.php.net そのため、Laravel 8.xからEnumを使えるような機能がいくつかマージされてます。その中でも今回はリクエストパラメータなどバリデーションに対して、Enumを用いてチェックできるようになっ…
Laravel 8.77.0から$request変数から日付型のものはCarbonオブジェクトでも取得できるようになりました。 github.com 今回はその機能を実際に使ってみたいと思います。 今回、使用する共通のリクエストパラメータ 実際に取得する 通常のCarbonオブジェクトと…
Laravel 8.xからパスワード入力に対するバリデーションが使いやすくなりました。 そこで、実際に使ってみながら試してみました。 パスワードの入力ルールを作成する Laravel 8.xのパスワードのバリでションについては、日本語のドキュメントではこちらになり…
先週、PHP 8.1がリリースされ、先程dockerのイメージもダウンロードできるようになったので、docker上でPHP 8.1を試してみたいと思います。 なぜ、dockerなのか PHP 8.1の環境を用意するのが大変だったため。dockerだと楽じゃないですか! ということで、こ…
LaravelのFacadeを最近使うようになったので、勉強ついでにFacadeの使い方についてまとめてみようかなと思います。 Laravelのファサードとは 実際にFacadeを実装してみる Facadeクラスを作成する 呼ばれる側のインターフェースの作成 クラスの実装 サービス…
噂の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…
symfony/pantherを用いて、サイトをクローリングしてスクリーンショットを残すということをしてました。それをGithub Actionsで実施して、最終的にSlackに送る、みたいなことです。 そのため、Github Actionsの処理内では、ubuntu上でchromium-chromedriver…
composerでsymfony/pantherのインストールがエラーになったので、その解消方法のメモになります。 $ composer require symfony/panther Using version ^1.1 for symfony/panther ./composer.json has been updated Running composer update symfony/panther …
2022年リリース予定のLaravel 9.x系ですが、Symfonyのバージョンが6系になるのもあり、PHP7.3とPHP7.4のサポートも削除されました。 そのため、Laravel 9.0からはPHP7系以下では動かなくなってしまうことになります。 [9.x] Drop PHP 7.3 #36038 まず、こち…
リクエストパラメータ等のバリデーションでrules()などを利用して、バリデーションをしていると思います。その他にもLaravel内でバリデーションをしているところはいくつかあるかと思います。 バリデーションについては、こちらのドキュメントが参考になると…
PHPで書かれたフレームワークの中でも有名なLaravelについてのバージョン情報について新たなアップデートがあったのでまとめてみました。 Laravel 9のリリース予定日 今年の9月にリリースされるんじゃないかと噂がありましたが、Laravel 9のバージョンのリリ…
自分自身、Laravelをちゃんと使って3年くらいが経ちました。PHP歴は8年くらいでしょうか。 (でもLaravelが10歳を迎えるので、Laravelの歴史で言えば3割程度しか触れていません) laravel-news.com さて、Laravelを使って開発とかをしていて思ったのが、Lara…
Laravelで発行されるSQLは、DB::getQueryLog()を使えば取得可能です。 ただ、間違いなくクエリを投げているはずなのに、getQueryLog()の結果が空配列になってしまって、悩んでいました。 解決策 どうやらDB::getQueryLog()で取得できるのは、defaultで設定し…
PHPで日時を扱うのに強力なCarbonですが、今回はformat系のメソッドを試してみて、書式の一覧を確認したいなと思いまして、今回記事にまとめてみることにしました。 フォーマット書式 まずはフォーマットについてですが、PHP標準のDatetimeのformatを利用し…
PHPで並び替えをしたいけど、第一ソートと第二ソート、第三ソート・・・で並び替えをしたい時ってどうやればいいんだろう、と昔思ったことがありました。 ということで、今回はそのソートアルゴリズムを考えたいと思います。 単純な実装 工夫してスマートに…
PHPのDOMDocumentを利用すると、HTMLやXMLのドキュメントに対して検索したり、アクセスしたりできるかと思います。 www.php.net この中の文字列からHTMLを読み込むときに使用するloadHTMLを使っていて、問題が発生した時の原因と解決策のメモを書いた記事に…
エラーになったのでその解消メモ 事象 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のドキュメントを参考に、安全なパスワードハッシュについて学んでいきたいと思います。 www.php.net はじめに なぜ、…
PHPのジェネレータというものは、名前は聞いたことはあったけど、使ったことがなかったので、お正月休み中に使ってみて、勉強しようと思いました。 ということで、この記事は、その勉強のメモになります。 ジェネレータとは まずは、ジェネレータってなんな…
curl_execを使って指定したURLにリクエストを投げる、ということができると思います。 メソッドを呼んでみる ただ、何も考えずに使ってみると、
Laravelを5系から8系にバージョンアップさせてみたのですが、ページャーの表示がおかしくなりました。。 正常系 ↑今まではこのように表示されていたのが、バージョンアップしてみると↓こんな感じになってしまいました。 異常系 ドキュメントの再確認 cssかな…
本日はPHPカンファレンスの日だったので、今年も参加してきました。 今回は新型コロナウイルスの影響もあり、21年目にして初めてのオンライン開催になりましたので、Openingと同時に起床して参加しました。(寝起きで参加すみません) ということで、今年も…
PHPUnitの各テスト項目の直前直後だったり、全体の最初と最後に処理させたいってことありますよね。 今回はそれの実現の仕方についてと動きについて紹介したいと思います。 テスト全体の最初と最後 まずは、最初と最後に処理させたいパターンについてです。 …