PHP7のジェネレーターの戻り式
以前のバージョンのPHPでは、ジェネレーター関数は式を返すことができませんでしたが、PHP 5.5から、ジェネレーターの戻り式が既存の式に追加されました。ジェネレーターの戻り式を使用することで、ジェネレーター内でreturnステートメントを簡単に使用でき、最終的な式の値も返します。
- ジェネレータの戻り式を使用すると、式の値のみを返すことができますが、参照を返すことはできません。新しいGenerator::getReturn()を使用する メソッドでは、ジェネレーター関数が定義された値の生成を終了したときに使用できる値をフェッチできます。
- PHP 7ジェネレーターを使用すると、ジェネレーターの戻り式から最終値を返すことができます。 $ generator> getReturn()を使用して、戻り式を取得できます。 PHP 7では、ジェネレーターを実行するクライアントコードが保持できるプログラムのコルーチンカウントから、ジェネレーターが最終値を返すことができるためです。
ジェネレーターの戻り式:例1
<html> <head> <title> PHP 7 Feature : Generator Return Expressions </title> </head> <body> <?php $generator = (function(){ yield "five"; yield "six"; yield "seven"; return "eight"; }) (); foreach ($generator as $val){ echo $val, PHP_EOL; } echo $generator ->getReturn(), PHP_EOL; ?> </body> </html>
five six seven eight
- 上記のコードをエディターで記述し、上記の例に示すように必要なHTMLコードを記述できます。また、HTMLの本体部分は、ジェネレーターの戻り式に実際のPHP7コードを挿入します。
- 次に、$generatorとして参照を持つ関数が宣言されます。
- $ generatorを参照して、yieldを「5」、「6」、「7」、「8」と定義しました。
- 最後に、「$ generator」関数を最後まで繰り返し(PHP_EOL)、ジェネレーターの戻り式とともにyieldsの値をエコーします。
ジェネレーターの戻り式:例2
<html> <head> <title> PHP 7 Feature: Generator Return Expressions Example </title> </head> <body> <?php function gen(){ yield 'A'; yield 'B'; yield 'C'; return 'gen-return'; } $generator = gen(); var_dump($generator); foreach ($generator as $letter){ echo $letter; } var_dump($generator->getReturn()); ?> </body> </html>
上記のPHPプログラムの出力は次のようになります-
object(Generator)#1 (0) { }ABCstring(10) "gen-return"
-
PHP pi()関数
定義と使用法 pi ()関数は数学定数Πの値を返します。 PHPで定義された事前定義された定数に等しいfloat値3.14159265359を返します--M_PI 構文 pi ( void ) : float パラメータ この関数はパラメータを必要としません 戻り値 PHP pi()関数は、数学定数Πを返し、事前定義された数学定数M-PIと同じです。 M_PIを使用する代わりに、数式でpi()関数を使用できます。 PHPバージョン この関数は、PHPバージョン4.x、PHP 5.x、およびPHP7.xで使用できます。 例 次の例では、円の面積の計算にpi()関数を使用しています。
-
ファイル名がUTF-8の場合、PHP pathinfo()が正しいファイル名を返すようにします
ほとんどのコアPHP関数は、Latin-1以外の文字セットを処理しません。ただし、「pathinfo」の前に「setlocale」を配置すると、UTF-8でエンコードされている場合でも正しいファイル名を返すことができます。 デフォルトでは、「C」ロケールで実行され、CLIスクリプトはデフォルトのutf-8ロケールで実行されます。他の関数を呼び出す前に、サーバーのロケールを「C」から「C.UTF-8」または「en_US.UTF-8」に変更する必要があります。 setlocale(LC_ALL,'en_US.UTF-8'); pathinfo($OriginalName, PAT