php中冒号是什么,在PHP中:(双冒号)和-(箭头)有什么区别?
当左侧部分是对象实例时,可以使用->..否则,您将使用::.
这意味着->主要用于访问实例成员(尽管它也可用于访问静态成员,但不鼓励这种使用),而::通常用于访问静态成员(尽管在一些特殊情况下,它用于访问实例成员)。
总体而言,::用于范围分辨率,它可能有一个类名,parent, self,或(在PHP 5.3中)static在左边。parent指所使用的类的超类的作用域;self指使用它的类的作用域;static指“被调用的范围”(请参见后期静态绑定).
规则是::是实例调用当且仅当:目标方法未声明为静态方法。
和
调用时有一个兼容的对象上下文,这意味着这些内容必须为真:调用是从以下上下文发出的
$this存在和
.的阶级
$this是正在调用的方法的类或它的子类。
例子:class A {
public function func_instance() {
echo "in ", __METHOD__, "\n";
}
public function callDynamic() {
echo "in ", __METHOD__, "\n";
B::dyn();
}}class B extends A {
public static $prop_static = 'B::$prop_static value';
public $prop_instance = 'B::$prop_instance value';
public function func_instance() {
echo "in ", __METHOD__, "\n";
/* this is one exception where :: is required to access an
* instance member.
* The super implementation of func_instance is being
* accessed here */
parent::func_instance();
A::func_instance(); //same as the statement above
}
public static function func_static() {
echo "in ", __METHOD__, "\n";
}
public function __call($name, $arguments) {
echo "in dynamic $name (__call)", "\n";
}
public static function __callStatic($name, $arguments) {
echo "in dynamic $name (__callStatic)", "\n";
}}echo 'B::$prop_static: ', B::$prop_static, "\n";echo 'B::func_static(): ', B::func_static(), "\n";$a = new A;$b = new B;echo '$b->prop_instance: ', $b->prop_instance, "\n";//not recommended (static method called as instance method):echo '$b->func_static(): ', $b->func_static(), "\n";echo '$b->func_instance():', "\n", $b->func_instance(), "\n";/* This is more tricky
* in the first case, a static call is made because $this is an
* instance of A, so B::dyn() is a method of an incompatible class
*/echo '$a->dyn():', "\n", $a->callDynamic(), "\n";/* in this case, an instance call is made because $this is an
* instance of B (despite the fact we are in a method of A), so
* B::dyn() is a method of a compatible class (namely, it's the
* same class as the object's)
*/echo '$b->dyn():', "\n", $b->callDynamic(), "\n";
产出:B::$prop_static: B::$prop_static value
B::func_static(): in B::func_static
$b->prop_instance: B::$prop_instance value
$b->func_static(): in B::func_static
$b->func_instance():
in B::func_instance
in A::func_instance
in A::func_instance
$a->dyn():
in A::callDynamic
in dynamic dyn (__callStatic)
$b->dyn():
in A::callDynamic
in dynamic dyn (__call)
php中冒号是什么,在PHP中:(双冒号)和-(箭头)有什么区别?相关推荐
- Linux中三种引号(单引号、双引号、反引号)的区别
1. 双引号 保护特殊元字符和通配符不被shell解析,但是允许变量和命令的解析,以及转义符的解析. 2. 单引号 单引号内不允许任何变量.元字符.通配符.转义符被shell解析,均被原样输出. 使用 ...
- html语言中的双冒号,css单冒号和双冒号用法和区别
最近突然被别人问起css单冒号和双冒号有什么区别,答曰:"不知道". 虽然还在填坑中,但作为一个跨过了初级的FEer,感觉着实汗颜,刚好今天下午在搜别的问题的时候,突然看到一个对比 ...
- java中的双冒号操作符
java :: Java中的双冒号操作符 </h1><div class="clear"></div><div class="p ...
- 双冒号(::)和单冒号(:)在 C++ 中的含义和作用
目录 一.双冒号(::)在C++中的含义和作用 二.单冒号(:)在C++中的含义和作用 双冒号(::)和单冒号(:)在 C++ 中都是特殊符号,它们具有不同的含义和作用. 一.双冒号(::)在C++中 ...
- html语言中的双冒号,::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用...
标题:::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用? 相关知识点: 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素.(伪元素由双冒号和伪 ...
- ::before 和 :after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用?
::before 和 :after中双冒号和单冒号的区别以及2个伪元素的作用 ::before 和 :after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用 实例 实例 ::before 和 ...
- C++中的双冒号(::)
双冒号(::)的用法(来自https://blog.csdn.net/qq_22424571/article/details/82962367) A::member就表示类A中的成员member. B ...
- JDK1.8 中的双冒号::是什么语法?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:Java实用技术 www.toutiao.com/i ...
- java中冒号是什么意思_css样式表有哪些?css双冒号是什么意思
SS即层叠样式表(英语:Cascading Style Sheets,又称串样式列表.级联样式表.串接样式表.阶层式样式表)是一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体.间距和颜 ...
- Python中双冒号的作用[::]
Python中双冒号的作用[::] Python sequence slice addresses can be written as a[start:end:step] and any of sta ...
最新文章
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
- apache强制https访问
- 秋冬季节吃什么水果好
- word中链接到目标后返回快捷键
- Api文档生成工具与Api文档的传播(pdf)
- magento图片处理 Customize Magento’s Image Resize Functionality
- react转跳_您跳过的这些React基础知识可能会杀死您
- 程序设计与算法----递归之n皇后问题
- 初解vue脚手架vue-cli,及demo示例(一)
- Unsafe code may only appear if compiling with /unsafe
- CH552-HID 键盘 鼠标
- 小米 note3 android,小米NOTE3 MIUI9.6稳定版 开启全面屏手势和屏蔽经典物理按键全攻略...
- 利用Hbuilder + Android Studio 制作安卓APP
- Android之绘制动态折线图
- Android适配--dimen
- E.03.25 Chinese Video Company Bilibili Eyes $2.8 Billion Hong Kong Share Sale
- Excel中如何合并多个工作簿或者合并多个表格(利用方方格子)
- 海信电视power android,海信智能电视投屏之安卓手机miracast投屏教程
- 你的麦克风可能需要设置 未修复,问题已解决
- Google Earth Engine(GEE)——MOD10A1 V6 Snow Cover Daily Global 500m积雪、积雪反照率、部分积雪和质量评估 (QA) 数据
热门文章
- hdu2955 Robberies (动态规划之背包)
- 应届生,你如何应付技术关?
- 支付宝支付-手机浏览器H5支付
- php 页面加载进度条,HTML5/CSS3 网页加载进度条的实现,下载进度条等经典案例
- Validator 使用总结
- Android使用webview控件加载本地html,通过Js与后台Java实现数据的传递
- 1056. Mice and Rice (25)
- 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码
- 【OS学习笔记】十 实模式:实现一个程序加载器-程序加载器如何将用户程序加载到内存并执行
- 用示例说明BitMap索引的效率要优于B-Tree索引