魔术方法 __toString()与__autoload()

1.__toString()

该方法用于echo或print一个对象时,将对象转为字符串.

测试用例:

<?php
class toStringObject
{
private $type=”toString Test.”;
/*public function __toString()
{
return $this->type;
}
*/
}
$toString = new toStringObject();
echo $toString;
?>

返回为:

Catchable fatal error: Object of class toStringObject could not be converted to string in C:\xampp\htdocs\toString.php on line 12

直接输出对象会发生致命错误.

将注释掉的__toString()方法取消注释,返回为:

toString Test.

这样可以自定义输出一个对象时要返回的字符串.

2.__autoload() 

该方法用于自动加载要引用或包含的类文件,而不必每次都要include_once()或require_once().

要求:类名必须与包含该类的php文件名保持一致

优点:当需要引入很多类时,不必一个一个引入.

测试用例:

test.php

<?php
function __autoload($class_name)
{
$class_path = ‘./’.$class_name.’.php’;
if(file_exists($class_path)) include_once($class_path);
else die(“Not found this Class”);
}
$sport = new sportClass(iconv(“gbk”,”utf-8″,”你好”));
echo $sport;
?>

sportClass.php

<?php
class sportClass
{
private $cont;
public function __construct($cont)
{
$this->cont=$cont;
}
public function __toString()
{
RETURN $this->cont;
}
}
?>

返回为:

你好