`

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"
分享到:
评论

相关推荐

    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, ...

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

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

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

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

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

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

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3.符号实体 url说明 超链接 发送电邮 8-11 4.图像 表格 实际应用-菜谱 课堂练习-课程...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3.符号实体 url说明 超链接 发送电邮 8-11 4.图像 表格 实际应用-菜谱 课堂练习-课程...

    php网站商城购物.rar

    phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站phpphp网站...

    PHP+MySQL动态网站开发

    《PHP+MySQL动态网站开发》详细介绍了PHP的脚本语言基础、运行环境和PHP面向对象编程(包括MySQL数据库)的知识。全书共19章,内容分为理论部分和实战部分。理论部分包括PHP技术概述和基本语法、字符串和正则表达式、...

    webuploader上传php实例示例demo

    3.finfo_open 需要php环境支持二进制,我用的lnmp组合套件是直接支持二进制,没有的自行百度解决哦。 4.很多网上的fileupload.php文件,切片上传大于5M的成功,小于5m的失败,demo中的是已经经过优化。 5.demo中的...

    PHP动态网页设计与制作案例教程

    本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问...

    PHP编程基础与实例教程(源码)

    本书共分为13章,涵盖了PHP开发环境的搭建、PHP语法、FORM表单、数据库设计、PHP与数据库连接、会话控制、界面设计等内容。 本书由孔祥盛主编,内容丰富、讲解深入,适用于初、中级PHP用户,可以用做各类院校相关...

    PHP bible(PHP圣经)中文版

    PHP初学者的首选,被誉为PHP的圣经 导读 第一章 PHP 介绍 来龙去脉 功能概述 PHP 与其它 CGI 的比较 第二章 安装与配置 环境需求与准备工作 快速配置及安装 PHP 的编译配置详细选项 php.ini 配置详细选项...

    (全)传智播客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 基础实例教程(PHP网页实例版)

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

    站内全文搜索php源代码

    php文本站内全文检索说明: 1。文件结构: search.php和template.php(界面风格文件,可随意修改),search0.php是search.php的加强版。 2。特点 1)无需mysql支持,无需建立索引,无需设置路径,放在哪级目录下...

    phpweb二次开发,phpweb破解版,phpweb后台升级,phpweb2.0.5升级

    phpweb二次开发,phpweb破解版,phpweb后台升级,phpweb2.0.5升级,phpweb成品网站商业版v1.5.0/20111209升级包 phpweb成品网站升级包免费送给爱好phpweb成品网站朋友,已经更新到最新的v2.0.5/20120412 免责声明:此...

    PHP从入门到精通.pdf-入门教程.CHM

    全书共分27章,包括初识.PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、...

    ffmpeg-php-win32-all.zip

    ffmpeg-php 是一个php扩展,用来获取视频或音频信息,你可以用它从视频中截取图片、获取视频时长,视频的长、宽等。 下面介绍在windows环境下本扩展的安装,在安装本扩展之前你首先要确认你本地环境中已经安装好了...

    PHP+MySQL数据库网站开发全程实例附源码(基础版)

    PHP是一 种被广泛应用的开放源代码的、基于服务器端的用于产生动态网页 的、可嵌入HTML中的脚本程序语言,尤其适合 WEB 开发。下面给大家分享PHP小白必须要知道的php基础知识,超实用,感兴趣的朋友一起学习吧 很多...

Global site tag (gtag.js) - Google Analytics