东西克隆
思考:东西只能通过实例化孕育产生,而且即等于将东西复制给变量,得到的还是同一个东西,,如果有的时候需要得到新的东西,除了实例化之外还有其他步伐?
引入:东西理论上应该通过实例化来孕育产生,这是东西孕育产生的根柢,但是有时候如果想在已有的东西上孕育产生一个新的东西,可以通过克隆来实现。
东西克隆界说:克隆东西clone,即通过已有的东西复制一个新的同样东西,但是两者之间并非用一个东西。
1.东西克隆是通过clone关键字实现,即clone 东西
<?php class student{ public $name; public $age=32; } //实例化 $s1=new student(); echo $s1->age; //输出32 //clone $s2= clone $s1; echo $s2->age; //返回32 echo ‘<hr>‘; //新东西age属性从头赋值 $s2->age=77; echo $s1->age; //32 echo $s2->age; //77 并不是同一个东西。 ?>
2.东西在实例化的时候会自动挪用存在的结构要领__construct(),同样的,在类的内部,php允许界说一个__clone的要领,在东西被克隆后,新克隆出来的东西会自动挪用
<?php class student{ public $name; public $age=32; public function __clone(){ var_dump($this); $this->age++; } } $s1=new student(); $s2=clone $s1; echo $s2->age; //输出33 并且var_dump()也输出了 ?>
3.如果不允许东西被克隆,可以将__clone()要领私有化(素质四不允许东西在外部被克隆)
<?php class student{ public $name; public $age=32; //私有化,暗示不允许该东西在外部克隆 private function __clone(){ } } ?>
总结:
1.东西可以通过克隆来得到新的东西(以前只能实例化)
2.克隆出来的东西会自动挪用类中对应的__clone()要领(如果有该要领的话)
3.可以通过私有化来实现禁止外部东西克隆
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30953.html