大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

php面向对象,this关键字读书笔记

来源:http://www.dfwstonefabricators.com 作者:大发体育网络 人气:192 发布时间:2019-09-25
摘要:在前面我们知晓,在指标外界采访对象成员属性和方法,使用对象的援引来成功。而在目标内部中,成员方法访问自个儿目的中的别的成员属性或然成员方法,要运用特别的目的援用

在前面我们知晓,在指标外界采访对象成员属性和方法,使用对象的援引来成功。而在目标内部中,成员方法访问自个儿目的中的别的成员属性或然成员方法,要运用特别的目的援用"$this->值"的样式来访谈,成员属于哪个指标,$this援引就代表哪个指标,况且不得不在目的的分子方法中选用。

final关键字

为了化解php类和对象中变量与质量的命名争辨和不精晓难题,引进了”$this”关键字来调用当前的对象。

php final关键字用来在一个函数可能类名称前边,表明该函数不可能被重写大概该类不能够被延续。

在类中调用当前指标的性质和办法,必需利用”$this->”关键字;$this在构造函数中指该构造函数所成立的新指标;方法内的部分变量不属于对象,不行使$this关键字取值。使用$this关键字,大家得以在类中调用对象属性恐怕措施。

1、final方法无法被重写。

1、调用变量

若是不期待类中某些方法被子类重写,只须求在这些点子前增加关键字final,即设置final方法。

实例:

实例:

 代码如下

 代码如下

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

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

2、调用方法

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

实例:

2、final类不可能被持续。

 代码如下

被声称了final的类不能被持续,不然出错。

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

实例:

笔者们来看一下上边包车型地铁例证,$this在做了什么?

 代码如下

 代码如下

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

class Person{
//上面是人的分子属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的岁数
//定义二个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name="", $sex="", $age=""){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//此人得以出口的措施, 说出自个儿的天性
function say() {
echo "作者的名子叫:".$this->name." 性别:".$this->sex." 小编的岁数是:".$this->age."<br>";
}
//对象克隆时自动调用的法门, 借使想在仿制后转移原对象的内容,供给在__clone()中重写原来
的性子和议程
function __clone(){
//$this指的别本p2, 而$that是指向原来p1,那样就在本办法里,改换了别本的习性。
$this->name="我是假的$that->name";
$this->age=30;
}
}
$p1=new Person("张三", "男", 20);
$p2=clone $p1;
$p1->say();
$p2->say();
?>

static关键字

上例输出:

php static关键字不只能够用来声称二个静态变量,在类中一样能够证明静态的习性只怕措施,成为“类属性”或“类方式”。

推行结果
自身的名子叫:张三性别:男小编的年纪是:20
自己的名子叫:笔者是假的张三性别:男笔者的年龄是:30

1、评释了静态的性质和方法后,在类中不可能用$this关键字来援引,能够行使上面三种艺术援引:

大家来看一下地方的代码中$this做了怎么样:

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

1、访问对象内部的积极分子,如$this->name

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

2、访问对象的任何格局,如在say()方法内部访谈了其之外的$this->run()和$this->eat("apple")方法。

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

其余还应该有有个别值得注意的是,局地变量和成员属性能够同名,但职能范围和探访格局分化,如在eat()方法体内的$name相当于一些变量,其效劳范围只限于eat方法内部,而Person的分子属性申明部分的 $name,则相当于全局变量,能够其他方式中采纳$this->name的格局拜望。

静态属性实例:

 代码如下

 代码如下

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

< ?php  
class UserName 
{  
//定义属性  
private $name; 
//定义构造函数 
function __construct( $name ) 

$this->name = $name;
//这里曾经选拔了this指针 

//析构函数 
function __destruct(){}  
//打字与印刷客户名成员函数 
function printName() 

print( $this->name );
//又选用了PHP关键字this指针 

}  
//实例化对象 
$nameObject = new UserName
( "heiyeluren" );  
//实施打印 
$nameObject->printName();
 //输出: heiyeluren 
//第三遍实例化对象 
$nameObject2 = new UserName( "PHP5" ); 
//实施打字与印刷 
$nameObject2->printName(); //输出:PHP5 
?>

静态方法实例:

 代码如下

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

本文由大发体育娱乐在线发布于大发体育网络,转载请注明出处:php面向对象,this关键字读书笔记

关键词:

最火资讯