【问题标题】:Would a method in a static class and a static class method have the same callabilty?静态类中的方法和静态类方法是否具有相同的可调用性?
【发布时间】:2011-05-06 21:27:06
【问题描述】:

我想我的问题是会

static class example1{
    function example1_function(){};     
}

class example2{
    static function example2_function(){};
}

导致相同的结果,即example1->example1_function()example2->example2_function() 具有相同的可调用性。两者都会被定义为静态和可用的吗?

【问题讨论】:

  • static classclass class 会导致解析错误。
  • 看看这个:link

标签: php class static static-methods


【解决方案1】:

PHP 不允许你声明一个静态类。

要调用静态方法,必须使用:: 运算符。

【讨论】:

    【解决方案2】:

    你不能将一个类声明为静态类,正如这里其他成员所说的,但是有一个方法可以阻止该类成为一个对象,你可以使用abstract关键字来指定对象不应该使用 new 关键字实例化,这对继承等很有好处。

    abstract class Something
    {
    }
    

    执行new Something 会触发一个错误,说明您无法实例化该类,然后您可以像这样声明您的静态方法:

    abstract class Something
    {
        public static function Else()
        {
        }
    }
    

    您仍然必须将您的方法声明为static,就是这样。

    然后你可以像这样使用:

    Something::Else();
    

    希望这能解决一些问题

    【讨论】:

    • 相对于function Else()? (不在课堂上)
    • 请解释您的评论,它无法理解您指的是什么?
    • 为什么要创建一个包含所有静态方法的类,而不是仅仅为这些方法编写函数?
    • 因为它充当包装器,不影响全局范围,允许您使用 OOP self::OtherMethod()的形式
    【解决方案3】:

    正如在 cmets 中已经提到的,static 关键字不以那种方式用于类(语法)。

    http://php.net/manual/en/language.oop5.static.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2011-07-11
      • 2016-06-26
      • 2011-01-17
      • 2017-03-02
      • 1970-01-01
      • 2012-05-24
      相关资源
      最近更新 更多