首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类中的PHP调用函数--有没有更简单的方法?

问类中的PHP调用函数--有没有更简单的方法?
EN

Stack Overflow用户
提问于 2011-10-07 13:39:30
回答 5查看 7.4K关注 0票数 3

我是OOP的新手,对PHP的了解也很生疏。我想知道这是否是从类中调用函数的有效方法?

代码语言:javascript
复制
class newclass {
    public function testfunc {
        return '1';
    }
}

我可以这样称呼它吗:

代码语言:javascript
复制
echo testfunc->newclass();

或者像这样:

代码语言:javascript
复制
echo newclass()::testfunc;

我总是在下面的示例中看到它的定义,它看起来像是额外的代码?:

代码语言:javascript
复制
$this = new newclass();
$this->testfunc();
echo $this;

任何帮助都是非常感谢的,因为我刚刚开始考虑这个OOP的事情。如果我出去吃午饭,也许有人会推荐一个链接给真正的初学者/OOP的真正的初学者。谢谢!

EN

回答 5

Stack Overflow用户

发布于 2011-10-07 14:00:55

这两种方式都有效,并有各自的用例。

第一种情况是使用类的实例进行常规函数调用,第二种情况是对静态函数的调用。

静态应该小心使用,它的使用通常是重构/重新设计是必要的标志。

面向对象编程的要点是通过编写类(蓝图)来对世界进行建模,然后根据需要使用new这个词创建尽可能多的类的独立实例。每个实例都是一个带有类DNA的小有机体,您可以在每个实例上调用相同的类方法,而不会影响其他实例。

但是,静态调用与类的实例无关,因此没有正在使用的对象。它是对某些工具功能的全局调用,实际上打破了封装的概念。

因此,我并不是说静态类和方法没有用例,但应该小心使用它们。

票数 4
EN

Stack Overflow用户

发布于 2011-10-07 13:43:49

new是实例化该类的关键字。如果要使用没有类实例的方法,则该方法应为静态方法。若要使用静态方法,请将该方法声明为静态方法。

代码语言:javascript
复制
class foo
{
    public static function bar()
    {
        return 'hello!'; 
    }
}

怎么用?

代码语言:javascript
复制
echo foo::bar(); //Will print hello
票数 2
EN

Stack Overflow用户

发布于 2011-10-07 13:41:31

您可以将testfunc设为静态的,并像这样调用它:

代码语言:javascript
复制
class newclass{

  public static function testfunc{

     return '1';
  }
}

echo newclass::testfunc();

没有什么像这样的echo testfunc->newclass();,它是像这样做的。

代码语言:javascript
复制
$class = new newclass();
echo $class->testfunc();

当方法是实例方法而不是静态方法时,是正确的方法。注意,不能在静态方法中引用$this。

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

https://stackoverflow.com/questions/7683429

复制
相关文章

相似问题

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