达内整理答案:
1、__construct() :实例化对象时自动调用.
2、__destruct() :销毁对象或脚本执行结束时自动调用.
3、__call() :调用对象不存在得方法时执行此函数.
4、__get() :获取对象不存在的属性时执行此函数.
5、__set() :设置对象不存在的属性时执行此函数.
6、__isset() : 检测对象的某个属性是否存在时执行此函数.
7、__unset() :销毁对象的某个属性时执行此函数.
8、__toString() :将对象当作字符串输出时执行此函数.
9、__clone() :克隆对象时执行此函数.
10、__autoload() :实例化对象时,当类不存在时,执行此函数自动加载类.
11、__sleep() :serialize之前被调用,可以指定要序列化的对象属性.
12、__wakeup :unserialize之前被调用,可以执行对象的初始化工作.
13、__set_state() :调用var_export时,被调用.用__set_state的返回值做为var_export的返回值.
14、__invoke() :将对象当作函数来使用时执行此方法,通常不推荐这样做.
7、简述php的垃圾收集机制.
答案:php中的变量存储在变量容器zval中,zval中除了存储变量类型和值外,还有is_ref和refcount字段.refcount表示指向变量的元素个数,is_ref表示变量是否有别名.如果refcount为0时,就回收该变量容器.如果一个zval的refcount减1之后大于0,它就会进入垃圾缓冲区.当缓冲区达到最大值后,回收算法会循环遍历zval,判断其是否为垃圾,并进行释放处理.
关于此问题(http://blog.csdn.net/niluchen/article/details/9468365)有各为详细的讲解!
8、用php实现一个双向队列.
队列是一种线性表,按照先进先出的原则进行
单向队列:只能从头进,从尾出
双向队列:头尾都可以进出
class DuiLie {
private $array = array();//声明空数组
public function setFirst($item){
return array_unshift($this->array,$item);//头入列
}
public function delFirst(){
return array_shift($this->array);//头出列
}
public function setLast($item){
return array_push($this->array,$item);//尾入列
}
public function delLast(){
return array_pop($this->array,$item);//尾出列
}
public function show(){
var_dump($this->array);//打印数组
}
public function Del(){
unset($this->array);//清空数组
}
}
以上就是达内给大家做的内容详解,更多关于IT的学习,请继续关注达内