2015-01-15 122 views
0

內功能我有一個這樣的接口:PHP函數 - 調用

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

使用屬性? – 2015-01-15 17:14:27

+0

您需要傳遞'$ file'的值。價值來自哪裏完全取決於你。 – 2015-01-15 17:16:08

回答

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 
    } 
} 
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

+0

完全同意將它放入構造函數中。 – 2015-01-15 17:17:13