Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 构造函数为空的无状态类和静态类之间有什么区别?_Php_Oop_Static Methods_Stateless - Fatal编程技术网

Php 构造函数为空的无状态类和静态类之间有什么区别?

Php 构造函数为空的无状态类和静态类之间有什么区别?,php,oop,static-methods,stateless,Php,Oop,Static Methods,Stateless,假设我必须创建一个类,它接受一些文本,进行一些处理并返回它。。。没有依赖关系,并且它是一个无状态类 我想知道,创建一个没有构造函数的无状态类还是创建一个静态类更好(在php中,它只是静态方法) 像这样的课程: class ClassName { public function processText($text) { // Some code $text = $this->moreProcessing($text); r

假设我必须创建一个类,它接受一些文本,进行一些处理并返回它。。。没有依赖关系,并且它是一个无状态类

我想知道,创建一个没有构造函数的无状态类还是创建一个静态类更好(在php中,它只是静态方法)

像这样的课程:

class ClassName
{
    public function processText($text)
    {
         // Some code
         $text = $this->moreProcessing($text);
         return $text;
    }

    protected function moreProcessing($text)
    {
        return $text;
    }
}
这是:

class ClassName
{
    public static function processText($text)
    {
         // Some code
         $text = static::moreProcessing($text);
         return $text;
    }

    protected static function moreProcessing($text)
    {
        return $text;
    }
}
我知道将依赖项注入到使用这些类的类中会更好,但假设我不会进行依赖项注入


我的问题主要是,为上面的简单示例创建静态类是否更好?

实际上,您不会看到任何区别

这只体现在语法和构造函数自动执行内容的能力上,尽管您仍然需要创建实例来调用构造函数,在这种情况下,调用一些等效的
静态
成员函数并不遥远

但是,非静态成员函数应该会影响内部状态,因此,如果没有状态,
静态
成员函数似乎更为传统,对类的用户来说也不会那么令人惊讶


不过,最好的方法是将函数固定在名称空间中。类用于数据和在该数据上操作的函数。。。即使是
静态的
类。

问题是,为什么会有一个没有任何状态的类。这不是一个类,它是一个函数容器…必须阅读:
受保护的静态函数
受保护的函数
之间的区别是什么?静态方法中不存在多态行为,这就是it@EricShaefer你说得对,只是我不想在一个主要负责DB操作的类中包含只清理文本的方法。全局状态和
class::functionNamspace
@djay:The之间没有区别。OP.Has。不,州政府。