zoukankan      html  css  js  c++  java
  • 加载

    一、加载类

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

      

  • 相关阅读:
    Linux_搭建NFS服务(基础)
    Linux_配置主DNS服务(基础)
    Linux_配置辅助DNS服务(基础)
    Linux_配置本地YUM源(RHEL8)
    9. Mybatis plugins标签 实现分页
    27. SpringBoot 切换内嵌Servlet容器
    8. Mybatis typeHandlers标签
    63. VUEX Getters基本使用
    62. State单一状态树概念
    61 . VUEX state 和 mutations
  • 原文地址:https://www.cnblogs.com/xiaohaihuaihuai/p/8258706.html
Copyright © 2011-2022 走看看