php类中的$this,static,final,const,self这几个关键字使用方法


Posted in PHP onDecember 14, 2015

本篇文章主要分项了一下关于php类中的$this,static,final,const,self这几个关键字使用方法。

$this

$this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value='phpernote';的形式。常见用法如:

$this->属性

$this->方法

举例如下:

<?php
class MyClass{
 private $name;
 public function __construct($name){
 $this->name=$name;
 }
 public function getname(){
 return $this->name;
 }
 public function printName(){
 echo $this->getname();
 }
}
$myclass= new MyClass("I Like 3water.com");
$myclass->printName();//输出:I Like 3water.com
?>

在类里面调用当前类的属性和方法有三种方法,分别是self、parent、$this,这三个关键字的区别是:self用来指向当前的类;parent用于指向当前类的父类,可以使用该关键字调用父类的属性和方法;$this用来在类体内调用自身的属性和方法。

static

关键字可以是self(在类内部调用静态成员时所使用)静态成员所在的类名(在类外调用类内部的静态成员时所使用)

声明一个静态变量如下: 

static $val='';

只存在于函数作用域的变量,函数执行之后变量的值不会丢失,只会初始化一次,初始化静态变量不能使用表达式,不用全局变量代替是因为全局变量会被所有函数访问容易造成维护不宜。

在类中使用static有两种主要用途、定义静态成员和定义静态方法。静态成员只保留一个变量的值,这个值对所有实例都是有效的,如下:

<?php
class MyObject{
 public static $myStaticVar=0;
 function myMethod(){
 self::$myStaticVar+=2;
 echo self::$myStaticVar;
 }
}
$instance1=new MyObject();
$instance1->myMethod();
$instance2=new MyObject();
$instance2->myMethod();
//结果将分别打印2、4

 代码如下

<?php
class Book{
 static $num=0;
 public function showMe(){
 echo"您是滴".self::$num."位访客";
 self::$num++;
 }
}
$book1=new Book();
$book1->showMe();
echo"<br>";
$book2=new Book();
$book2->showMe();
echo"<br>";
echo"您是滴".Book::$num."位访客";
?>

结果将是:

您是滴0位访客

您是滴1位访客

您是滴2位访客

另外需要注意的是如果类的方法是static的,他所访问的属性也必须是static的。

final

PHP final关键字可以修饰类同样可以修改类中的方法,但它们的作用是差不多的,即如果你使用了final关键字来修饰了,那么这个被修饰的类或者方法将不能被扩展或者继承。你只能老老实实去引用它。如果你在类前面使用了final,这就是说明这个类不能使用继承;如果你在方法前使用了PHP final关键字,这就是说明这个方法不能被覆盖。道理就是这么简单,让我们也看个简单的示例吧。

最终的类和方法,不能继承,该关键字修饰的方法不能被重写。一般用法如下:

final class MyClass{//此类将不允许被继承
final function fun1(){......}//此方法将不允许被重写
}


< ?PHP  
  final class BaseClass {  
  public function test() {  
  echo "BaseClass::test() calledn";  
  }  
  final public function moreTesting() {  
  echo "BaseClass::moreTesting() calledn";  
  }  
  }  
  class ChildClass extends BaseClass {  
  public function moreTesting() {  
  echo "ChildClass::moreTesting() calledn";  
  }  
  }  
  // Results in Fatal error: Cannot override final method BaseClass::moreTesting()  
  ?>

const

在类的内部方法访问已经声明为const及static的属性时,需要使用self::$name的形式调用。举例如下:

<?php
class clss_a{
 private static $name="static class_a"; 
 const PI=3.14; 
 public $value; 
 public static function getName(){ 
 return self::$name; 
 } 
 //这种写法有误,静态方法不能访问非静态属性 
 public static function getName2(){ 
 return self::$value; 
 } 
 public function getPI(){ 
 return self::PI; 
 }
}

注意const属性的申明格式是const PI=3.14,而不是const $PI=3.14。

  self

self表示类本身,指向当前的类。通常用来访问类的静态成员、方法和常量。

以上内容简单给大家介绍了php类中的$this,static,final,const,self这几个关键字使用方法,希望大家喜欢。

PHP 相关文章推荐
php桌面中心(二) 数据库写入
Mar 11 PHP
php header()函数使用说明
Jul 10 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
php通过session防url攻击方法
Dec 10 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 #PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 #PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 #PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 #PHP
PHP开发中AJAX技术的简单应用
Dec 11 #PHP
基于PHP如何把汉字转化为拼音
Dec 11 #PHP
PHP异常处理Exception类
Dec 11 #PHP
You might like
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
js实现聊天对话框
2020/02/08 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python模拟登陆实现代码
2017/06/14 Python
python字符串的方法与操作大全
2018/01/30 Python
pandas重新生成索引的方法
2018/11/06 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
python中pyqtgraph知识点总结
2021/01/26 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
护理自荐信范文
2013/10/05 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
学习决心书
2014/03/11 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
公司开会通知
2015/04/20 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书