php学习---class

  特殊的方法__autoload()。它不是一个类方法,而是一个单独的函数;也就是说,可以在任何类声明之外声明这个函数。如果实现了这个函数,它将在实例化一个还没有被声明的类时自动调用__autoload()方法的主要用途是尝试包括或要求任何用来初始化所需类的文件。如下所示,该代码实现将包括一个具有与该类相同名称的文件。
function __autoload($name){
include_once $name.'.php';
}


+展开
-PHP
ini_set("date.timezone","PRC");//设置时间区域
interface Display{//PHP5
function Display();
function __set($name,$value);
function __get($name);
}
abstract class ABSCls{//PHP5
abstract function funcABS($x,$y);
function ABSF(){
return "抽象类的抽象方法";
}
}
class base implements Display{
var $name;
function __construct($name){//PHP5的构造函数
$this->name=$name;
}
function base($name){//PHP5的构造函数
$this->name=$name;
}
function SM(){
echo "Base-->".date("H:i:s"),"<br/>";
}
function Display(){
echo "Base","<br/>";
}
function __destruct(){//PHP5的虚构函数
echo "Base destruct->{$this->name}<br/>";
unset($this->name);
}
//属性读取设置器
function __get($name){
return $this->$name;
}
function __set($name,$value){
$this->$name=$value;
}
}
class child extends base{
function child(){//PHP4的构造函数
parent::base($name);
}
function __construct($name){//PHP5的构造函数
parent::__construct($name);
}
function SM(){
parent::SM();
echo "Child-->".date("H:i:s"),"<br/>";
}
function Display(){
parent::Display();
echo "Child","<br/>";
}
function __destruct(){//PHP5+的虚构函数
parent::__destruct();
}
function __clone(){//PHP5+引入的克隆方法,如果存在次函数则使用关键字clone时将执行该方法
$this->name=$this->name."  clone at time:".date("H:i:s");
}
}
class overload{//重载类,需要实现__call()方法
function __call($method,$p){
if($method=="overFunc"){
if(is_object($p))echo "参数为对象:<br/>".get_class($p)."<br/>";
elseif (is_array($p)){
echo "参数为数组:<br/>";
foreach($p as $pv)echo $pv." ";
}
else echo "其他类型参数--".gettype($p)."--".$p;
}
}
}
//迭代器
class IObjectIterator implements Iterator{
private $obj,$count,$currentIndex;
function __construct($obj){
$this->obj=$obj;
$this->count=count($this->obj->data);
}
function rewind(){
$this->currentIndex=0;
}
function valid(){
return $this->count>$this->currentIndex;
}
function key(){
return $this->currentIndex;
}
function current(){
return $this->obj->data[$this->currentIndex];
}
function next(){
$this->currentIndex++;
}
}
class IObject implements iteratorAggregate{
public $data=array();
function __construct($in){
$this->data=$in;
}
function getIterator(){
return new IObjectIterator($this);
}
function __toString(){//如果存在这个方法,则打印此类的实例时被调用
return "打印返回值测试";
}
}
//final可以标记类不可以继承或者方法不能重载[就是子类中不能存在和父类一样的函数名]
/*final */class fcls{//不可以继承的类
function __construct(){}
/*final */function ffuc(){}
}

class cfcls extends fcls implements Display{
function ffuc(){}
function display(){}
function __get($name){}
function __set($name,$value){}
}
/*//克隆测试代码
$o=new child('bb');
$copy=clone $o;

echo '$copy->name='.$copy->name."<br>";
echo '$o->name='.$o->name."<br>";*/


/*//抽象类测试代码
echo 'ABSCls:'.ABSCls::ABSF()."<br>";*/


/*//迭代测试代码和__toString()测试
$o=new IObject(array(2,4,6,8,10));
$myIterator=$o->getIterator();
for($myIterator->rewind();$myIterator->valid();$myIterator->next()){
$key=$myIterator->key();
$value=$myIterator->current();
echo "$key => $value <br/>";}
echo $o;//调用__toString();
*/


/*//反射测试代码
$info=new ReflectionClass("child");
echo "<pre>$info</pre>";*/

加支付宝好友偷能量挖...


原创文章,转载请注明出处:php学习---class

评论(0)Web开发网
阅读(140)喜欢(0)PHP/apache/Perl