php类和对象之公共属性与私有属性

 更新时间:2016年11月25日 15:04  点击:1773
本文章给大家简单的举例说明在php类和对象之公共属性与私有属性用法,有需要了解的朋友可参考。


私有属性

定义了私有属性(private)的属性只能在该类中使用,在该类中可以通过$this->来调用。而在外部引用私有属性将会报错。

实例:

 代码如下 复制代码

<?php
 class People{
  private $name="li ming";
 }
 $p=new People();
 echo $p->name;
?>


注意:设置了私有属性的字段也不能在子类中使用。

公共属性

在php类的操作中,声明字段时使用public、private、protected、final、const、static来描述对象的数据元素的作用域,这类字符称为限定访问控制字符。

有关键字public声明的属性称为公共属性,可以自由地在类的内部、外部读取和修改。这样做显然不够安全,破坏了类封装性的特点。

如果字段没有被声明,则默认为public。

实例:

 代码如下 复制代码

<?php
 class Man{
  public $name="John"; /* 设定公共属性 */
  var $age=20;
 }
 $a=new Man();
 echo $a->name."<br>";
 echo $a->age;
?>

改变属性值

如果属性声明为public,则可以在外部调用时根据需要改变属性的值或者赋予未定义的属性值。

实例:

 代码如下 复制代码

<?php
 class Man{
  public $name="John"; 
  var $age;
 }
 $a=new Man();
 $a->name="Tom"; /* 改变属性值 */
 $a->age=20; /* 赋予属性值 */
 echo $a->name."<br>";
 echo $a->age;
?>

在php中我们要删除一个指定的文件我们可以使用unlink函数来实现,下面我给大家详细介绍unlink函数删除一个指定文件的具体方法,有需要了解的朋友可参考参考。

unlink() 函数删除文件。

若成功,则返回 true,失败则返回 false。

 代码如下 复制代码

<?php
unlink("test.txt");
?>

 代码如下 复制代码

<?php
$file = "test.txt";if (!unlink($file))  {
 echo ("Error deleting $file");  }else  { 
echo ("Deleted $file");  }
?>

加上判断

 代码如下 复制代码

<?php
$file = "test.txt";
if(unlink($file))
{
  echo "文件 $file 删除成功!";
}
else
{
  echo "文件 $file 删除失败!";
}
?>
</body>
</html>


输出结果:

文件 test.txt 删除成功!


下面加了判断文件是否存在:

 代码如下 复制代码

<?php

$myfile = “./test1.txt”;
if (file_exists($myfile)) {
$result=unlink ($myfile);
echo $result;
}
?>

rmdir() 函数删除一个目录,成功返回 TRUE,否则返回 FALSE 。

语法:

bool rmdir( string dirname )

例子:

 代码如下 复制代码

<?php
$dirname = 'testdir';
if (rmdir( $dirname )) {
    echo "目录 $dirname 删除成功";
} else {
    echo "目录 $dirname 删除失败";
}
?>

本文章给大家介绍在php中类和对象的protected与const属性用法,有需要了解的朋友可参考参考。

const属性
用const属性定义的字段是一个常量,类中的常量和静态变量类似,不同之处就是常量的值一旦赋值不能被改变。

const定义常量不需要加$符号,其结构形式如下:

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

实例:

 代码如下 复制代码

<?php
 class Date{
  const M="Monday";
 }
 echo "today is ".Date::M;
?>


提示:使用const定义的常量名称一般都大写,这是一个约定,我们要养成一个良好的命名方式习惯。如果定义的常量由多个单词组成,则使用下划线_链接,这也是一个约定。例如:FILE_SIZE。

protected属性

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

实例:

 代码如下 复制代码

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

在php中构造函数与析构函数都是使用在类中的,下面我来给大家详细介绍关于在php类中使用构造函数与析构函数的方法,有需要了解的朋友可参考参考。

析构函数

php析构函数的作用刚好和构造函数相反,构造函数是在对象实例化时自动执行,而析构函数在对象被销毁时自动执行。

默认情况下,php仅释放对象属性所占用的内存,并不销毁对象相关的资源,而利用析构函数在使用一个对象之后执行代码来清除内存,并将对象从内存中销毁。析构函数__destruct()结构形式如下:

 代码如下 复制代码

 function __destruct(){
    /* class initialization code */
}

析构函数是由系统自动调用,不能带参数。

实例:

 代码如下 复制代码

<?php
 class des{
  function __destruct(){
   echo "运行结束,执行析构函数";
  }
 }
 $p=new des(); /* 实例化类 */
 $sum=0;
 for($i=0;$i<10;$i++){
  $sum=$sum+$i;
  echo $sum ."<br>";
 }
?>

析构函数的调用

php如何调用析构函数?当php脚本不再与对象相关时将调用析构函数。如果要明确地销毁一个对象调用析构函数,可以给指向对象的变量不分配任何值,通常将变量赋值为NULL或者用unset()函数。

实例:

 代码如下 复制代码

<?php
 class des{
  function __destruct(){
   echo "对象被销毁,执行析构函数<br>";
  }
 }
 $p=new des(); /* 实例化类 */
 echo "程序开始<br>";
 unset($p); /* 销毁变量$p */
 echo "程序结束";
?>

构造函数

我们在使用类的过程中,有时需要立即为实例化对象的多个字段父子,如果通过手工,会带来很多不可预测的问题,而如果在对象创建过程中自动执行,则会带来很多方便。

php构造函数作用就是当类被实例化时,会自动执行的函数,又称为构造函数。

构造函数的声明和其它函数一样,知识构造函数的名称是“__construct”固定的名称,其结构形式如下:

 代码如下 复制代码

