• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 静态方法问题

php 搞代码 4年前 (2022-01-25) 14次浏览 已收录 0个评论
文章目录[隐藏]

<body>

<code>    private function getlong() {    $result = unpack('Vlon<span>!本文来源gaodai#ma#com搞*!代#%^码网5</span><pre>搞gaodaima代码

g’, fread(self::$fp, 4)); return $result[‘long’];}

getlong 非静态方法
为什么在getClientLocation
里可以用self::getlong() 访问

回复内容:

<body>

<code>    private function getlong() {    $result = unpack('Vlong', fread(self::$fp, 4));    return $result['long'];}</code>

getlong 非静态方法
为什么在getClientLocation
里可以用self::getlong() 访问

__callStatic

其实php的设计是可以用::方式调用实例方法,这个涉及到scope引用问题,例如:

<code class="lang-php">class A{    public $a;    public function echo()    {        //标识为A.a        $this->a = 'A.a';        echo $this->a;    }}Class B{    public $a;    public function test()    {        //标识为B.a        $this->a = 'B.a';        //静态调用A的echo方法        A::echo();    }}//这里要不能用::调用,不然会出现context错误,因为这里要找到$this.$b = new B();$b->test();//结果是:B.a</code>

结果不是A.a的原因是scope,因为静态调用使得A的echo方法里的$this即scope指向了B,所以$this是指B实例,
为什么php会有这样的设计?因为 parent::foo();记得了吧,子类调用父类方法的时候,就是用parent:: 的方式调用.


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 静态方法问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址