dongyuchen0214 2011-10-30 11:31
浏览 69
已采纳

PHP:调用没有类名的静态方法

I have simllar question like here: static-method-invocation, but in PHP. Simply, I want have class like this:

static class ClassName{
   static public function methodName(){
         //blah blah blah
   }
}

and I want to call member method without name od class like this:

require_once(ClassName.php);

methodName();

Is it possible in PHP? Thanks for your answers!

  • 写回答

2条回答 默认 最新

  • duanjie6912 2011-10-30 11:48
    关注

    You can not do what you're looking for. The example call you give:

    methodName();
    

    Is calling a global function. Even static class functions are global as well, they always need the class-name to be called:

    ClassName::methodName();
    

    This calls the global static class function you've created in the include file.

    I can only guess what you'd like to achieve, maybe you can benefit from the feature that includes can return values:

    static class ClassName{
       static public function methodName(){
             //blah blah blah
       }
    }
    return 'ClassName';
    

    Including:

    $className = require_once(ClassName.php);
    $className::methodName();
    

    However this won't work with reguire_once when the file has been loaded earlier.

    You can write a wrapper function to require_once files, store their return value into a global context array that keeps these values based on the file-name of the include.

    Keep in mind that the java language differs from PHP. The equivalent to the java static function would be the global function in PHP:

    function methodName(){
        //blah blah blah
    }
    

    Including:

    require_once(ClassName.php);
    methodName();
    

    That's the PHP equivalent.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?