zoukankan      html  css  js  c++  java
  • 类的声明与实例化及构造方法析构方法(PHP学习)

    <?php 
    
    class human{
    	public static $leg=2;
    	public $name = 'leo';
    	public $age = '25';
    
    	public function cry(){
    
    	}
    }
    
    $leo = new human();
    print_r($leo);
    /*返回
    human Object ( [name] => leo [age] => 25 )
    */
    //为什么没有leg呢?
    //是因为加了static,就变成了类的属性了,是属于所有
    //通过这个类实例实例后的对象的
    //public是权限修饰符,权限修饰符有public,protected,private
    //在PHP4经常用到var,这个现在不怎么也不推荐用,就相当于public
    //在PHP5中会把var解析成public
    
    
    ?>
    

    有没有什么办法可以在new对象的时候,通过传参数来改变对象的属性呢?而不是千篇一律

    答:可以在类中定义构造方法,即在初始化对象的时候,就会执行,并且可以接收参数

    如下所示:

    <?php 
    
    class human{
    	public static $leg=2;
    	public $name = 'leo';
    	public $age = '25';
    
    	public function __construct($name,$age){
    		$this->name=$name;
    		$this->age=$age;
    	}
    }
    
    $leo = new human('macro','23');
    print_r($leo);
    /*
    返回
    human Object ( [name] => macro [age] => 23 )
    可以看到参数起作用了
    __construct就是构造函数
    */
    
    
    
    
    ?>
    

    与构造函数相对应的就是析构函数,即当对象销毁的时候执行的

    如下所示:

    <?php 
    
    class human{
    	public static $leg=2;
    	public $name = 'leo';
    	public $age = '25';
    
    	public function __construct($name,$age){
    		$this->name=$name;
    		$this->age=$age;
    		echo $this->name."对象生成啦<br />";
    	}
    	public function __destruct(){
    		echo $this->name."对象销毁啦<br />";
    	}
    }
    
    $leo = new human('macro','23');
    $tim = new human('tim','18');
    
    unset($leo);
    echo '~~~~~~~~~~~~~~~~~~~~<br />';
    
    
    /*
    返回:
    macro对象生成啦
    tim对象生成啦
    macro对象销毁啦
    ~~~~~~~~~~~~~~~~~~~~
    tim对象销毁啦
    */
    //__destruct是析构函数,即对象销毁的时候调用
    //为什么$tim 没有unset 也执行了析构函数
    //这是一个隐式销毁,unset是显式销毁
    //当一个页面执行完成自动销毁
    
    
    ?>
    

      

  • 相关阅读:
    Kubernetes源码client-go的workqueue
    (转)Golang语言heap剖析及利用heap实现优先级队列
    (转)Kubernetes GC设计原则
    Kubernetes kubefed使用Cluster Selector
    使用kubeadm添加新节点到集群及相关问题解决
    Kubeadm颁发证书延迟到10年
    kubeadm升级Kubernetes证书
    混合kubebuilder与code generator编写CRD
    (转)Go项目的vendor目录是否需要提交?看这一篇就知道了
    Java 将Excel转为et和ett格式
  • 原文地址:https://www.cnblogs.com/ggbd-lie/p/3290451.html
Copyright © 2011-2022 走看看