С CSVReader:Цель шаблон проектирования - один тип объекта с различными источниками
class CsvReader {
public static function createFromString($csvString){
/.../
return new static($something)
}
}
Я планирую работать с csvString, поступающих из различных источников: чтение файла, из тела ответа HTTP и т.д. Таким образом, im ищет шаблон дизайна для легкого создания этих объектов csvReaders. На данный момент я закончил что-то вроде этого:
use SplFileInfo as UploadedFile;
use CsvReader as Reader;
use GuzzleHttp\Client as HttpClient;
class CsvFactory {
public function createFromUploadedFile(UploadedFile $uploadedFile){
return Reader::createFromString($uploadedFile->toString());
}
public function createFromHttpEndpoint(HttpClient $client, $url, $options = array()){
$response = $client->request('GET', $url, $options);
if($response->getStatusCode() != 200){
throw new Exception('Http Code Not Ok', $response->getStatusCode());
}
return Reader::createFromString($response->getBody());
}
}
Я чувствую, что это может быть достигнуто наилучшим образом. Но как?
* вернуть новый статический ($ something) *? – CKing