function __construct([argument1,argument2,argument3]){
    /* class initialization code */
}

实例:

 代码如下 复制代码

<?php
 class user{
  public $name;
  private $password;
  private $login;
  public function __construct($name,$password){
   $this->name=$name;
   $this->password=$password;
   $this->login=time();
  }
  function getlogin(){
   return(date('M d,Y',$this->login));
  }
 }
 $user=new user('Marry','888888');
 echo "用户名: ". $user->name. "<br>";
 print("访问时间". $user->getlogin());
?>

调用父类构造函数

构造函数可以被子类调用,php调用父类构造函数时必须使用parent关键字,否则不会自动调用。

实例:

 代码如下 复制代码

<?php
 class task1{
  public function __construct(){
   echo "today is Monday". "<br>";
  }
 }
 class task2 extends task1{
  function __construct(){
   parent::__construct(); /* 调用父类构造函数 */
   echo "I must work!";
  }
 }
 new task2;
?>

在php中final static $this关键字主要是用在类中或对象中,下面我来把我学习final static $this笔记记录下来,有需要了解的朋友可参考参考。

final关键字

php final关键字用来在一个函数或者类名称前面,表明该函数不能被重写或者该类不能被继承。

1、final方法不能被重写。

如果不希望类中某个方法被子类重写,只需要在这个方法前加上关键字final,即设置final方法。

实例:

 代码如下 复制代码

<?php
 class ex1{
  final function fn1(){
   return "php";
  }
 }
 class ex2 extends ex1{
  function fn1(){
   return "html";
  }
 }
 $p= new ex2();
 echo $p->fn1();
?>

加了final关键字的方法不能被重写,运行出错。

2、final类不能被继承。

被声明了final的类不能被继承,否则出错。

实例:

 代码如下 复制代码

<?php
 final class ex1{
  private $name;
 }
 class ex2 extends ex1{
  private $age;
 }
?>

static关键字

php static关键字不仅可以用来声明一个静态变量,在类中同样可以声明静态的属性或者方法,成为“类属性”或“类方法”。

1、声明了静态的属性和方法后,在类中不能用$this关键字来引用,可以使用下面两种方法引用:

在类中:self::静态成员名称

在类外:类名称::静态成员名称

2、访问该类时,可不必实例化,直接使用类名称::静态成员名称的格式。

静态属性实例:

 代码如下 复制代码

<?           
 class user{        
 private static $count = 10;    
 private static $sum=1;     
 public function __construct(){    
 for($i=1;$i<11;$i++){      
  self::$sum = self::$sum * self::$count; /* 调用静态变量 */
  self::$count--;      
 }   
 }
 public function getCount(){    
  return self::$sum;     
 }
 }
 $user1 = new user();      
 echo $user1->getCount();  
?>

静态方法实例:

 代码如下 复制代码

<?             
 class Math{           
  public static function sum($num1,$num2){  
  return $num1 + $num2;       
  }
  public static function product($num1,$num2){
  return $num1 * $num2;       
 }
  }   
 $a = 88;           
 $b = 100;          
 echo "两数之和为: ";        
 echo "<br>";          
 echo Math::sum($a,$b);       
 echo "<P>";          
 $a = 66;           
 $b = 88;           
 echo "两数之积为: ";        
 echo "<br>";          
 echo Math::product($a,$b);       
?>

$this关键字

为了解决php类和对象中变量与属性的命名冲突和不确定性问题,引入了”$this”关键字来调用当前的对象。

在类中调用当前对象的属性和方法,必须使用”$this->”关键字;
$this在构造函数中指该构造函数所创建的新对象;
方法内的局部变量不属于对象,不使用$this关键字取值。
使用$this关键字,我们可以在类中调用对象属性或者方法。

1、调用变量

实例:

 代码如下 复制代码

<?php
 class user{
  private $n;
  function __construct(){
   $name="Mike";
   echo $this->n=$name;
  }
 }
 $p=new user();
?>


2、调用方法

实例:

 代码如下 复制代码

<?php
 class cal{
  public function sum($a,$b){
   return $a+$b;
  }
  public function prt($a,$c){
   return $a*$c;
  }
  public function result($a,$b,$c){
   $a=$this->sum($a,$b);
   return $this->prt($a,$c);
  }
 }
 $c=new cal();
 echo "(2+3)*10= " .$c->result('2','3','10');
?>

[!--infotagslink--]

相关文章

  • 浅谈C# 字段和属性

    这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
  • java8如何用Stream查List对象某属性是否有重复

    这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • R语言 如何删除指定变量或对象

    这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • JavaScript预解析,对象详解

    这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
  • js修改input的type属性问题探讨

    js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
  • 如何在Spring WebFlux的任何地方获取Request对象

    这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • 牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作

    只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作。这就需要我们知道如何将jQuery对象和DOM的相互转换的方法。1...2015-10-30
  • Vue之计算属性详解

    这篇文章主要为大家介绍了Vue的计算属性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...2021-11-16
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • js如何打印object对象

    js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一打印出来,具体代码如下: fu...2015-10-21
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • javascript self对象使用详解

    这篇文章主要介绍了javascript self对象使用详解的相关资料,需要的朋友可以参考下...2016-10-20
  • 替换json对象中的key最佳方案

    本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
  • 详解jquery方法属性

    这篇文章主要介绍了jquery的方法属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-11-10
  • C# Dynamic关键字之:调用属性、方法、字段的实现方法

    本篇文章是对C#中调用属性、方法、字段的实现方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • 详解Javascript中的Object对象

    这篇文章主要介绍了详解Javascript中的Object对象,需要的朋友可以参考下...2016-03-01