相关疑难解决方法(0)

当使用自我,父母,静态和如何?

如果到现在我对ststic有点了解现在我意识到我什么都不懂.我很困惑,我很难理解,我不能.有人可以在使用self,parent,static时解释这个程序,以及我所做的所有最小的改变都会改变结果而不会让我无法理解正在发生的事情.非常感谢 ..

来自http://docs.php.net/language.oop5.late-static-bindings的代码

<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>
Run Code Online (Sandbox Code Playgroud)

出局是:

A
C
C
Run Code Online (Sandbox Code Playgroud)

php oop static

13
推荐指数
3
解决办法
1万
查看次数

PHP 5.3之前的静态继承

class A
{
    static $v = "A";

    static function echoExtendedStaticVariable() {
        echo self::$v;
    }
}

class B extends A
{
    static $v = "B";
    // override A's variable with "B"
}
Run Code Online (Sandbox Code Playgroud)

为什么:

echo B::$v
Run Code Online (Sandbox Code Playgroud)

打印"A"?

我如何让它打印"B"?

在PHP 5.3之前有没有办法做到这一点

php inheritance static php-5.3

3
推荐指数
1
解决办法
225
查看次数

self :: method()调用使用父方法而不是被调用的类

我有两节课:

class JController{
   public static function getInstance()
   {
       //some source, not important...
       self::createFile();// 
   }

   public static function createFile()
   {
       // this is base class method
   }
}

class CustomController extends JController{

   public static function createFile()
   {
       // this is overriden class method
   }
}
Run Code Online (Sandbox Code Playgroud)

我试图在派生类上调用静态方法,它调用parent方法而不是覆盖.这是预期的行为吗?

这就是我尝试使用它的方式:

$controllerInstance = CustomController::getInstance();
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么CustomController :: getInstance()调用CustomController :: createFile()?

php

1
推荐指数
1
解决办法
114
查看次数

标签 统计

php ×3

static ×2

inheritance ×1

oop ×1

php-5.3 ×1