PHP:链接方法调用

标签 php oop class object method-chaining

<分区>

Possible Duplicate:
PHP method chaining?

我偶尔会看到一些 php 应用程序使用这样的类:

$Obj = new Obj();
$Obj->selectFile('datafile.ext')->getDATA();

上面的示例获取所选文件的内容然后返回它们(只是一个示例);

好吧,在我决定问你我该怎么做之前,我试过这个:

class Someclass {
    public function selectFile( $filename  ) { 
       $callAclass = new AnotherClass( $filename );
       return $callAclass;
    }

    // Other functions ...
}

class AnotherClass {
    protected $file_name;

    public function __construct ( $filename ) { $this->file_name = $filename; }
    public function getDATA ( ) {
        $data = file_get_contents( $this->file_name );
        return $data;

    } 

    // funcs , funcs, funcs ....

}

这是完成这项任务的正确方法吗?请告诉我这些类的名称。

最佳答案

这称为方法链。看看这个question在 SO 上。

您可以通过以下方式实现您想要实现的目标:

class File 
{
    protected $_fileName;

    public function selectFile($filename) 
    { 
        $this->_fileName = $filename; 
        return $this;
    }

    public function getData()
    {
        return file_get_contents($this->_fileName);
    }
}


$file = new File();
echo $file->selectFile('hello.txt')->getData();

注意我们在 selectFile 中返回了 $this,这使我们能够将另一个方法链接到它上面。

关于PHP:链接方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369141/

相关文章:

php - 如何将汇编代码嵌入到php中?

php - 无法使用 PHP 使 SQL 更新工作

java - 类 : what's the best practice? 中的条件恒定属性

python - 类子类字典

class - 在Kotlin使用get()定义类参数

c# - 在 C# 上使用枚举

php - 从多个 MySQL 数据库表中删除

PHP 正则表达式删除多个 ?-marks

delphi - 抽象与接口(interface) - 在 Delphi 中分离定义和实现

C++ - 具有默认参数的模板模板参数不起作用