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中类静态调用和范围解析操作符的区别解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 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"

随机推荐