(转载于http://www.nowamagic.net/php/php_UsageOfDoubleColon.php

  双冒号操作符即作用域限定操作符Scope Resolution Operator可以访问静态、const和类中重写的属性与方法。

在类定义外使用的话,使用类名调用。在PHP 5.3.0,可以使用变量代替类名。

  Program List:用变量在类定义外部访问

<?php
class Fruit {
    const CONST_VALUE = 'Fruit Color';
}
$classname = 'Fruit';
echo $classname::CONST_VALUE; // As of PHP 5.3.0
echo Fruit::CONST_VALUE;
?>

  Program List:在类定义外部使用::

<?php
class Fruit {
const CONST_VALUE = 'Fruit Color';
} class Apple extends Fruit
{
public static $color = 'Red'; public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$color . "\n";
}
} Apple::doubleColon();
?>

程序运行结果:Fruit Color Red

  Program List:调用parent方法

<?php
class Fruit
{
protected function showColor() {
echo "Fruit::showColor()\n";
}
} class Apple extends Fruit
{
// Override parent's definition
public function showColor()
{
// But still call the parent function
parent::showColor();
echo "Apple::showColor()\n";
}
} $apple = new Apple();
$apple->showColor();
?>

程序运行结果:Fruit::showColor();Apple::showColor()

  Program List:使用作用域限定符

<?php
class Apple
{
public function showColor()
{
return $this->color;
}
} class Banana
{
public $color; public function __construct()
{
$this->color = "Banana is yellow";
} public function GetColor()
{
return Apple::showColor();
}
} $banana = new Banana;
echo $banana->GetColor();
?>

程序运行结果:Banana is yellow

  Program List:调用基类的方法

<?php

class Fruit
{
static function color()
{
return "color";
} static function showColor()
{
echo "show " . self::color();
}
} class Apple extends Fruit
{
static function color()
{
return "red";
}
} Apple::showColor();
// output is "show color"! ?>

程序运行结果:show color

注:如需转载本文,请注明出处(原文链接),谢谢。

php中::的使用方法的更多相关文章

  1. 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数

    [问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...

  2. java 执行 jar 包中的 main 方法

    java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...

  3. 为什么不能在init和dealloc函数中使用accessor方法

    前言 为什么不要在init和dealloc方法中调用getter和setter:Apple在Mac与iOS中关于内存管理的开发文档中,有一节的题目为:"Don'tUse Accessor M ...

  4. C#中DataTable中的Compute方法使用收集

    原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详 ...

  5. C#中的扩展方法

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 以上是msdn官网对扩展方 ...

  6. C#中的匿名方法

    C#中的匿名方法是在C#2.0引入的,它终结了C#2.0之前版本声明委托的唯一方法是使用命名方法的时代.虽然在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方 ...

  7. Java中是否可以调用一个类中的main方法?

    前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

  8. 什么情况下才要重写Objective-C中的description方法

    特别注意: 千万不要在description方法中同时使用%@和self,同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循环调用descrip ...

  9. PHP中常见魔术方法解析

    <?php class info { private $province; //省 public $city; //城市 private $myname; //姓名 //__construct( ...

  10. junit4 assert类中的assert方法总结

    junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...

随机推荐

  1. POS管理系统之供应商新增

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  2. jeecg扩展封装tag的那些事

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 目前公司开发一直使用的是jeecg框架,简单好用,但有时候不如自己写的随心所欲.最近项目遇到一个需求, 想封装配置加解密,本来 ...

  3. wget cooikes 下载

    2.下来用wget带cookie的命令下载,命令如下: wget -c –load-cookies=cookies.txt  ”下载地址” -O “文件名” &       [文件名处自己命名 ...

  4. web服务器长连接

    web服务器都提供长连接的方式,所谓长连接就是客户端一次请求完后,不关闭连接,保持一段时间的连接,下次此客户端再次请求时,不用创建新连接,复用所保持的连接即可.从理论上,长连接可以免去大量建立和关闭连 ...

  5. Yarn&Mapreduce参数的具体含义和配置参考

    Yarn & Mapreduce 参数的具体含义和配置 http://zh.hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp ...

  6. Hue整合Sqoop报空指针异常的解决方法

    hue是一个Apache基金会下的一个开源图形化管理工具,使用python语言开发,使用的框架是Django.而sqoop也是Apache的一个开源工具,是使用Java语言开发,主要用于进行hdfs和 ...

  7. Android,配置Activity为启动Activity(AndroidManifest.xml,application,intent-filter,MAIN,LAUNCHER)

    备忘: 将Activity注册为启动Activity. 在AndroidManifest.xml中的<application>元素中加入以下<activity>子元素内容: & ...

  8. jquery的扩展之extend函数

    1.$.extend()使用 作用:扩展全局的函数 $.extend({ sayHellow:function(pram){ alert(pram+"hellow"); } }) ...

  9. 【转】还html标签以本来意义

    说句实话,“div+css”这个词汇不知道害了多少人,也许其提出者本意并没有错,但是跟风者从表现曲解了其意思,认为整个页面就应当是div+css文件的组合.这样做,对于视觉上并没有什么影响,因为还原了 ...

  10. 一个PHP日历程序

    <?php  //<-------处理通过GET方法提交的变量;开始-------->  if($HTTP_GET_VARS[year]=="")  {      ...