加载

一、加载类

1、require 方式

<?php
    class Ren{
        public $name;
        public $sex;   
    }
?>

上面 有一个文件名为Ren的类加载的现在的文件中

<?php
    require("./Ren.class.php");//括号里面是路径
    $r = new Ren();
    var_dump($r);
?>

2、require_once方法

<?php
    require_once("./Ren.class.php");
    $r = new Ren();
    var_dump($r);
?>

结果是一样的  不一样的是require不能重复  重复使用会报错,require_once不会报错

<?php
        require_once("./Ren.class.php");
        require_once("./Ren.class.php");
        $r = new Ren();
        var_dump($r);
    ?>

3、include方法    

重复会报错

<?php
    include("./Ren.class.php");
    $r = new Ren();
    var_dump($r);
?>

4、 include_once方法       

重复不会报错

<?php
    include_once("./Ren.class.php");
    $r = new Ren();
    var_dump($r);
?>

require方法出现错误时脚本停止运行

include方法出现错误时脚本继续运行

5、自动加载

条件:1、所有类的命名要规范 class.Ren

   2、所有的类要放在同一个文件夹下,

     3、类文件名要规范 Ren.class.php

当有好几个工具类文件时一一加载太麻烦  所以可以用自动加载

<?php
    function __autoload($classname){
        require_once "./{$classname}.class.php";
    }
    $r = new Ren();
    $s = new Dog();
    var_dump($r);
    var_dump($s);
?>

二、魔术方法

function__construct(){

}  构造函数,对类里面的成员进行初始化

<?php
    class Ren{
        public $name;
        public $sex;
        public function __construct($sex){
            $this->sex = $sex;
            echo "测试一下";
        }
    }
    $r = new Ren("男");
    $r->name = "张三";
    var_dump($r);

function__destruct(){

} 析构函数,在对象释放时自动执行

<?php
    class Ren{
        public $name;
        public $sex;
        public function __construct($sex){
            $this->sex = $sex;
        }
        public function __destruct(){
            echo "销毁";
        }//执行完name后没有可执行的 会自动销毁内容
    }
    $r = new Ren("男");
    $r->name = "张三";
?>

 __赋值方法

function__set(){

}

__取值方法

function__get(){

}

class Ren{
    public $name;
    public $sex;
    private $age;//public----private
    public function __set($name,$value){//$name变量名$value变量值
        if($name == "age"){
            if($value>=18&&$value<=50){
                $this->$name = $value;
            }
        }
        else{
            $this->$name = $value;
            }
    }
    public function __get($name){
        return $this->$name;
    }
}
$r = new Ren();
$r->name = "张三";
$r->age = 20;//自动调用__set
$r->age;//自动调用__get
var_dump($r)
?>

function__tostring(){

} 输出对象的方法

<?php
    class Ren{
        public $name;
    }
    $r = new Ren();
    var_dump($r);
?>

如果用echo输出会报错

<?php
    class Ren{
        public $name;
    }
    $r = new Ren();
    echo $r ;
?>

 用魔术方法再用echo就没事了

<?php
    class Ren{
        public $name;
        public function __tostring(){
            return "这是一个人类";
        }
    }
    $r = new Ren();
    echo $r;
?>

 function__clone(){

}克隆对象的方法

克隆

<?php
    class Ren{
        public $name;
    }
    $r = new Ren();
    $r->name = "张三";
    $r1 = clone $r;
    var_dump($r1);
    ?>

对新克隆出的对象就行修改

<?php
    class Ren{
        public $name;
        public function __clone(){
            $this->name = "李四";
        }
    }
    $r = new Ren();
    $r->name = "张三";
    $r1 = clone $r;
    var_dump($r1);
?>

  

原文地址:https://www.cnblogs.com/xiaohaihuaihuai/p/8258706.html