(jp) =
これは、広告が表示される場所です。 代わりに、私の GitHub スポンサー ページを紹介したいと思います。 あなたが定期的な読者で、私のコンテンツが役に立っている場合は、1 回限りまたは毎月のスポンサーシップを検討できます。 このブログまたは私のニュースレターで専用の広告掲載を探している企業の方は、[email protected] までメールでお問い合わせください。
<!–
–>
<!–

–>
実際に PHP に組み込まれている機能に驚かされたことは一度ならずあります。 個人的に好きな機能を紹介します。
# レーベンシュタイン
「レーベンシュタイン」は、2 つの文字列の差 (別名「距離」) を決定するアルゴリズムの名前です。 その名前は、当然のことながら、その発明者であるウラジミール・レーベンシュタインに由来します。
関連する 2 つの単語やフレーズがどの程度似ているかを判断するのは、非常に優れた機能です。 例: 渡す "PHP is awesome" 2回、の「距離」になります 0:
levenshtein("PHP is awesome", "PHP is awesome");
ただし、2 つの異なるフレーズを渡すと、距離が大きくなります。
levenshtein("Dark colour schemes", "are awesome");
上記の 2 つのステートメントがいかに互換性がないかを考えれば、当然のことです
# イースターの日程
PHP には、信じられないかもしれませんが、特定の年のイースターの日付を決定する組み込み関数があります。 イースターの日付は「 最初の日曜日 後 満月 または 春分の後“、私はそれを計算できる PHP に畏敬の念を抱いています。
それとも、単にハードコードされているのでしょうか?
date('Y-m-d', easter_date(2023));
# フォーク
PHP が非同期になる可能性があることをご存知ですか? PHP の CLI バージョンは、 pcntl を含む機能 pcntl_fork 関数。 この関数は基本的に、プロセス フォークを作成するためのラッパーであり、1 つの PHP プロセスが複数のプロセスを生成して管理できるようにします。
PHP でソケットを使用して非同期の子プロセスを作成する簡単な例を次に示します。
function async(Process $process): Process
socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets);
[$parentSocket, $childSocket] = $sockets;
if (($pid = pcntl_fork()) == 0)
socket_close($childSocket);
socket_write($parentSocket, serialize($process->execute()));
socket_close($parentSocket);
exit;
socket_close($parentSocket);
return $process
->setStartTime(time())
->setPid($pid)
->setSocket($childSocket);
私は実際に、すべてを使いやすい API でラップする小さなパッケージを作成しました: spatie/async.
に似ている levenshtein、 methaphone 指定された文字列の音声表現を生成できます。
metaphone("Light color schemes!");
metaphone("Light colour schemes!");
# ビルトイン DNS
どうやらPHPはDNSを理解しています。 と呼ばれる組み込み関数があります。 dns_get_record、その名前が示すように、DNS レコードを取得します。
dns_get_record("stitcher.io");
["host"] => "stitcher.io"
["class"] => "IN"
["ttl"] => 539
["type"] => "NS"
["target"] => "ns1.ichtushosting.com"
# 再帰的な配列のマージ
主に入れたかった array_merge_recursive 長い間、私はそれが何をするのかを誤解していたからです。 多次元配列のマージにはこれを使用する必要があると思っていましたが、そうではありません!
過去の私に説明させたほうがいいかもしれませんが、要約すると、次のように機能します。
$first = [
'key' => 'original'
];
$second = [
'key' => 'override'
];
array_merge_recursive($first, $second);
["key"] =>
"original",
"override",
# 郵便
PHPにはメール機能があります。 メールを送信する機能。 私はそれを使用しませんが、そこにあります:
mail(
string $to,
string $subject,
string $message,
array|string $additional_headers = [],
string $additional_params = ""
): bool
#DL
どうやら、PHPには拡張機能を動的にロードできる関数があり、 その間 あなたのスクリプトが実行されています!
if (! extension_loaded('sqlite'))
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
dl('php_sqlite.dll');
else
dl('sqlite.so');
# ブロブ…つまりグロブ
glob パターンに従ってパス名を見つけます。 説明するのはとても簡単ですが、とても便利です:
glob(__DIR__ . '/content/blog/*.md');
glob(__DIR__ . '/content/*/*.md');
/path/to/content/blog/foo.md,
/path/to/content/other/bar.md,
…
# 太陽情報
最後に、PHP はイースターについて知っているだけでなく、特定の日付の日の出と日の入りも知っています。 また、経度と緯度も必要ですが、日の出と日の入りの時間は場所によって異なるため、これは当然のことです。
date_sun_info(
timestamp: strtotime('2023-01-27'),
latitude: 50.278809,
longitude: 4.286095,
)
["sunrise"] => 1674804140
["sunset"] => 1674836923
["transit"] => 1674820532
["civil_twilight_begin"] => 1674802111
["civil_twilight_end"] => 1674838952
["nautical_twilight_begin"] => 1674799738
["nautical_twilight_end"] => 1674841325
["astronomical_twilight_begin"] => 1674797441
["astronomical_twilight_end"] => 1674843622
お気に入りの PHP 関数は何ですか? 教えて ツイッター!
//platform.twitter.com/widgets.js