• 加载和魔术方法


    一、加载类

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

     

    	<?php
    		require("./Ren.class.php");
    		require("./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);
        ?>
    

     

  • 相关阅读:
    bash的for循环从命令读取值
    BFS-hdu-1226-超级密码
    计算机改名导致数据库链接的诡异问题
    There is insufficient system memory to run this query 错误
    SQL Server 2008 R2的发布订阅配置实践
    MS SQL 日常维护管理常用脚本(二)
    TreeSize工具介绍
    迁移Reporting Services的方法与WMI错误
    spring-session-data-redis解决session共享的问题
    elasticSearch6源码分析(12)DiscoveryModule
  • 原文地址:https://www.cnblogs.com/navyouth/p/8251720.html
Copyright © 2020-2023  润新知