调用一个通用的静态类方法php

时间:2012-08-29 09:15:27

标签: php oop templates

我想在php中编写一个引用泛型类(但是相同的方法)的泛型方法。

class A {

    public static function Dox(){
    }

}

class B {

    public static function Dox(){
    }

}

class C{

    public static function Include($class){
    $result = $class::Dox(); //instead of 2 methods => A::Dox and B::Dox
    }

}

我收到错误。 有什么建议吗?

3 个答案:

答案 0 :(得分:4)

includekeyword。将您的方法重命名为foo(),bar()或任何非关键字。

e.g。

<?php
class A {
    public static function Dox() { return 'A::Dox'; }
}

class B {
    public static function Dox() { return 'B::Dox'; }
}

class C {
    public static function foo($class) {
        $result = $class::Dox();
        echo 'result: ', $result, "\n";
    }
}

foreach( array('A','B') as $c ) {
    C::foo($c);
}

打印

result: A::Dox
result: B::Dox

答案 1 :(得分:0)

call_user_func是否有效?

class A {
    public static function Dox() {
    }
}

class B {
    public static function Dox() {
    }
}

class C {
    public static function Include($class) {
        $result = call_user_func(array($class, "Dox"));
    }
}

答案 2 :(得分:0)

包含关键字“特定关键字”。

试一试:

public static function IncludeXXX(){...}