php中$this、static、final、const、self的用法
发布:smiling 来源: PHP粉丝网 添加日期:2014-02-10 11:30:13 浏览: 评论:0
本篇文章主要分项了一下关于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 www.111cn.net");
- $myclass->printName();//输出:I Like www.111cn.net
- ?>
在类里面调用当前类的属性和方法有三种方法,分别是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关键字,这就是说明这个方法不能被覆盖。道理就是这么简单,让我们也看个简单的示例吧。
最终的类和方法,不能继承,该关键字修饰的方法不能被重写。一般用法如下:
- <?php
- 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
Tags: this static final const self
相关文章
- ·php面向对象 $this关键字用法详解(2014-02-20)
- ·PHP $this变量一些理解(2014-02-21)
- ·php中this,parent,self关键字用法(2014-07-25)
- ·PHP面向对象(OOP)编程:this的特殊用法(2015-12-12)
- ·PHP面向对象之旅:static变量与方法(2014-01-17)
- ·php面向对象 static、 const、final关键字的使用(2014-03-28)
- ·php final static const成员属性用法(2014-05-21)
- ·php static 变量的例子(2014-06-04)
- ·PHP static静态局部变量和静态全局变量总结(2014-06-14)
- ·php中接口、抽象类、Final、Static例子(2016-07-27)
- ·php中static 静态变量和普通变量的区别(2016-08-18)
- ·区别PHP中的const,static,public,private,protected(2020-02-22)
- ·PHP面向对象之旅:深入理解static变量与方法(2020-08-23)
- ·php面向对象中static静态属性和静态方法的调用(2021-05-10)
- ·php面向对象中static静态属性与方法的内存位置分析(2021-05-10)
- ·PHP中static关键字以及与self关键字的区别(2021-06-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)