目的 Carbonライブラリの操作についてのまとめ。よく使う割に細かいところを忘れがちなので、何度か引っかかったところを整理する。 インスタンス作成 Carbon::parse()で日付のインスタンスを作成する。引数の文字列によって現在時刻以外のインスタンスも作れる $year = 2022; $month = 3; $day = 4; Carbon::parse("$year-$month-$day");
目的 Carbonライブラリの操作についてのまとめ。よく使う割に細かいところを忘れがちなので、何度か引っかかったところを整理する。 インスタンス作成 Carbon::parse()で日付のインスタンスを作成する。引数の文字列によって現在時刻以外のインスタンスも作れる $year = 2022; $month = 3; $day = 4; Carbon::parse("$year-$month-$day");
この記事のモチベーション 「php-fpmとはなにか?」を知るため、PHPのドキュメントを見ました。 しかし、ここに書いていることはまあそうなのですがあまりに焦点が絞られ過ぎてて「php-fpmとはなにか?」に対する答えとしては少し不十分な気がしていました。 例えるなら数学の問題に答えるにあたって、途中式を飛ばしたり証明の過程を飛ばしたりというような感じ。 不十分というのは、それを理解するための段階をすっ飛ばして答えだけが書かれている状態のことを指しています。 その不十分なところを自分も曖昧にしか理解できていない気がしており、いい機会なので整理しておこうというのがこの記事のモチベーションです。 そのためこの記事は、「php-fpmとはなにか?」をプロセス→Webサーバー→実行方式と順を追って説明していく構成になっています。 「細けぇこたぁいいんだ、おらぁ今すぐ答えだけ知りてぇンダ」という方
弊社で毎月開催し、PHPエンジニアの間で好評いただいているPHP TechCafe。2023年8月のイベントでは「PHP8.3の新機能」について語り合いました。弊社のメンバーが事前にまとめてきた情報にしたがって、他の参加者に意見を頂いて語り合いながら学びました。今回はその内容についてレポートします。 rakus.connpass.com PHP8.3 新機能について Marking overridden method オブジェクトを継承していることを示すattributeが追加 ※プロパティのオーバーライドは対象外 Type Class Constants class、interface、trait、およびenumの定数に型を設定できるようになった ※継承しているクラス定数の型を拡張することはできない。 mb_str_pad str_padのマルチバイト用関数が追加 Dynamic cla
PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同
declare(strict_types=1); とは、PHP7から導入された、厳格な型検査モードの指定構文です。 有効範囲をあまり把握してなかったのでまとめてみました。 strict_types基本の動き 例えばこんなコード。 <?php function add(int $a, int $b): int { return $a + $b; } var_dump(add(1.0, 2.0)); この状態で単体実行すると、int(3)が出力されます。 渡しているのはdouble型なのですが、よしなにキャストされて処理されています。まあ、昔ながらのPHPらしい動きです。 ここで、declare(strict_types=1)を有効にしてみます。
FrankenPHP 1.0には、Symphony、Laravel、WordPressなどのネイティブサポートが含まれるほか、Caddyを搭載したプロダクショングレードのPHPサーバであり、PHPアプリのスタンドアロンで実行可能なバイナリとしてのパッケージ化が可能となっている。 さらに、PHP-FPMとNgnixを個別に実行する必要がなく、1つのサービスのみでPHPサーバを提供できるようになるとともに、PHP 8.2以降のほとんどのPHP機能拡張、およびすべてのCaddyモジュールと互換性がある。 ほかにも、アプリケーション起動してメモリに保持するワーカーモード、JavaScriptイベントとしてWebブラウザへ送信されるリアルタイムイベント、ZstandardおよびGzip圧縮、構造化されたログ、Prometheusメトリクスを使用したCaddyの監視、HTTPS・HTTP/2・HTTP
../ PHPのAPCuというライブラリを利用してみた。標準のPHPには同梱されていないので、ダウンロードしてDLLを追加した。APCuは「APC User Cache」の略である。APCは「Alternative PHP Cache」の略である。(ちなみに、PHPは「PHP Hypertext Preprocessor」の略である。再帰的な略になっている。GNUの「GNU's Not Unix!」を真似たのかな。) JavaとTomcatでは、高速化のため、またDBやファイルへのアクセス負荷を軽減するために、メモリ上にキャッシュを作成して利用することがたびたびある。探索時にはメモリ上のキャッシュから探し、なければDBやファイルから検索したり、読み込んだりする。PHPでは、ブラウザで画面が遷移するごと(redirectするごと)に新たなプロセスが生成されるので、メモリ上に生成したオブジェク
この関数の返り値の型は何にすればいいでしょうか。 null? void? nullはnullという型ですし、voidは『値を返さない』であって『呼び出し元に返らない』ではありません。 ということで『呼び出し元に返らない』を明記できる型が提案されました。 返らないのに返り値とは。 PHP8.1以降ではこう書けるようになります。 以下は該当のRFC、PHP RFC: noreturn typeの日本語訳です。 PHP RFC: noreturn type Introduction ここ数年の傾向として、元々はPHP docで表現されていた型がPHPネイティブになっていくということがあります。 過去の例としてはスカラー型、返り値の型、UNION型、mixed型、static型などです。 現在、PHPの静的解析ツールは、常に例外を発したり常にexitしたりする関数を示すために、@return no
Deprecated Error: Return type of Foo\Bar\Hoge\Hoge::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice In [/var/www/html/api/vendor/Foo/Bar/src/Hoge/Hoge.php, line 179] 業務で使っているCakePHP4.1のレポジトリをPHP8.0からPHP8.1にしたタイミングで大量に発生した。 これは何なのかっていうのを調べると、PHPのマニュアルに行き着いた。 PHP のバー
PHPのフレームワークであるLaravelでは、DBアクセスを行うのにEloquentやQueryBuilderという便利なモジュールがあります。 ですが、プロジェクトによってはLaravel以外のマイクロフレームワークや、フレームワークなしの環境だけども、ORマッパーのEloquentだけは使いという状況もあります。 そこで今回は、Laravelフレームワークを使わずに、Eloquentを利用する方法を説明します。 LaravelとEloquentの関係 EloquentはLaravel向けののORマッパーライブラリとして有名ですが、Eloquent自体はLaravelと一緒に使わなくても、composerのilluminate/databaseという独立したパッケージとして提供されています。 ですので、illuminate/databaseパッケージだけを個別で取得すれば、Larave
【第4回】Composerを使ってお手軽アプリケーション開発 本連載ではComposerで公開されているパッケージの中から、フレームワークを問わず汎用的に使えるライブラリをサンプルコードと共に紹介します。 今回はDBを扱う「Eloquent(Illuminate/Database)」というORMを紹介します。 ORMとEloquent ORMとは? ORMは「Object Relational Mapping (オブジェクト関係マッピング)」と呼ばれている、オプジェクト指向で書かれているプログラムから、オブジェクト指向ではないデータベースなどのデータをオプジェクト指向のように扱う手法のことを言います。 かみ砕いて説明すると、データベースをオブジェクト指向っぽく扱うためのクラス構造ということです。 例えば、 SELECT 'id', 'name', 'age' FROM users WHER
PHPでは、XDebugを利用することで、ステップ実行などが行えますが、一方で処理が遅くなるデメリットがあります。 プログラムの特定の処理で、デバッグを行う意図はないけれども、XDebugのせいで非常に遅くなる場合、プログラムからXDebugを無効化できます。 以下の手順で、XDebugが有効化されているときに無効化することができます。 if (function_exists('xdebug_disable')) { xdebug_disable(); } function_exists()の判定は、extension_loaded('xdebug')で、Extensionがロードされているかチェックする形でも大丈夫です。 また、XDebugを使用したいが、すべての処理でXDebugのリモートデバッグを自動スタートさせず、明示的に開始させてたい場合は、php.iniに下記の定義を書くことで
PHPStanはPHPの静的解析ツールです。現代のPHPerはみんな使ってるよ。 ……ところで、みなさんはPHPStanをどうやってインストールしているのでしょうか。 PHPStan開発者のOndřej Mirtesは次のように述べています。 多くの場合において、Ondřejの言う通りcomposer require --devが最善のインストール方法です。 この記事では、なぜそれが推奨のインストール方法だと言えるのか、どのような場合に別の選択肢が候補に挙がるのかを解説します。 あと、この記事はPHPカンファレンス沖縄2022でPHPStanの使い方を説明するのにインストール方法まで説明する時間がとれないので書きました。 あらかじめ知っておきたいこと 事前知識: PHPStanパッケージの構造 PHPStanのリポジトリはGitHubでは以下の2リポジトリに分かれています。 https:/
概要 selenium-side-runnerのE2Eテストがあります。composer.jsonのscriptに登録して、ターミナルで実行したら、300秒でタイムアウトしてしまいました。 $ composer e2etest ... The process "./bin/e2etest.sh" exceeded the timeout of 300 seconds. 優先順位1: 環境変数 COMPOSER_PROCESS_TIMEOUT 一時的にタイムアウト秒数を長くするには、環境変数COMPOSER_PROCESS_TIMEOUTに秒数を設定します。 0はタイムアウトなし無制限です。 $ COMPOSER_PROCESS_TIMEOUT=600 composer e2etest または $ export COMPOSER_PROCESS_TIMEOUT=600 $ composer
はじめに Windows上に最新版のPHPをインストールして使い始めるまでに必要な最低現の手順を、備忘録としてメモしてみました。 このドキュメントはローカル開発環境の構築をターゲットにしていて、Webサーバ環境は目的としていませんのでご注意ください。 事前準備 再頒布可能パッケージのインストール PHPバイナリの実行に「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」が必要な為、以下よりダウンロード・インストールしておく。 https://www.microsoft.com/ja-jp/download/details.aspx?id=48145 インストール手順 PHPのインストール 以下の手順でPHP For Windowsをインストールする。 PHP For Window をダウンロードする http://windows.php.net/down
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く