私のお気に入りの PHP 関数トップ 10

in Vlog

(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.

に似ている levenshteinmethaphone 指定された文字列の音声表現を生成できます。

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 関数は何ですか? 教えて ツイッター!

tpyoに気づきましたか? PR を送信して修正することができます。 このブログの最新情報を知りたい場合は、私をフォローしてください。 ツイッター または私のニュースレターを購読してください:

//platform.twitter.com/widgets.js

関連記事

前の投稿
Xbox One 向けの新しい Forza Motorsport はクラウド バージョンであり、ネイティブではありません
次の投稿
メッセンジャーバードのすべてのタイプを発見