zoukankan      html  css  js  c++  java
  • 7.19 静态属性,静态方法,类常量,魔术方法

    <?php
    //类常量
        header("Content-type: text/html; charset=utf-8");
        class Person{
            private $name;    
            const HOST = 'localhost';//定义常量,最好是大写,前面没有$符号    
            
            public function __construct($name='',$age=18){
                $this->name = $name;
                $this->age = $age;
            }
            
            public function say(){
                echo "my name is {$this->name}";
            }
        }    
        
        $p1 = new Person("lisi",25);
        $p1->say();
        echo Person::HOST;//类常量是属于类的,不能用对象调用,只能用类调用
    //静态属性
        class Person{
            public $name;    
            static public $num;//用于计算new了几个对象
            function __construct($n){
                $this->name = $n;
                //Person::$num++;//静态属性只能类本身调用,对象不能调用
                self::$num++;//self代表类本身
            }
            public function say(){
                echo "my name is {$this->name}";
            }
        }    
        $obj = new Person("user1");
        $obj = new Person("user2");
        $obj = new Person("user3");
        echo Person::$num;
    //静态方法
        class Person{
            public $name;    
            static public $num;//用于计算new了几个对象
            function __construct($n){
                $this->name = $n;
                //Person::$num++;//静态属性只能类本身调用,对象不能调用
                self::$num++;//self代表类本身
            }
            public function say(){
                echo "my name is {$this->name}";
            }
            static public function sum($i,$j){//定义方法是static,则该方法不依托于对象,直接可以用类调用
                return $i+$j;
            }
        }
        echo Person::sum(5,10);    
    ?>

    魔术方法

    <?php
         header("Content-type: text/html; charset=utf-8");
         class Person{
             private $name;
             public $age;
             public function __construct($name='',$age=18){
                 $this->name =$name;
                 $this->age =$age;
             }
             private function text(){
                 echo "Person->test()";
             }
             public function __toString(){
                 return "这是我定义的解决什么问题的类";
             }
             public function __call($i,$j){
                 echo "你调用了一个没有定义的方法{$i},{$j[1]}";
             }
             public function __get($i){
                 echo "你访问了一个没有权限访问的属性{$i}";
             }
             public function __set($i,$j){
                 echo "你无法设置了一个没有定义权限访问的属性{$i},{$j}";
             }
             public function __isset($i){
                 echo "你无法判断{$i}是否存在";
             }
             public function __unset($i){
                 echo "111";
             }
         }
         $p1 = new Person("lisi",25);
         //$p1->getName("张三","lisi");
         //isset($p1->address);
         //unset($p1->age);
         $str = $p1->address;
         echo $str;
    ?>
  • 相关阅读:
    重新整理 .net core 实践篇————配置系统之盟约[五]
    重新整理 .net core 实践篇————依赖注入应用之援军[四]
    重新整理 .net core 实践篇————依赖注入应用之生命法则[三]
    重新整理 .net core 实践篇————依赖注入应用[二]
    重新整理 .net core 实践篇————配置应用[一]
    spring cloud 学习笔记 客户端(本地)均衡负载(三)
    Leetcode之插入区间
    Leetcode之两棵二叉搜索树中的所有元素
    Leetcode之二叉树的层序遍历
    LeetCode之验证二叉搜索树
  • 原文地址:https://www.cnblogs.com/sunhao1987/p/9401424.html
Copyright © 2011-2022 走看看