首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP静态方法与实例方法

问PHP静态方法与实例方法
EN

Stack Overflow用户
提问于 2014-06-01 12:16:35
回答 1查看 897关注 0票数 0

我用PHP编写了以下代码。在Phpunit和Laravel中测试。为什么类方法和实例方法是一样的?我期望调用$instance->classMethod()会返回一些错误。这是否也意味着实例方法名不应该被类方法名共享?或者,php中的“静态方法”与我对“类方法”的理解不同?

代码语言:javascript
复制
<?php
class DemoClass{
    static function classMethod(){
        return "i'm a class method";
    }
}

class ExampleTest extends TestCase {

    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $instance = new DemoClass;
        $result1 = $instance->classMethod();
        $result2 = DemoClass::classmethod();

        $this->assertNotEquals($result1, $result2);
    }

}

结果是:

Failed asserting that 'i'm a class method' is not equal to <string:i'm a class method>.

EN

回答 1

Stack Overflow用户

发布于 2014-06-01 12:20:05

PHP是一种非常灵活的语言。有许多方法可以调用静态方法,其中有两个方法已经在$object->staticmethod()或$object::staticMethod()中显示过。从$this或对象实例调用静态方法是完全合法的。

调用静态/普通方法的另一种方法是使用像call_user_func这样的函数。这里有一个现有的讨论:

Static methods in PHP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23976710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档