//第一步 普通类
//class sigle{
//
//}
//
s
1
=
n
e
w
s
i
g
l
e
(
)
;
/
/
s1=new sigle(); //
s1=newsigle();//s2=new sigle();
注意两个对象是一个的时候,才全等
//if(
s
1
=
=
=
s1===
s1===s2){
// echo ‘是一个对象’;
//
//}else{
// ‘不是一个对象’;
//}
//第二部 封锁new操作
//class sigle{
// //外部new就会触发__construct()
// protected function __construct(){
//
// }
//}
//
//$s1 =new sigle();
//第三部 ,留一个接口来new对象
//class sigle{
// public static function getIns(){
// return new self();//内部new可以
//
// }
// protected function __construct(){
//
// }
//}
//
s
1
=
s
i
g
l
e
:
:
g
e
t
I
n
s
(
)
;
/
/
s1=sigle::getIns(); //
s1=sigle::getIns();//s2=sigle::getIns();
//if(
s
1
=
=
=
s1===
s1===s2){
// echo ‘是一个对象’;
echo $s1;/无法将类转换成字符串
//
//}else{
// echo ‘不是一个对象’;
//
//}
//第四部 ,getIns 先判断实例
//class sigle{
// protected static KaTeX parse error: Expected '}', got 'EOF' at end of input: … if(self::ins=null){
// self::KaTeX parse error: Expected 'EOF', got '}' at position 56: …态属性上 // }̲ // // // …ins;//内部new可以
//
// }
// protected function __construct(){
//
// }
//}
//
s
1
=
s
i
g
l
e
:
:
g
e
t
I
n
s
(
)
;
/
/
s1=sigle::getIns(); //
s1=sigle::getIns();//s2=sigle::getIns();
//if(
s
1
=
=
=
s1===
s1===s2){
// echo ‘是一个对象’;
echo KaTeX parse error: Expected 'EOF', got '}' at position 21: …法将类转换成字符串 // //}̲else{ // ech…s1=new multi();
//
s
2
=
n
e
w
m
u
l
t
i
(
)
;
/
/
e
c
h
o
′
<
b
r
>
′
;
/
/
i
f
(
s2=new multi(); //echo '<br>'; //if(
s2=newmulti();//echo′<br>′;//if(s1=$s2){
// echo ‘是一个对象’;
echo $s1;/无法将类转换成字符串
//
//}else{
// echo ‘不是一个对象’;
//
//}
第五步用final,纺织及城市,被修改权限(final最终的意思)
//class sigle{
// protected static KaTeX parse error: Expected '}', got 'EOF' at end of input: … if(self::ins=null){
// self::KaTeX parse error: Expected 'EOF', got '}' at position 56: …态属性上 // }̲ // // // …ins;//内部new可以
//
// }
// //方法前加final,则该方法不能被覆盖,类前加final,则该类不能被继承
// final protected function __construct(){
//
// }
//}
class multi extends sigle{
public function __construct(){
}
}//覆盖不了
//
s
1
=
s
i
g
l
e
:
:
g
e
t
I
n
s
(
)
;
/
/
s1=sigle::getIns(); //
s1=sigle::getIns();//s2=clone
s
1
;
/
/
被
克
隆
又
产
生
多
种
对
象
/
/
i
f
(
s1;//被克隆又产生多种对象 //if(
s1;//被克隆又产生多种对象//if(s1=$s2){
// echo ‘是一个对象’;
echo $s1;/无法将类转换成字符串
//
//}else{
// echo ‘不是一个对象’;
//
//}
//第六步 禁止clone(克隆不属于静态方法,在非静态方法操作静态属性不好)
class sigle
{
protected static $ins = null;
public static function getIns()
{
if (self::$ins === null) {
self::$ins = new self();//调用 new一个东西附带自身,将自身对象付到静态属性上
}
//自身属性返回
return self::$ins;//内部new可以
}
//方法前加final,则该方法不能被覆盖,类前加final,则该类不能被继承
final protected function __construct()
{
}
//封锁克隆
final protected function __clone(){
}
}