それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

php

php でクラスが呼び出す関数をスタブにしたいとき require を工夫すればいいが、laravelでは面倒が起きる

php でクラスが呼び出す関数をスタブにしたいとき コードテストを書いていて、クラスが呼び出すクラスのメソッドをダミー化してたいとき、スタブを使う。 スタブを作るには、クラスが呼び出すクラスのメソッドを書き換える必要がある。phpでは動的なクラス定…

laravel (jetstream + livewire) を 9->10 に手動でアプグレ・アップデート

laravel (jetstream + livewire) を 9->10 にアップデート componser.json の書き換え "require": { - "php": "^8.0.2", + "php": "^8.1", "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.19", - "laravel/jetstream": "^2.12", - "laravel/sanct…

php で 時刻差分(x分後)をint数値 にする。

php

php で、〇〇分後を数値に変換する。 php で 00:10:11 分後をint にしたい。 時刻の差分をサクッと、intに変換する 実行結果 int(247) …

php の proc_openで pipe(パイプ)を作る例

php でプロセスを起動するときに、パイプを作ってそれぞれの実行する。 php で pipeを作る例

Laravelで ストレージ設定を一時的(Stroage on the fly)に作って、テスト用に使う。

Laravelで ストレージ設定を一時的に作って、テスト用に使う。 テストのためだけに、config を記入して汚すのも憚られるので、その場で使い捨てのストレージ設定(on-the-fly/Ephemeral)のストレージ設定を作って使う。 使い捨てのStorage定義して終わったら…

laravel で ジョブ・キューを行う

laravel で ジョブ・キューを行う ジョブキューを体験する ジョブキューの準備 コマンドの準備 ジョブ・キュー実行する 失敗時の取り扱い ジョブキューを体験する Laravelのジョブとキューの仕組みを作って体験してみる。 WEB-UIを作るとめんどくさいので、…

laravel でevent(イベント・リスナ) を扱う

laravel でevent を扱う laravel にはイベントとリスナを組み合わがある、重複コード解消に役立つ。データが更新されたタイミングで行う処理を、リストに記入し、共通化する。更新タイミングをイベントとして発火させるように設計する。これを使うとドメイン…

laravel 5/6/7アプリケーションをphp8.0で動かす。

稼働中のLaravelアプリをバージョンアップ php8で動かしたいと思ったけど、エラーになるので、対応する。 マニュアルupgrade 5.8 to 6を参考にアップグレードする composer.json ## require - "php": "^7.1", + "php": "^7|^8.0", - "laravel/framework": "5…

php で 自己署名CAを使って証明書certificateを作成する例。

php

sample for generate certificate php で certificate 作成する例。 証明書作成の手順 発行人の秘密鍵の作成 発行人の証明書の作成(自己署名・署名リクエスト) 被発行人の秘密鍵の作成 被発行人の証明書の作成(自己署名・署名リクエスト) 発行人が署名リ…

Null合体演算子(Null Coalescing)と三項演算子の短縮形(Short-ternary )をまとめておく。

php

Null合体演算子(Null Coalescing)と三項演算子の短縮形(Short-ternary )を使ってパニクったので整理。 この値を知りたい。 値 比較 結果 unset($a) $a[0] ?? null NULL $a = null $a[0] ?? null NULL $a = $a[0] ?? null NULL $a = ['x'] $a[0] ?? null '…

php の foreach で配列の展開までいっきにやる。list と foreach をまとめて書く。

php

ふと、他人の書いたPHPコードgithub で眺めていると、次のような記述に遭遇した。 list() と foreach で配列を変数に展開する。

Guzzle で name[]=1 のような添字なしのリクエストを組み立てる。

php

Guzzle さんは、内部的に http_build_query を使っている。 そのため、次のようなリクエストのパラメタを渡すと。 $gz->request('GET' , [ 'name'=>['a','b','c']] ) 次のようなリクエストを作り出す。 ?name[0]=a&name[1]=b&name[2]=c これは、あらゆるHTTP…

配列インデックスの連番に欠番が出たときに、欠番をnullで埋める。

php

php の配列はすべてが連想配列なので、連番に欠番が出る。 欠番を「除去」したいときは、array_values で欠番を除いて再度の採番をすればいいのだけど、「欠番」を「特定の値で埋めたい」ときにはどうすればいいか。 欠番を数字で埋める。 'a', 3=>'c', 4=>'…

WebAPIの無駄呼び出し回数をGeneratorで減らしつつ、コードの書き換えはできる限り減らしたい。

二律背反の要求を実現したい。 WebAPIの無駄な呼び出し回数を少しでも減らしたい。回数を減らし、プログラム応答速度を上げたい。 ただ、コードの書き換えは極小にしたい。 この目的では、Generatorを使うのが、鉄板だと思うんですよね。 WEBを呼び出すコー…

trait で関数名が衝突した場合。名前かぶりを別名にする。

php

trait を use するときに名前がかぶった。 同じ名前の関数・変数があって、名前が衝突してエラーになる。 対応するには、use を使うか、優先順位を変える。 名前の衝突する trait の例 次の例では say() が衝突してしまう。

cloudflare のレコードをphpから処理

cloudflare のレコードをphpから処理 cloudflare のAPIを使う。 php が手軽かなと思って選んだ。 https://github.com/cloudflare/cloudflare-php https://packagist.org/packages/cloudflare/sdk インストール composer require cloudflare/sdk 初期化例。 A…

LaravelでsocialiteでOauth(サイトログイン)連携を作る/Gitlabログインを例に

LaravelでGitlabログイン連携を作る laravel でSocialiteプラグインを使う。ユーザー登録の代わりにユーザをほかサイトのIDでログインさせるOAuthです。 今回は、「gitlab」ユーザでログイン機能を作る。とくにOmnibus版でセルフ・ホスティングサイトを使う…

Laravel でイベントとハンドラを使って通知を送る

Laravel でイベントとハンドラを使って通知を送る イベント・リスナ イベント定義を使って、「なにか」が起きたとき「これをやる」を定義出来る。 ジョブキューで分割すると思いがちだけど、別にシングルスレッドで実行しても構わない。 シングルスレッドで…

laravel で通知(slack/mattermost)を試す。

laravel で通知(slack/mattermost)を試す。 laravel で slack に通知(メッセージ送信)をする。 slack 互換のapi がある、mattermostでも「内向きウェブフック」を使えば同じように通知が出来る。 準備 webhook incoming のアドレス(URL) composer でパッケ…

Laravelで通知(メール)を試す。

Laravelで通知(メール)を試す。 laravel でコマンドを作ってメールを送信する。 必要なもの SMTP/S接続情報 作るもの Notification クラス 通知を送信するコンソール・コマンド laravel 通知の流れ laravel 通知では、Notificationを実装したクラスをapp/n…

RuntimeException: SplFileInfo::getSize(): stat failed for php://temp となり、getSize出来ない

php

php8.1 までで起こる SplFileInfo / SplFileObject / SplTempFileObject で php://memory php://stream を使うとエラーになる。 fwrite($ret); $sf->getSize(); // =>Error 対応 fstat は動くのでそっちを使う。 fwrite($ret); $sf->fstat()['size']; // => …

phpでThe server requested authentication method unknown to the client.

php で次のようなエラーが出る The server requested authentication method unknown to the client 原因 php-mysql の接続でエラー エラーの原因は mysql の認証方式の変更に対応できないエラー いままで、mysql は mysql_native_password だったが、mysql8…

pdoのprepareで名前に数字を入れると、bindValue出来ないエラー

php の pdo でエラーがでるので数日ずっと頭を抱えてた 出てくるエラー : Invalid parameter number: number of bound variables does not match number of tokens エラーは、php pdo の prepare statement で、execした時にエラーになる。 bindValue(":n1",…

Laravel でログを、ターミナルに出す。

Laravel でログを、ターミナルに出す。 laravel のログを画面ではなくターミナルへ出力する事ができる。 またターミナルとファイルに出す事ができる。 ログとデバッグ dd とかよく使います。 dd( $model ); dump もよく使います。 dump( $model ); これはロ…

laravelでリクエスト内容を書き換える(rule適用前/適用後)

laravel でリクエスト内容を書き換える。 リクエストの内容を書き換えるのなら、フィルタやサービスでDIを思い浮かべるかもしれないが、もっと手軽にできる方法がある。 それは、FormRequest を使うことだった。ブラウザからのリクエストを集合体にできるFor…

laravel のdd をwordpressなど自分のプロジェクトでで使う。

laravel の dd だけを自分のプロジェクトで使う dd関数だけ切り出したパッケージがあるので、それを使えば、好きなプロジェクトファイルで dd 関数が使える。 composer require --dev larapack/dd 依存パッケージがあるので、composer で インストールする。…

laravelのジョブ・キュー・ワーカーを試す。

laravel ジョブ・キューモデル laravel には、ジョブ・ワーカーとキューがデフォルトで用意されています。 これを少し試してみました。 今回試すこと キューにジョブをいれて、ワーカーで処理をする。 queue でできること ジョブを待ち続けて実行する。 php …

Synfomy::Processが詰まって60秒くらいで終了してしまう理由

symfony processが詰まる理由 symfony processを使っていると、プロセスが60秒で終了してしまう。 Symfony Processのデフォルトタイムアウトかな。 Exit code 143 corresponds to SIGTERM, which is the signal sent by default when you run kill . Did you…

laravel のスケジュール実行とジョブと例外処理について調べておいた。

laravel のスケジュール実行 laravel で cron のようなジョブ実行ができる。cron書式で書いて旧世代のワタシに理解しやすくて便利そうなので、スケジュールをつかってcronを管理できたらいいなと思った laravel のスケジュールの流れ Kernel.phpに記述 artis…

phpでprotectedなメソッドにアクセスする。

phpでprotectedなメソッドにアクセスする。 この様なときに使う必要があった、laravelが持ってる protected な プロパティに強引にアクセスする。 laravelなどのフレームワークが内部に持ってるコールバックやプロパティを取り出して調べたり、意図通り、正…