php类中protected与const属性详解

作者:袖梨 2022-06-24

const属性

用const属性定义的字段是一个常量,类中的常量和静态变量类似,不同之处就是常量的值一旦赋值不能被改变.const定义常量不需要加$符号,其结构形式如下:

const 常量名称  //常量名称不能用$符号

1、常量属性用 const 关键字来声明,不像常规属性一样用美元符$开头;
2、按照惯例,只能用大写字母来命名常量;
3、和全局变量一样,类常量一旦设置后就不能改变;
4、只包含基本数据类型的值,不能将一个对象指派给常量;
5、像静态属性一样,只能通过类而不能通过类的实例(对象)访问常量;
6、引用常量时不需要用美元符号为前导符;
7、给已经声明过的常量赋值会引起解析错误;
8、当需要在类的所有示例中都能访问某个属性,并且属性值无需改变时,应该使用常量。

 代码如下 复制代码

    header('Content-type:text/html;charset=utf-8'); 
    class ShopProduct{ 
        const GUOWANPIAOPEN = "郭碗瓢盆"; 
        const BLOGTITLE = "美好生活的开始!"; 
        //... 
        public function sayHello(){ 
            print ShopProduct::GUOWANPIAOPEN."-".ShopProduct::BLOGTITLE."
"; 
            // 注意,每次引用常量都必须指向当前类(当前类名加两个冒号) 
            //print self::GUOWANPIAOPEN."-".self::BLOGTITLE."
"; 
            // 这里 self 关键字指向当前类,作用与上面一样 
        } 
    } 
 
    print ShopProduct::sayHello(); 
    //print ShopProduct::GUOWANPIAOPEN; 
?> 

protected属性

protected限定的字段作用域在public和private之间,若该成员被声明称protected(保护),则代表只能在该类和该类的子类中使用该字段.

实例代码如下:

        

 代码如下 复制代码
class me{          
         protected $Money =100;       
         protected $price1=60;        
        
         public function Sell($price){      
          if($this->price1<=$price){      
           echo "好,卖给你了.
        ";     
           $this->Money = $this->Money+$price;  
           return "我现在总共有 ".$this->Money." 元钱"; 
          }
         else{           
          echo "我不卖 ,$price 太便宜了
        ";    
          return "现在我还是 ".$this->Money." 元钱";  
           }
          }
         }
        
         $now=new me;          
         echo $now->Sell(30);         
?>

相关文章

精彩推荐