PHP中类静态调用和范围解析操作符的区别解析
具体代码如下所示:
<?php //在子类或类内部用“::”调用本类或父类时,不是静态调用方法,而是范围解析操作符。 class ParentClass { public static $my_static = 'parent var '; function test() { self::who(); // 输出 'parent' 是范围解析,不是静态调用 $this->who(); // 输出 'child' static::who(); // 延迟静态绑定 是范围解析,不是静态调用 } function who() { echo 'parent<br>'; } } class ChildClass extends ParentClass { public static $my_static = 'child var '; function who() { echo 'child<br>'; } } $obj = new ChildClass(); $obj->test(); echo ChildClass::$my_static;//静态调用
上面输出
parent
child
child
child var
总结
以上所述是小编给大家介绍的PHP中类静态调用和范围解析操作符的区别解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
PHP类的静态(static)方法和静态(static)变量使用介绍
在php中,访问类的方法/变量有两种方法: 1. 创建对象$object = new Class(),然后使用"->"调用:$object->attribute/function,前提是该变量/方法可访问. 2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以.但是有前提条件: A. 如果是变量,需要该变量可访问. B. 如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件: b2) 如果是非
-
用PHP生成静态HTML速度快类库
复制代码 代码如下: ob_start();#开启服务器缓存 include_once 'Index.php'; $ctx=ob_get_contents();# 获取缓存 ob_end_clean();#清空缓存 $fh=fopen("index.html","w+"); fwrite($fh,$ctx);# 写入html,生成html fclose($fh); 1.Flush:刷新缓冲区的内容,输出. 函数格式:flush() 说明:这个函数经常使用,效率很高.
-
PHP静态类
复制代码 代码如下: <?php class Shtml { var $Templet; var $DataSource; var $Dir; var $fileName; var $mod; var $handle; function Shtml($fileName="") { $this->fileName=$fileName; $this->mod="wb"; $this->
-
用PHP实现的生成静态HTML速度快类库
复制代码 代码如下: <?php /////////////////////////////////////////////////////////////////////////////// // // 张树林 - 慧佳工作室 // // Module Name: woods-bhtml.php // Abstract: 生成静态HTML处理程序尾底 // Version: 2.0 // Date
-
PHP中类静态调用和范围解析操作符的区别解析
具体代码如下所示: <?php //在子类或类内部用"::"调用本类或父类时,不是静态调用方法,而是范围解析操作符. class ParentClass { public static $my_static = 'parent var '; function test() { self::who(); // 输出 'parent' 是范围解析,不是静态调用 $this->who(); // 输出 'child' static::who(); // 延迟静态绑定 是范围解析,
-
php基础知识:类与对象(4) 范围解析操作符(::)
范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员.方法和常量,还可以用于访问被覆盖类中的成员和方法. 当在类的外部访问这些静态成员.方法和常量时,必须使用类的名字. 把 Paamayim Nekudotayim 在希伯莱文就是双冒号的意思. 在类的外部使用 :: 操作符 class MyClass { const CONST_VALUE = 'A constant value'; } echo MyClass::CONST
-
PHP的范围解析操作符(::)的含义分析说明
今天看到几个有关PHP的符号.一个是@,这个加在一个变量的前面,是为了抑制PHP解释器报错,也就是说即使出了错也不会显示出来. 还有一个更重要的符号PHP的范围解析操作符(::) 在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处.而 :: 运算符即用于此情况. 复制代码 代码如下: <?php class A { function example() { echo "I am the original function A::example().<br />
-
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
本文实例讲述了JS中类的静态方法,静态变量,实例方法,实例变量区别与用法.分享给大家供大家参考,具体如下: 1.类的静态方法 先来段代码之后分析 // JS类静态函数 function BaseClass() { } // 类添加add函数 BaseClass.add = function() { console.log("BaseClass add()方法被调用"); }; // 类方法(类的静态函数)直接调用 // 类名.类方法名 BaseClass.add(); //BaseCl
-
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
本文实例讲述了PHP 范围解析操作符(::)用法.分享给大家供大家参考,具体如下: 范围解析操作符 (::) 范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法. 当在类定义之外引用到这些项目时,要使用类名. 自 PHP 5.3.0 起,可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static). 把 Paamayim Nekudotayim 选作双冒号操作符
-
PHP静态调用非静态方法的应用分析
静态调用非静态方法!!这在java,c#中是不可想象的,也是绝对不行的.这样的错误在这些语言中会在编译阶段就被指出错误的.但是对于php这样的动态语言呢?首先这个是语法没有错误的,php –l 找不出错误来的.如果运行呢?先看一个例子 复制代码 代码如下: <?php class myClass { private $name = "myClass"; public function echoName(){ echo $this->name;
-
laravel框架模型中非静态方法也能静态调用的原理分析
本文实例讲述了laravel框架模型中非静态方法也能静态调用的原理.分享给大家供大家参考,具体如下: 刚开始用laravel模型时,为了方便一直写静态方法,进行数据库操作. <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { public static function getList() { return self::get()->toArray(); }
-
Vue3 AST解析器-源码解析
目录 1.生成 AST 抽象语法树 2.创建 AST 的根节点 3.解析子节点 4.解析模板元素 Element 5.示例:模板元素解析 上一篇文章Vue3 编译流程-源码解析中,我们从 packges/vue/src/index.ts 的入口开始,了解了一个 Vue 对象的编译流程,在文中我们提到 baseCompile 函数在执行过程中会生成 AST 抽象语法树,毫无疑问这是很关键的一步,因为只有拿到生成的 AST 我们才能遍历 AST 的节点进行 transform 转换操作,比如解析 v
-
Vue编译器解析compile源码解析
目录 引言 解析 compile compile 源码 配置选项 属性分别解析 finalOptions添加warn 方法 两个特殊的属性处理 引言 在上篇文章 Vue编译器源码分析compileToFunctions作用中我们介绍到了,在 compileToFunctions 方法中: // compile var compiled = compile(template, options); 而真正的编译工作是依托于 compile 函数,接下来我们详细解析 compile . 解析 comp
-
javascript中JSON.parse()与eval()解析json的区别
本文实例讲述了javascript中JSON.parse()与eval()解析json的区别.分享给大家供大家参考,具体如下: JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是Javascript原生格式,这意味着在javascript中处理JSON数据 基本格式: varjsonData='{"data1":"Hello,","data2"
随机推荐
- 详解vue 模版组件的三种用法
- python中二维阵列的变换实例
- asp.net 简单工厂模式和工厂方法模式之论述
- Centos虚拟机上网配置IP方法
- JS+CSS实现简单滑动门(滑动菜单)效果
- PHP开启opcache提升代码性能
- 利用Ffmpeg获得flv视频缩略图和视频时间的代码
- Python处理XML格式数据的方法详解
- C#泛型相关讲解
- 扩展你的 PHP 之入门篇
- xtemplate node.js 的使用方法实例解析
- Group容器
- Vue 进阶教程之v-model详解
- 使用ASP在IIS创建WEB站点的函数
- linux下mysql 5.7.16 免安装版本图文教程
- SQL Server阻止保存修改表结构的解决方法
- 用循环或if语句从json中取数据示例
- 什么是域名解析服务?
- php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
- Android应用获取设备序列号的方法