小编use*_*621的帖子

可以克隆PHP生成器吗?

在PHP文档中,它说:

然而,这种灵活性需要付出代价:生成器只是前向迭代器,一旦迭代开始就无法重绕.这也意味着同一个生成器不能多次迭代:生成器需要通过再次调用生成器函数来重建,或者通过clone关键字克隆.文档

但是我尝试编写一个克隆我从方法收到的生成器对象的代码,并且我收到一个错误,指出无法克隆生成器对象:

class Course {
    private $students = array("avi" , "haim" , "maor" , "liran" , "yossi");

    function generateStudents() {
        foreach ($this->students as $student) {
            yield $student;
        }
    }
}

$ob = new Course();
$generator = $ob->generateStudents();

// Fatal error: Trying to clone an uncloneable object of class Generator
$generator2 = clone $generator;

?>
Run Code Online (Sandbox Code Playgroud)

php oop clone generator

10
推荐指数
1
解决办法
866
查看次数

zlib.output_compression和output_buffering

我可以通过将zlib.output_compression指令设置为来压缩输出on,然后将output_buffering指令设置为off

其次,我读到我可以为zlib.output_compression指令设置一个数字值,指定一个特定的缓冲区大小.但是如果我还将output_buffering指令设置为不同的字节数值呢?最大缓冲区大小是多少?

php compression buffer

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

如果有输出,无法更改标题?

根据我的研究,在脚本输出后无法更改标题.那么为什么在我编写的代码示例中,脚本在创建新标题之前有几个输出,但一切正常?

<?php
$name = "tommy" ;
?>

<?php 
headers_sent($filename, $linenum) ;
header("name: $name") ;
echo "tommy <br>" ;
echo "Headers  sent in $filename on line $linenum" ;
?>
Run Code Online (Sandbox Code Playgroud)

此外,输出表示标题是在第0行发送的...如果我之后添加了标题,那怎么可能呢?

php output

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

PHP中的变量函数如何工作?

在php.net中写道如下:

变量函数不适用于语言结构,如echo,print,unset(),isset(),empty(),include,require等.利用包装函数将这些结构中的任何一个用作可变函数.

资源

那是什么意思?
任何人都可以举例,因为我尝试在回声中使用变量函数,它完美地工作:

function city()
{
    return "new york";
}
$var = "city";
echo "city:  "  . $var(); 
Run Code Online (Sandbox Code Playgroud)

php function

3
推荐指数
1
解决办法
119
查看次数

标签 统计

php ×4

buffer ×1

clone ×1

compression ×1

function ×1

generator ×1

oop ×1

output ×1