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

     

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

     

  • 相关阅读:
    ionic4 无限滚动加载组件 ion-infinite-scroll-content 的loadingSpinner 属性
    ionic cordova build android 报错 解决
    ionic4 标题栏 ion-toolbar 默认 底部会显示一个底边框 解决
    ionic3 在ios12.2 12.3 12.4上页面无法滚动
    Android 打生产包(release)生成密钥(证书)及签名
    在Vue.js应用程序中使用Ionic 4组件
    ionic4 ionic-native列表
    清除 多行li 行间距
    Connection Pool
    Logging
  • 原文地址:https://www.cnblogs.com/navyouth/p/8251720.html
Copyright © 2011-2022 走看看