10分钟学会php面相对象基础(Ⅰ)

<?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);

 }

 

通过这样的方式,实现在类外对私有属性的操作。

 

posted @ 2016-08-30 22:06  拾阶而上的PM  阅读(207)  评论(0编辑  收藏  举报
本博内容由王子豪 www.07byte.com 提供