我有这样的界面:
interface General {
public function getFile($file);
public function searchFile($to_search);
}
我有一个班级,如下:
class Parent implements General {
public function getFile($file) {
$loaded = file($file);
}
public function searchFile($to_search) {
$contents = $this->getFile(); // doesn't work because I need the $file from get_file()!
// searches file
// returns found items as collection
}
}
然后在代码中,我可以做类似......
$file = "example.txt";
$in = new Parent();
$in->getFile($file)
$items = $in->searchFile('text to search');
foreach($item as $item) {
print $item->getStuff();
}
我所看到的所有参考类中的另一个函数的例子都没有参与。
如何从getFile($ file)引用$文件,以便我可以加载文件并开始搜索?我想通过界面实现它,所以不要打扰更改界面。
答案 0 :(得分:2)
将文件作为构造函数参数传递,并将其内容保存为属性。
class Parent implements General {
private $file;
public function __construct($file) {
$this->file = file($file);
}
public function searchFile($to_search) {
$contents = $this->file;
// proceed
}
}
实际上你不需要做那些构造函数,只需让getFile
函数将结果保存在$this->file
中。我认为它作为构造函数更有意义:p
答案 1 :(得分:1)
由于您已经从课外调用getFile()
,如何将其作为类属性加载,以便您可以使用searchFile()
方法轻松访问它:
class Parent implements General {
protected $loaded;
public function getFile($file) {
$this->loaded = file($file);
}
public function searchFile($to_search) {
$contents = $this->loaded;
// searches file
// returns found items as collection
}
}