6

通常のARray、SPLアレイ、SPLデータストレージの違い*使用法*シーンリオは何ですか?誰かがSPLarrayとSPLobjectsrorageの使用法のいくつかの実用的な例を与えることができれば素晴らしいでしょう。

4

1 に答える 1

4

の主な利点はSplFixedArray、配列のユースケースの特定のサブセットでは、はるかに高速であるということです(そのサブセットは、整数キーのみを持ち、長さが固定されている配列です)。したがって、たとえば:

$a = array("foo", $bar, 7, ... thousands of values ..., $quux);
$b = \SplFixedArray::fromArray($a);

// here, $b will be much faster to use than $a

このクラスの使用法は、文字通り、配列を使用できるものであれば何でもかまいませんが、以前は遅すぎることがわかりました。多くの場合、これは大規模なデータセットでの複雑な計算に当てはまります。典型的なPHPベースのWebアプリケーションまたはWebサイトの場合、パフォーマンスの向上が必要になるケースは(あるとしても)多くはありません。


ただし、このSplObjectStorageクラスは、あらゆる種類の一般的なケースで役立ちます。オブジェクトを他のデータにマップする方法を提供します。したがって、たとえば、Routeクラスへのマッピングを提供したいクラスがある場合がありますController

$routeOne = new Route(/* ... */);
$routeTwo = new Route(/* ... */);

$controllerOne = new Controller(/* ... */);
$controllerTwo = new Controller(/* ... */);

$controllers = new \SplObjectStorage();

$controllers[$routeOne] = $controllerOne;
$controllers[$routeTwo] = $controllerTwo;

// now you can look up a controller for a given route by:  $controllers[$route]
于 2012-07-21T14:50:16.617 に答える