`

PHP

    博客分类:
  • php
 
阅读更多

PHP中::、->、self、parent::、$this操作符的区别 - 

 

在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。

另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。

静态变量

是只存在于函数作用域的变量, 不过, 在函数执行完成后,这种变量的 值不会丢失 ,也就是说, 在下一次调用这个函数时,变量仍然会记得原来的值. 要将某个变量定义为静态的, 只需要在变量前加上  static  关键字即可.

 

类中静态元素的使用

在类中, static 关键字有两种主要用法, 一是用来 定义静态成员 ,一是用来 定义静态方法 . 在类的内部, 可以使用 作用域限定符  (::) 来访问不同层次作用域的变量.

 


静态成员

静态成员是一种类变量, 可以把它看成时 属于整个类 而不是属于类的某个实例. 与一般的实例变量不同的是, 静态成员只保留一个变量值, 而这个变量值 对所有的实例都是有效 的, 也就是说, 所有的实例共享这个成员.

$this 只表示类的当前实例,  而  self:: 表示的是类本身 ,在类之外的代码中不能使用这个操作符,而且它不能识别自己在继承树层次结构中的位置.

也就是说, 在扩展类中使用 self  作用域时,  self  可以调用基类中声明的方法, 但它调用的总是已经在扩展类中重写的方法. 与 $this  不同的是, 在使用静态变量时,必须在作用域限定符后面加上 $ 符号.

在扩展类中, 在基类的方法被重写的情况下,使用  parent  作用域调用定义在基类中的方法. 静态成员也可以只属于父类 . 如果在子类和父类中同时声明了某个成员,也可以使用 parant::  在子类中访问父类中的变量. 在这种情况下, 父类的静态成员和子类的静态成员保存的是不同的值.

可以在 :: 操作符的左边写上类的名称来静态地访问某个成员, 这样 避免创建类的实例 . 不仅省略掉实例化类的代码, 而且还会 更高效 , 因为类的每个实例都会占用一小部分的系统资源.

在使用 :: 操作符访问成员变量时, 需要再次注意对 $ 符号的使用. 因为PHP当前不支持动态的静态变量的使用, 也就是说不支持可变的静态变量. 在使用$this->$var时, 被访问的成员是包含在$var中的变量的值.  而不用$符号访问某个变量实际上查找的是类的某个常量而常量是不能通过$this来访问的 .

PHP6 中提出的static:: 作用域使我们不再需要使用self:: 和parent::. 当希望指向最终的实现功能的类时, 就可以使用static::, 这个限定符会在代码执行之前立即计算出继承层次机构上最后那个类的成员. 之一过程被称为延迟绑定, 它使我们可以在子类中重写某个静态变量, 并且也可以从某个在父类中声明的函数中反问这个最终成员.


静态方法

静态方法和非静态方法之间有一个重要的区别: 在调用静态方法时,  不再需要拥有类的实例 .

静态方法和非静态方法 使用原则 :

一是如果某个方法中不包含$this 变量, 就应该时静态方法; 如果不需要类的实例, 可能还应该使用静态类, 这样可以免去实例化类的工作. 另, 在静态方法中时不能使用$this 变量的, 因为静态方法不属于某个特定的实例.

 

PHP中使用作用域限定操作符时, 用变量作为类的名称时不允许的.

 

  • parent:: 可用于调用父类中定义的成员方法。
  • parent::的追溯不仅于直接父类。
注:
在类里面的时候,$this->func()和self::func()没什么区别。
在外部的时候,->必须是实例化后的对象使用; 而::可以是未实例化的类名直接调用。
举个例子:
class Mytest{
    function ccc($str){
        echo $str;
    }
}
Mytest::ccc("123456");
$object = new Mytest();
$object->ccc("123456"
分享到:
评论

相关推荐

    class.phpmailer.php

    《PHPMailer邮件发送类详解与应用》 在PHP开发中,发送邮件是一项常见的需求,而PHPMailer是一个强大的、广泛使用的邮件发送类库,尤其适用于PHP5及以上版本。它提供了丰富的功能,包括支持SMTP验证、POP3收信以及...

    PHP 基础实例教程(PHP网页实例版)

    PHP 基础实例 在HTML中嵌入PHP 使用 PHP 标记 PHP 语句 使用 PHP 注释 PHP 语句间的空格问题 添加动态内容 使用 PHP 函数 PHP nl2br()格式化输出 PHP 打印格式化输出 PHP 字符串的整理 PHP 改变字符串中字母的大小写...

    PHP连接串口程序php_ser

    php实现RS232串口通信 下载php_ser_5.2.0.zip 解冻把php_ser放到ext目录下, php.ini里加上: extension=php_ser.dll PHP code string ser_version( void ) void ser_open( string port, int baudrate, int databits, ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    标题:PHP基础教程 出处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 作者:yufeng 地址:http:///read.php?38 内容: 提供给新手学习的 PHP新手教程,是一个比较有价值的PHP新手教程! 一、PHP...

    ZbarCode For PHP (PHP识别二维码)

    支持 PHP 版本 (Thread Safe): 5.5.* x86 5.5.* x64 5.6.* x86 5.6.* x64 测试环境 Windows7 64bit PHP 5.5.35 TS x86 PHP 5.5.35 TS x64 PHP 5.6.21 TS x86 PHP 5.6.21 TS x64 将对应的版本 ...

    PHP100视频教程全集112集BT种子【PHP经典】

    张恩民 老师 的PHP视频教程【www.php100.com】 绝对是PHP教程中的经典。 PHP100视频教程目录(共112集) PHP100视频教程1:环境配置与代码调试 PHP100视频教程2:PHP的数据类型与源码调试 PHP100视频教程3:常用PHP...

    精美php网站模板 php源码

    【PHP网站模板与源码详解】 在Web开发领域,PHP是一种广泛应用的服务器端脚本语言,尤其在构建动态网站方面有着显著的优势。"精美php网站模板"是指预先设计和编码完成的网页布局,用于快速搭建具有专业外观和功能的...

    json for PHP4.0

    总结来说,"json for PHP4.0"提供了一种在PHP 4.0环境下处理JSON数据的方法,通过自定义的`Json`类模拟了`json_encode`的功能,允许开发者在不支持内置JSON功能的PHP版本中进行数据交换。通过学习和理解这个类的工作...

    PHP的FPDF的中文包chinese.php

    FPDF(Free PDF Generator)是一个用PHP编写的开源库,用于生成PDF文档。这个库的主要优点是它完全用PHP编写,无需任何外部依赖,因此在服务器端生成PDF文档时非常方便。"chinese.php"是FPDF的一个扩展,专门为解决...

    php_redis.dll和php_igbinary.dll版下载,包含各个系统版本

    php_igbinary-1.2.1-5.5-nts-vc11-x64 php_igbinary-1.2.1-5.5-nts-vc11-x86 php_igbinary-1.2.1-5.5-ts-vc11-x64 php_igbinary-1.2.1-5.5-ts-vc11-x86 php_redis-2.2.7-5.6-nts-vc11-x64 ...

    PHP php_igbinary.dll PHP5.4以上所有版本扩展

    PHP php_igbinary.dll PHP5.4以上所有版本扩展分别包括 php_igbinary-2.0.1-5.5-nts-vc11-x86 php_igbinary-2.0.1-5.5-ts-vc11-x64 php_igbinary-2.0.1-5.5-ts-vc11-x86 php_igbinary-2.0.1-5.6-nts-vc11-x64 ...

    php-5.4.7.tar.gz

    《PHP 5.4.7在Linux环境下的部署与应用详解》 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域有着重要地位。本文将聚焦于PHP 5.4.7版本,这个版本在Linux操作系统上的部署、配置...

    php webshell 下载(目前功能强大齐全的php版webshell)

    声明:本PHP-webshell仅供学习交流以及网站安全检测之用,功能过于强大,请不要用过非法用途,否则一切后果由使用者本人承担! 使用方法:上传至网站任意目录连接即可,其中 $admin['pass'] = "admin"; 后面引号里...

    php动态网页作业 大学生网页 php+mysql

    这篇PHP动态网页作业是针对大学生设计的,旨在教授如何结合PHP和MySQL技术创建交互式的Web应用。PHP是一种广泛使用的开源脚本语言,尤其适合于Web开发,可以嵌入到HTML中,实现动态网页内容的生成。而MySQL则是一种...

    php期末考试试题

    PHP 期末考试试题解析 以下是对 PHP 期末考试试题的详细解析和知识点总结: 一、选择题部分 1. 该题考察了 PHP 的作用域和变量的使用。函数 `test` 中访问了全局变量 `$a`,但由于变量 `$a` 在函数外部定义,因此...

    (全)传智播客PHP就业班视频完整课程

    9-6 4.php xml编程⑨-综合练习-基于xml的在线词典 phpdom使用xpath 9-6 5.php xml编程(10)-SimpleXML 9-7 1.回顾 9-7 2.析构方法 9-7 3.static关键字(静态变量) 9-7 4.static关键字(静态方法) 面向对象编程三大特性...

    十大精典PHP项目开发全程案例 CD(源码)十大精典PHP案例作品源程序

    1,中小型企业内部自动化办公管理………PHP源码 2,网上社区系统……………………………PHP源码 3, 供求信息网………………………………PHP源码 4, 网络在线考试网站………………………PHP源码 5,电子商务购物商城...

    PHP登录与注册源码

    这个程序对于初学者理解PHP、HTTP协议以及数据库交互原理非常有帮助。在这个项目中,我们将探讨以下几个关键知识点: 1. **PHP基础**:PHP是一种服务器端的脚本语言,常用于网页开发。在登录和注册系统中,PHP处理...

Global site tag (gtag.js) - Google Analytics