PHP 5.5 の新機能と非推奨関数の概要
PHP5.5の新機能とphp5.4との違いのまとめ
ここで、PHP5.5 の考えられる新機能を見てみましょう:
1. Windows XP および 2003 のサポートを終了します
2. 非推奨の修飾子
e 修飾子は、単に単純な文字列置換を行うのではなく、置換文字列を PHP コードとして評価するように preg_replace 関数に指示します。当然のことながら、この動作によりセキュリティ問題が次々と発生します。これが、PHP5.5 でこの修飾子を使用すると非推奨の警告がスローされる理由です。代わりに、preg_replace_callback 関数を使用する必要があります。この変更の詳細については、RFC を参照してください。
3. 新しい関数とクラス
boolval()
PHP には、strval、intval、および floatval 関数が実装されています。一貫性を保つために boolval 関数が追加されます。これは完全にブール計算またはコールバック関数として使用できます。
hash_pbkdf2()
PBKDF2の正式名称は「Password-Based Key Derivation Function 2」で、その名の通りパスワードから暗号鍵を導出するアルゴリズムです。これには、パスワードのハッシュ化にも使用できる暗号化アルゴリズムが必要です。より詳細な説明と使用例
array_column()
$userNames = array_column($users, 'name'); // is the same as $userNames = []; foreach ($users as $user) { $userNames[] = $user['name']; }
国際拡張子
intl 拡張子には多くの改良が加えられる予定です。たとえば、新しい IntlCalendar、IntlGregorianCalendar、IntlTimeZone、IntlBreakIterator、IntlRuleBasedBreakIterator、IntlCodePointBreakIterator クラスが追加されます。以前は、intl に関する拡張機能がこれほどたくさんあるとは知りませんでした。さらに詳しく知りたい場合は、最新のお知らせにアクセスして Calendar と BreakIterator を探すことをお勧めします。
4. 単純なパスワードハッシュ API
$password = "foo"; // creating the hash $hash = password_hash($password, PASSWORD_BCRYPT); // verifying a password if (password_verify($password, $hash)) { // password correct! } else { // password wrong! }
5. 新しい言語機能と機能強化。
定数参照
「定数参照」とは、配列が文字列および配列リテラルを直接操作できることを意味します。例を 2 つ挙げます:
function randomHexString($length) { $str = ''; for ($i = 0; $i < $length; ++$i) { $str .= "0123456789abcdef"[mt_rand(0, 15)]; // direct dereference of string } } function randomBool() { return [false, true][mt_rand(0, 1)]; // direct dereference of array }
この機能が実際に使用されるとは思いませんが、言語の一貫性が高まります。 RFC を参照してください。
6. empty() 関数 (およびその他の式) を呼び出して連携させます
現在、empty() 言語構造は変数内でのみ使用でき、他の式では使用できません。
empty($this->getFriends()) のような特定のコードでは、エラーがスローされます。 PHP5.5 以降、これは有効なコードになります
7. 完全なカテゴリ名を取得します
PHP5.3 では、名前空間エイリアスクラスと名前空間短縮版の機能が導入されています。ただし、これは文字列クラス名には当てはまりません
use Some\Deeply\Nested\Namespace\FooBar; // does not work, because this will try to use the global `FooBar` class $reflection = new ReflectionClass('FooBar'); echo FooBar::class;
この問題を解決するには、クラス
8.パラメータジャンプ
複数のオプションのパラメーターを受け入れる関数がある場合、現在のところ、最後のパラメーターだけを変更し、他のすべてのパラメーターをデフォルト値のままにする方法はありません。
次のような関数がある場合の RFC の例:
function create_query($where, $order_by, $join_type='', $execute = false, $report_errors = true) { ... }
それでは、他の 2 つはデフォルトですが、$report_errors=false を設定する方法はありますか。このパラメータのジャンプの問題を解決するために、次のことが提案されています:
create_query("deleted=0", "name", default, default, false);
個人的にはこの提案はあまり好きではありません。私の目から見ると、コードにはこの機能が必要ですが、設計が不十分なだけです。関数には 12 個のオプションのパラメーターを含めることはできません。
9. スカラー型のヒント
スカラー型ヒントは当初 5.4 に導入される予定でしたが、コンセンサスが得られなかったため導入されませんでした。スカラー型ヒントが PHP に組み込まれていない理由の詳細については、「スカラー型ヒントは思っているよりも難しい」を参照してください。
PHP5.5ではスカラー型ヒントの議論が再び出てきましたが、これはなかなか良い提案だと思います。
タイプを指定するには入力値が必要です。例: 123、123.0、「123」はすべて有効な int パラメーター入力ですが、「hello world」は有効ではありません。これは内部関数の動作と一致しています。
function foo(int $i) { ... } foo(1); // $i = 1 foo(1.0); // $i = 1 foo("1"); // $i = 1 foo("1abc"); // not yet clear, maybe $i = 1 with notice foo(1.5); // not yet clear, maybe $i = 1 with notice foo([]); // error foo("abc"); // error
10.ゲッターとセッター
これらの getXYZ() メソッドと setXYZ($value) メソッドを書くのが好きではなかったのであれば、これは最も歓迎すべき変更です。プロパティの設定/読み取りを定義する新しい構文を追加することが提案されています:
<?php class TimePeriod { public $seconds; public $hours { get { return $this->seconds / 3600; } set { $this->seconds = $value * 3600; } } } $timePeriod = new TimePeriod; $timePeriod->hours = 10; var_dump($timePeriod->seconds); // int(36000) var_dump($timePeriod->hours); // int(10)
もちろん、読み取り専用プロパティなど、さらに多くの機能があります。さらに詳しく知りたい場合は、RFC を参照してください。
11. ジェネレーター
カスタム イテレータの実装には多くの定型コードが必要となるため、現在、カスタム イテレータはほとんど使用されません。ジェネレーターはこの問題を解決し、イテレーターを作成するための単純な定型コードを提供します。
たとえば、範囲関数をイテレータとして定義できます。
<?php function *xrange($start, $end, $step = 1) { for ($i = $start; $i < $end; $i += $step) { yield $i; } } foreach (xrange(10, 20) as $i) { // ... }
上述xrange函数具有与内建函数相同的行为,但有一点区别:不是返回一个数组的所有值,而是返回一个迭代器动态生成的值。
12.列表解析和生成器表达式
列表解析提供一个简单的方法对数组进行小规模操作:
$firstNames = [foreach ($users as $user) yield $user->firstName];
上述列表解析相等于下面的代码:
$firstNames = []; foreach ($users as $user) { $firstNames[] = $user->firstName; }
也可以这样过滤数组:
$underageUsers = [foreach ($users as $user) if ($user->age < 18) yield $user];
生成器表达式也很类似,但是返回一个迭代器(用于动态生成值)而不是一个数组。
13.finally关键字
这个和java中的finally一样,经典的try ... catch ... finally 三段式异常处理。
14.foreach 支持list()
对于“数组的数组”进行迭代,之前需要使用两个foreach,现在只需要使用foreach + list了,但是这个数组的数组中的每个数组的个数需要一样。看文档的例子一看就明白了。
$array = [ [1, 2], [3, 4], ]; foreach ($array as list($a, $b)) { echo "A: $a; B: $b\n"; }
15.增加了opcache扩展
使用opcache会提高php的性能,你可以和其他扩展一样静态编译(--enable-opcache)或者动态扩展(zend_extension)加入这个优化项。
16.非变量array和string也能支持下标获取了
echo array(1, 2, 3)[0];
echo [1, 2, 3][0];
echo "foobar"[2];

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 関数を通じて画像の遅延読み込み効果を最適化するにはどうすればよいですか?インターネットの発展に伴い、Web ページ内の画像の数が増加し、ページの読み込み速度に圧力がかかっています。ユーザーエクスペリエンスを向上させ、読み込み時間を短縮するために、画像の遅延読み込みテクノロジーを使用できます。画像の遅延読み込みにより、画像の読み込みが遅れる可能性があります。画像は、ユーザーが表示領域までスクロールしたときにのみ読み込まれるため、ページの読み込み時間が短縮され、ユーザー エクスペリエンスが向上します。 PHP Web ページを作成する場合、いくつかの関数を作成することで画像の遅延読み込み効果を最適化できます。詳細は以下

PHP 関数を使用してメモリ使用量を削減する方法 開発において、メモリ使用量は非常に重要な考慮事項です。プログラムで大量のメモリが使用されると、速度が低下したり、プログラムがクラッシュしたりする可能性があります。したがって、メモリ使用量を合理的に管理し削減することは、すべての PHP 開発者が注意を払うべき問題です。この記事では、PHP 関数を通じてメモリ使用量を削減するいくつかの方法を紹介し、読者の参考となる具体的なコード例を示します。 PHP で変数を解放するには、unset() 関数を使用します。変数が不要になった場合は、次を使用します。

PHP 関数の紹介—curl_multi_getcontent(): cURL セッションのコンテンツを取得する PHP 開発では、ネットワークを介して他のサーバーにデータを要求することがよくあります。 cURL (ClientURL) は、PHP でのネットワーク通信に使用される強力な PHP 拡張ライブラリです。 cURL は一連の関数を提供します。そのうちの 1 つは、cURL セッションのコンテンツを取得するために使用されるcurl_multi_getcontent()です。

PHPDeprecated: Functionereg_replace()isdeprecated-Solution PHP で開発する場合、一部の関数が非推奨と宣言されるという問題によく遭遇します。これは、最新の PHP バージョンでは、これらの関数が削除または置き換えられる可能性があることを意味します。一般的な例の 1 つは ereg_replace() 関数です。 ereg_replace

PHPの画像処理関数は、画像の加工・編集に特化した関数群であり、開発者に豊富な画像処理機能を提供します。これらの機能を通じて、開発者は画像のトリミング、拡大縮小、回転、透かしの追加などの操作を実装して、さまざまな画像処理のニーズを満たすことができます。まずはPHPの画像処理関数を使って画像の切り抜き機能を実現する方法を紹介します。 PHP には、画像のトリミングに使用できる imagecrop() 関数が用意されています。トリミング領域の座標とサイズを渡すことで、画像をトリミングできます

PHP 関数の紹介: strtr() 関数 PHP プログラミングにおいて、strtr() 関数は非常に便利な文字列置換関数です。文字列内の指定した文字または文字列を他の文字または文字列に置き換えるのに使用されます。この記事では、strtr() 関数の使用法を紹介し、具体的なコード例をいくつか示します。 strtr() 関数の基本構文は次のとおりです。 strtr(string$str, array$replace) ここで、$str は置換される元の単語です。

PHP 関数には他の言語の関数との類似点がありますが、いくつかの独自の機能もあります。構文的には、PHP 関数は function で宣言され、JavaScript は function で宣言され、Python は def で宣言されます。パラメータと戻り値の点では、PHP 関数はパラメータを受け入れて値を返します。JavaScript と Python にも同様の関数がありますが、構文が異なります。スコープに関しては、PHP、JavaScript、Python の関数はすべてグローバル スコープまたはローカル スコープを持ち、グローバル関数にはどこからでもアクセスできますが、ローカル関数には宣言スコープ内でのみアクセスできます。

さまざまな PHP 関数のパフォーマンスは、アプリケーションの効率にとって非常に重要です。パフォーマンスの良い関数には echo や print などがありますが、str_replace、array_merge、file_get_contents などの関数のパフォーマンスは低くなります。たとえば、str_replace 関数は文字列の置換に使用され、中程度のパフォーマンスを発揮しますが、sprintf 関数は文字列の書式設定に使用されます。パフォーマンス分析によると、1 つの例の実行にかかる時間はわずか 0.05 ミリ秒であり、関数が適切に実行されることが証明されています。したがって、関数を賢く使用すると、アプリケーションをより高速かつ効率的に実行できます。
