4
回答
手册上为什么是双冒号呢?
【腾讯云】学生服务器套餐10元/月 >>>   

手册上写:ReflectionClass::getConstant, 但是例子却只有实例化后调用$obj->getconstant()的方式,怎样静态调用呢?

http://www.php.net/manual/en/reflectionclass.getconstant.php




PHP
举报
添加软件
发帖于5年前 4回/273阅
共有4个答案 最后回答: 5年前

引用来自“yiane”的答案

ReflectionClass::getConstant

双冒号调用静态方法,不用new


不是这个原因,PHP手册还ReflectionClass::__construct呢,PHP还能parent::__construct()呢,构造函数不是静态方法吧。

这里的::不是只能表示调用静态函数,就是调用一个函数的意思。PHP手册在这里做的容易误导,可能这么写应该是为了看起来格式统一点吧。

--- 共有 2 条评论 ---
南湖船老大回复 @李马燕 : 这么写应该是为了看起来格式统一点吧 5年前 回复
添加软件谢谢,确实被误导了 5年前 回复

其实 ::这种调用形式也许一种败笔,因为在其他语言里,比如Java/.Net里都没有这个东西(.Net有::语法,但不是静态调用的意思,Java就根本没有这个语法)。

当然,仁者见仁,智者见智,有人觉得这样容易区分,有人觉得完全没必要。反正我经常在这些语言里转,有时候很容易被搞混。

--- 共有 1 条评论 ---
yianejava中静态非静态都用. C++中也有:: 5年前 回复
c++ 里 实现类成员函数的时候不管是不是静态方法 都是在cpp文件里以 :: 的形式写的 php应该是受其影响的
顶部