php 封装

复习一下之前说的php的其他知识


由众多对象抽象出来的
对象
由类实例化出来的   (所有的东西都可以把它看做成对象)
(类是不能直接用的,关键字new,可以造一个新对象来提取类中的功能)


成员变量
成员方法(成员函数)
成员属性

访问修饰符(成员的前面可以加,来决定成员的权限)
public 公有的
protected 受保护的(只能在该类或该类子类可以访问)
private 私有的(只能在该类,花括号内可以访问)

构造函数(对类里面某个成员可以进行初始化)
1.写法特殊 
2.执行时间特殊

面向对象的三大特性:

1、封装

2、继承

3、多态

封装:

目的:为了使一个类更加安全

做法:1、将成员变量变为私有的

         2、在类里面做方法来间接访问成员变量

         3、在方法里面加控制

例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<?php


class Ren
{
    public $code; //人员代号
    private $name; //人员名称
    private $sex; //人员性别
    private $age; //人员年龄,必须在18-50周岁之间
    
    //构造方法,用来初始化性别
    function __construct($s)
    {
        $this->sex = $s;
    }
    
    /*//造一个修改年龄的方法
    function SetAge($a)
    {
        //加控制
        if($a>18 && $a<50)
        {
            $this->age = $a;
        }
    }
    //造一个获取age值的方法
    function GetAge()
    {
        return $this->age;
    }*/
    
    //给变量赋值的魔术方法
    function __set($n,$v)
    {
        if($n=="age")
        {
            if($v>18 && $v<50)
            {
                $this->$n = $v;
            }
        }
        else
        {
            $this->$n = $v;
        }
    }
    
    //__get魔术方法,用来取变量值的
    function __get($n)
    {
        return $this->$n;
    }
}

//造对象
$r = new Ren("男");
//$r->SetAge(30);
//$r->__set("age",30);

$r->age = 30; //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
$r->name = "张三";

//echo $r->sex; //自动调用__get()方法,将变量名当做参数
//var_dump($r);

class Dog
{
    private $name;
    
    function Jiao()
    {
        echo $this->name."在叫";
    }
    
    function SetName($n)
    {
        $this->name = $n;
        return $this;
    }
    
}

$d = new Dog();
$d->SetName("旺财")->Jiao();



?>



</body>
</html>
原文地址:https://www.cnblogs.com/qishuang/p/6170453.html