标签: spl

在编写自己的函数之前,我们如何让编码人员查找现有函数?

为什么这么多人仍然在标准库中编写糟糕的版本?不要追求PHP开发人员,但是人们去阅读PHP SPL

php spl

7
推荐指数
4
解决办法
662
查看次数

iterator_to_array

DatePeriod是一个用于处理重复日期的PHP类.它的方法数量非常有限.因此,当我想要使用重复日期执行基本数组函数时,我必须将其复制到数组中iterator_to_array.奇怪的是,复制它似乎破坏了它.有什么想法吗?

$p=new DatePeriod(date_create('2008-01-01'),
                  DateInterval::createFromDateString( "+2 days" ),
                  date_create('2008-12-31')); 

echo count(iterator_to_array($p)); //183 

$a=iterator_to_array($p); 
echo count($a); //0 
Run Code Online (Sandbox Code Playgroud)

php oop spl iterator

7
推荐指数
1
解决办法
4764
查看次数

SplObjectStorage不能与String一起使用,该怎么办?

有人建议使用SplObjectStorage来跟踪一组独特的东西.很好,除了它不适用于字符串.错误说"SplObjectStorage :: attach()期望参数1是对象,在第59行的fback.php中给出的字符串"

有任何想法吗?

php spl

7
推荐指数
2
解决办法
2883
查看次数

正确扩展PHP中的ArrayObject?

问题:我正在尝试扩展PHP ArrayObject,如下所示.不幸的是,我无法在设置多维对象时使其正常工作,而是因为我在PHP中启用了严格设置而引发错误.(Error: Strict standards: Creating default object from empty value)

问题:如何修改我的课程以自动为我创建不存在的级别?

代码:

$config = new Config;
$config->lvl1_0 = true; // Works
$config->lvl1_1->lvl2 = true; // Throws error as "lvl1" isn't set already

class Config extends ArrayObject
{
    function __construct() {
        parent::__construct(array(), self::ARRAY_AS_PROPS);
    }

    public function offsetSet($k, $v) {
        $v = is_array($v) ? new self($v) : $v;
        return parent::offsetSet($k, $v);
    }
}
Run Code Online (Sandbox Code Playgroud)

php arrays oop spl arrayobject

7
推荐指数
1
解决办法
1万
查看次数

使用RecursiveIteratorIterator列出文件夹中的文件非常棒.我也可以获得父路径和完整路径吗?

我需要在文件夹及其子文件夹中列出所有文件(具有特定扩展名).我使用了RecursiveIteratorIterator,如@Matthew在PHP中的完美答案所列目录中的所有文件.

  • 我将搜索的根设置为"..",并且所有文件名都获得前缀"../".我怎样才能获得文件名?
  • 除文件名外,如何获取其父文件夹名称?
  • ...我怎样才能获得文件名的完整路径?

最后一件事:显示文件树,或者所有没有子目录的目录,都是处理文件时可能想要做的事情的例子.您如何建议将此数据传递给客户端,数据结构如何?

php spl file

7
推荐指数
1
解决办法
9639
查看次数

为什么不能将SplFileInfo转换为布尔值?

PHP的一个局限是对象总是评估为true.但是SplFileinfo(和Symfony的子类UploadedFile)表现不同:

$a = new ArrayIterator();       // or any other class
$b = new SplFileInfo(__FILE__); // file used is not important

if ($a) echo 'true';   // 'true'
if (!$a) echo 'false'; // nothing because $a is true

if ($b) echo 'true';   // 'true'
if (!$b) echo 'false'; // Catchable fatal error: Object of class 
                       // SplFileInfo could not be converted to boolean
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?测试在5.3和5.4.也发生在SplFileObject.可能的相关问题.和2011年的Symfony问题.

php spl truthiness

7
推荐指数
1
解决办法
1307
查看次数

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

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

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

php arrays spl

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

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
查看次数

使用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
查看次数

标签 统计

php ×10

spl ×10

arrays ×3

oop ×2

arrayaccess ×1

arrayobject ×1

file ×1

iterator ×1

splobjectstorage ×1

truthiness ×1