SPL对象存储与SPL阵列与普通阵列


SPL objectstorage vs SPL array vs ordinary array

正常ARray、SPL阵列和SPL数据存储之间的差异、*使用*场景是什么?如果有人能给出一些SPLarray和SPLobjectsrorage的实际使用示例,那就太好了。

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]