SPL objectstorage vs SPL数组与普通数组

时间:2012-07-21 12:51:32

标签: php arrays spl

普通ARray,SPL阵列和SPL数据存储之间的差异,* 用法 * scenerio是什么?如果有人能够提供一些使用SPLarray和SPL物件的实际例子,那就太棒了。

1 个答案:

答案 0 :(得分: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应用程序或网站,不会有很多(如果有的话)您需要提升性能的情况。


然而,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]