<?php
trait A{
public $a = 'a';
private $d = 'd';
public function sayHello(){
echo 'Hello ';
}
}
class B{
public $b = 'b';
public function sayHello(){
return ' world !';
}
}
class C extends B{
use A;
public $b = 'c';
}
var_dump(5,7,(new C)->sayHello(),aac(4,5),'<br />');
echo 5,7,(new C)->sayHello(),aac(4,5),'<br />';
function aac($a,$b){
echo '<hr />';
echo $a,$b;
echo '<hr />';
echo $a+$b;
echo '<hr />';
return $a+$b;
45
9
int(5) int(7) NULL int(9) string(6) "
" 57Hello
45
9
trait A{
public $a = 'a';
private $d = 'd';
public function sayHello(){
echo 'Hello ';
}
}
class B{
public $b = 'b';
public function sayHello(){
return ' world !';
}
}
class C extends B{
use A;
public $b = 'c';
}
var_dump(5,7,(new C)->sayHello(),aac(4,5),'<br />');
echo 5,7,(new C)->sayHello(),aac(4,5),'<br />';
function aac($a,$b){
echo '<hr />';
echo $a,$b;
echo '<hr />';
echo $a+$b;
echo '<hr />';
return $a+$b;
}
打印结果:
Hello
45
9
int(5) int(7) NULL int(9) string(6) "
" 57Hello
45
9
9
总结:
var_dump PHP文档说明中提到:和直接将结果输出到浏览器一样,可使用输出控制函数来捕获当前函数的输出,然后(例如)保存到一个 string中。
换句话说就是,var_dump会执行多变量或者多表达式,并对中间过程输出进行缓存,最后一起输出。简单理解就是如果var_dump中有调用、表达式的输出,则会自左而右优先输出这些调用或表达式中间过程的输出,最后才将结果输出。
而echo则是自左向右依次对多变量、表达式、调用执行和输出。