はてなキーワード: ホワイトスペースとは
PHP最新版がようやく正式に発表されましたね。新機能等について調べてみたので流行に敏感な人はぜひ今のうちから勉強しておきましょう。
「?>」を積極的に使うことにより、余計なホワイトスペースを混入させてしまう問題がありました。
これは厄介で非常に根が深い問題でしたが、ようやく根本解決として廃止されました。素晴らしいですね。
今後「?>」を使うとコンパイルエラーとなるので注意が必要です。
昨今抽象化抽象化と特に意味もわからず言葉だけ連呼する人間が増えてきました。しかし新PHP時代における抽象化はもはや人間が理解しなくてもできるようになります。
$class = abstract { $人間 = array('name' => 'yamada', 'age' => 20); $佐藤 = array('age' => 20); $動物->name = '花子'; $動物->type = '犬'; function move ($a) { $a->position++; } }; $class->move();
このような処理が、自動で抽象化され再利用できるようになります。もちろんクラス抽象化だけでなく、手続きやデータ構造であっても適切に自動で抽象化されます。
またcatch文を繋げる事で抽象化に失敗した場合を検出することが可能です。
php実行時オプションに強力な型チェックオプション(-compile)が追加されました。
$ php -compile example.php
そのスクリプトにおける全ての処理パターンを実行し、全ての型のチェックを自動で行います。その際、外部に影響を与えるような処理(ファイルへの保存等)は型チェックのみを行い無視されます。
この強力な機能のおかげでもはや静的言語の利点といわれていたコンパイル時の型チェックを軽く超えました。
動的言語でありながら、考えられる全ての型の引数、例外系を全ての関数の組み合わせで網羅的にチェックします(しかもチェック時間は長くても0.数秒という驚異的なチェック能力です!)
これが今回の目玉機能でしょう。
theworld { // 止まった時間の中を動けるのは$dioだけ $dio->foo(); $dio->bar(); };
$dioという特殊変数が用意されているのでその変数を使って処理をすることができます。
用途としては非常に重たい処理をさせるのがいいでしょう。実時間0秒で実行することが可能となります。
ただし9秒までしか止められないので注意が必要です。ですが回避策として以下のようにすれば追加で5秒止めることも可能です。
theworld { $dio->foo(); $dio->bar(); } starplatinum { // 9秒過ぎた時点でこちらへ $jotaro->foo(); };
名前空間(namespace)が非推奨になりました。これを使用するとE_NAMESPACE_YEN_ARIEHENという警告が発生します。
非推奨となった理由ですが明確にはされていません。大人の事情ってやつでしょう。
ただ噂レベルでは、やはりというか区切り文字の「\」がありえへんという声が多かったからではないか?と一部囁かれています。
mandomキーワードが非推奨になりました。mandomはきっかり6秒戻すという機能ですが、逆に言うと6秒きっかりしか戻せないので扱いづらいという問題がありました。
また以下のような処理を書いた場合に$flagがバグ等で常に真になるケースにおいて無限ループとなり、非常に危険だという問題もあります。
// 何かしらの処理・・・ if ( $flag ) { mandom; }
このようにPHP初心者がmandom使って無限ループをさせてしまう事案が後を絶たず、なかなか現実時間が進まないという問題が発生したため、廃止予定となります。
$mail = google_search_exec("メール送信するやつ",2); $mail("user@example.com");
第一引数は検索ワード。PHPというワードは自動で含まれるので指定する必要はありません。
第二引数は検索結果一覧の指定位置。2だと上から二つ目の検索結果のURLのコード小片を使うという意味になります。
また第三引数にはコールバック関数を指定することによりコード小片にフィルターをかけることも可能です。
このような処理がたった2行で書けるというのがPHPの利点ですね。
日本語名の関数が新たに追加されました。これは非常に便利な関数です。
$code = 写経(" $a = 1 + 2; print $a; ");
引数に与えられたコード片を写経します。戻り値に写経結果が返ってくるのでそれを利用するだけです。簡単ですね。
この関数が呼ばれると一瞬処理が止まったように見えますが、実際には自動補完で動作が完了している状態になります。
for($i=0;$i<10000;$i++) { if ( $i % 2 == 0 ) { chronostasis(); } // 何かしらの処理・・・ }
素晴らしい機能ですね。今後はこれ無しじゃプログラムできなさそうです。
用途ですが、言わずもがな今流行の真契約プログラミング用ですね。アサートの代わりに使うとよいです。
function foo ($a) { pc_explosion(!is_null($a),'$aはNULLはダメー!'); // 何かしらの処理・・・ }
テストコードを実行する場合はPCの周囲に人が居ないか気をつけてから実行させましょう。
個人的に良いなと思ったのはpc_explosion関数ですかね。約束事を守らないプログラマーなんぞ爆死しちゃえばいいんです。僕を含めて(お