标签: spl

PHP的SPL:涉及数组的接口是否涵盖所有数组属性?

通过实现所有必要的SPL接口,是否可以编写一个几乎与实际PHP数组无法区分的类?他们是否遗漏了任何关键的东西?

我想构建一个更高级的Array对象,但我想确保如果我用自定义Array类替换它们,我不会破坏现有的使用数组的应用程序.

php arrays spl

6
推荐指数
1
解决办法
592
查看次数

PHP,SPL预定义常量

我在哪里可以获取一些参考SPL predefined constantsSELF_FIRST,CHILD_FIRST?在php.net上我没有得到太多(只是他们的类型).

php spl reference constants

6
推荐指数
1
解决办法
1873
查看次数

如何使用SPL检索完整目录树?

如何使用SPL,可能使用RecursiveDirectoryIterator和检索完整目录树RecursiveIteratorIterator

php spl

6
推荐指数
1
解决办法
5845
查看次数

SPL vs. Array:我们什么时候应该使用SPL?什么时候应该在PHP中使用Array?

在java和C++中我们不知道size - 数组没有像在PHP中那样使用,而是使用了LinkedList等.

在PHP中存在SPL,但大多数时候程序员都使用数组,为什么(因为人们不了解SPL)?

当我们在PHP和whenSPL中使用Array时,PHP和Java/C++之间的区别是什么?

php arrays spl

6
推荐指数
1
解决办法
3447
查看次数

如何使用SplFileObject获取行数?

$file = new SplFileObject('/path/to/file.txt');
Run Code Online (Sandbox Code Playgroud)

如何找到文件中的行数SplFileObject

php spl

6
推荐指数
4
解决办法
9458
查看次数

使用SplObjectStorage作为数据映射,您可以使用可变数组作为数据吗?

在以下代码中:

$storage = new \SplObjectStorage();

$fooA = new \StdClass();
$fooB = new \StdClass();

$storage[$fooA] = 1;
$storage[$fooB] = array();

$storage[$fooA] = 2;
$storage[$fooB][] = 'test';
Run Code Online (Sandbox Code Playgroud)

我希望$storage[$fooA]1,它是.我也希望$storage[$fooB]如此array('test'),但事实并非如此.这也会触发一条通知,内容为"间接修改SplObjectStorage的重载元素对...没有影响"

我认为这是因为ArrayAccessin 的实现SplObjectStorage不通过引用返回值.

有没有办法SplObjectStorage用作数据映射,其中键是对象,值是可变数组?做这种工作还有其他可行的选择吗?

php spl arrayaccess splobjectstorage

6
推荐指数
1
解决办法
1491
查看次数

PHP SplHeap真的是一堆吗?

堆的PHP实现真的是一个完整的实现吗?

当我读到这篇文章http://en.wikipedia.org/wiki/Heap_%28data_structure%29时,我认为子节点有一个特定的父节点,而父节点有特定的子节点.

当我查看PHP文档中的示例时,http://au.php.net/manual/en/class.splheap.php,似乎子节点都共享相同的"级别",但特定的父级/儿童信息并不重要.

例如,哪个节点是PHP示例中排名第10的三个节点中的每个节点的父节点?

在我的应用程序中,当用户选择"节点156"时,我需要知道它的孩子是谁,这样我每次访问都可以支付.(我可以使他们的身份'节点1561','节点1562'等,所以这种关系很明显).

PHP堆实现是否不完整?我应该忘记Spl课程并走自己的路吗?或者我错过了关于堆应该如何运作的一些信息?或许我应该看一下特定的堆变体?

谢谢堆!

php spl

6
推荐指数
2
解决办法
2698
查看次数

从SplFileInfo对象获取流资源

我正在调用一个期望文件的流资源的方法,如下所示:

$obj->method(fopen($splFileInfo, 'r+'));
Run Code Online (Sandbox Code Playgroud)

$splFileInfo对象是一个实例SplFileInfo.

有没有办法获取$splFileInfo对象的流资源而无需调用fopen

php spl splfileobject

6
推荐指数
0
解决办法
1551
查看次数

ArrayObject,getIterator();

我想知道是什么getIterator(),我会解释:

据我所知,getIterator我们称之为一种方法,包括一个外部迭代器.

问题是getIterator包含它自己的方法,闭包认为看起来是相同的Iterator接口,但它不能是一个接口,它可以是类,但我试图在SPL.php源代码中搜索它,但没有找到任何,也许我让它变得比实际更复杂,如果有人可以帮助我理解它在SPL.php源代码中的位置以及它是什么(类等),我会很高兴.谢谢大家,祝你有个愉快的一天.

php spl arrayobject

5
推荐指数
1
解决办法
3263
查看次数

如果SplObjectStorage在仍然附加对象的同时进行销毁,是否会留下内存泄漏引用?

如果SplObjectStorage实例在仍然附着一些对象的情况下发生破坏,它是否首先隐式分离对象,或者SplObjectStorage对那些悬空对象的引用会导致内存泄漏?我试图确定是否需要使用用户区代码“分离销毁前剩下的任何东西”来防止这种内存泄漏。

$storage = new SplObjectStorage();
$x = new stdClass();
$y = new stdClass();
$storage->attach($x);
$storage->attach($y);
$storage = null; 
// did not explicitly detach $x and $y... does $storage's destruction do it?
// or do the zval counts on $x and $y now off by one?
$x = null;
$y = null;
// at this point, are there two dangling references to $x and $y,
// simply because $storage did not dereference from them before destroying itself?
Run Code Online (Sandbox Code Playgroud)

php spl

5
推荐指数
1
解决办法
323
查看次数