关于类的整理

<?php
//类的三大特性:封装、继承、多态
//封装的目的:为了让类更加安全
//怎么封装:声明成员属性或成员方法时,使用private关键字修饰就实现了对成员的封装,封装之后的成员只能在这个类中被访问,外部无法访问
class Person
{
    private $name;
    private $sex;
    private $age;
    
    function __construct($sex="")
    {
        $this->sex=$sex;
    }
    function Run()
    {
        echo"正在走路";
    }
     private function Say()
    {
        return "sing a song";
    }    
    function __set($name,$value)
    {
        $this->$name=$value;
    }
    function __get($name)
    {
        return $this->$name;
    }
}
$p = new Person();
//$p->name="simon"; //不能在外部给私有成员赋值
//$p->Say();        //不能在外部调用私有的方法
//var_dump($p);
$p->Run();
$p->name="simon";
var_dump($p);
echo $p->name;
//私有成员的访问:两种,一种是function setName(){}和function getName(){}直接写,这样成员少的情况下可以使用,多了每个都要写增加代码量;
//另一种是__set()和__get()魔术方法自动调用;
//继承:继承就是子类对已存在的父类进行功能拓展,一个父类可以有多个子类,一个子类只有一个父类,多以继承是单向的,子类可以继承父类的一切(private除外)
//继承关键字extends
//访问修饰符有三种:public(谁都可以访问),protected(自己及子类可以访问),private(除了自己谁都访问不了)
//子类中重载父类的方法:其实就是覆盖从父类中继承过来的方法可以定义一个和父类同名的方法,特可以parent::方法名,再新添加一条子类中新声明的成员并且赋值
//final关键字,可以加在类或方法前,不能标识成员属性,使用final标识的类,表示最后一个,不能被继承;使用final标识的成员方法,在子类中不能被覆盖
//static关键字访既可以标识成员变量也可以标识成员方法,与对象无关,static标识的是类
//static访问方式:类名::静态成员变量名;类名::静态成员方法名();
//self,代表该类类似于对象的$this,self::静态成员变量名;self::静态成员方法名();
//const将类中的成员属性定义为常量,使用cinst声明的常量前不需要加$符,
//clone克隆对象
//加载类
//include方法
include("Info.class.php");//将类文件加载到页面,注意参数是一个路径(找到类文件)
include "/wamp/www/0429/Info.class.php";

//另一种加载方法
require_once "./Info.class.php"; //请求目标文件一次
require_once("./Info.class.php");
require("Info.class.php");
//include方法如果类里面出现致命错误,用到这个类的文件就会报错不能继续执行,require方法如果用到这个类的文件出现错误,下面的文件会继续执行

//自动加载类:
function __autoload($classname)//所有的类都是统一的命名规则,所有的类必须都写在同一个文件夹下,类名和文件名一样,才可以用这个方法
{
    include($classname.".class.php");
}

//当前目录./ 或是文件名
//上级目录../
//下级目录:目录名/
//根目录:/
//根目录如果是在php代码里面/代表本地磁盘的根(D盘)
//如果是在html里边/代表当前站点目录(www)


//多态
//概念:当父类引用指向子类实例的时候,有子类对父类函数进行了重写,导致我们在使用该引用去调用相应的方法的时候表现出的不同
//发生条件:1.必须有继承
//子类必须要对父类的方法进行重写

//函数重载(强类型语言才会有)
//函数重载条件:1.函数名必须相同;
//2.函数里边参数的个数不同
//3.如果个数相同,类型不同
//方法名必须一样,方法名一样的的情况下参数的个数不同,参数的个数相同的情况下,参数的类型不一样

//php是弱类型语言,所以没有重载
//php有可变参数的函数

//__tostring()方法


?>
原文地址:https://www.cnblogs.com/nannan-0305/p/5453487.html