<?php
声明一个类
class mycar{
etc.
//成员方法
}
class mycar{
function drive(){
etc.
}
}
?>
对象的实例化
内存中分栈和堆,栈定长,堆较大不能直接访问。实例化后,实例名称放在栈内,实例放在堆内,通过实例名找到堆里的实例。另外还有代码段和初始化静态段。
使用:赋值和取值
$p1->name = "aa";
$p1->name;
$p1->run();
内部引用本对象 $this;
构造方法__construct()与析构方法__destruct()
function
__construct(
$name
,
$sex
,
$age
)
{
// 通过构造方法传进来的$name给成员属性$this->name赋初使值
$this
->name =
$name
;
// 通过构造方法传进来的$sex给成员属性$this->sex赋初使值
$this
->sex =
$sex
;
// 通过构造方法传进来的$age给成员属性$this->age赋初使值
$this
->age =
$age
;
}
function
__destruct()
{
echo
"再见"
.
$this
->name;
}
10分钟肯定是我忽悠的。
封装性是面象对象编程中的三大特性之一,封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:
1. 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。
2. 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。
私有的成员是不能被外部访问的, 因为私有成员只能在本对象内部自己访问,比如,$p1这个对象自己想把他的私有属性说出去,在say()这个方法里面访问了私有属性,这样是可以。
比如
class a{
private $a;
private function say(){ echo”hello world”}
}
$car = new a();
a->a = “xx”;
echo a->a;
a->say();
赋值、取值、调用方法都会报错;
可能会用到构造函数,来支持private属性赋值;如
function _construct($a){
$this->a = $a;
}
这样就可以通过 $car = new a(“xx”)来提供支持;
构造方法是公认的共有方法,一般不要去私有化他;
私有属性在外部不可用,但在内部可以,所以通过这种方法提供接口,类似于
private $a;
function setA($age){
if
(
$age
<0 ||
$age
>130)
// 在给属性赋值的时候,为了避免非法值设置给属性
return
;
$this
->age =
$age
;
}
function getA($age){
RETURN($THIS->AGE);
}
通过这样的方式,实现在类外对私有属性的操作。