在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) 我可以通过将zlib.output_compression指令设置为来压缩输出on,然后将output_buffering指令设置为off?
其次,我读到我可以为zlib.output_compression指令设置一个数字值,指定一个特定的缓冲区大小.但是如果我还将output_buffering指令设置为不同的字节数值呢?最大缓冲区大小是多少?
根据我的研究,在脚本输出后无法更改标题.那么为什么在我编写的代码示例中,脚本在创建新标题之前有几个输出,但一切正常?
<?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.net中写道如下:
变量函数不适用于语言结构,如echo,print,unset(),isset(),empty(),include,require等.利用包装函数将这些结构中的任何一个用作可变函数.
那是什么意思?
任何人都可以举例,因为我尝试在回声中使用变量函数,它完美地工作:
function city()
{
return "new york";
}
$var = "city";
echo "city: " . $var();
Run Code Online (Sandbox Code Playgroud)