class FileSchemaStorage i
{
public function getAll($path,$schemaName)
{
$schema = file_get_contents($path . '/' . $schemaName);
if ($schema == false) {
throw new \Exception('Data not found');
}
return json_decode($schema);
}
public function getByName($name){
???
}
}
public function getByName($path,$schemaName,$name)
{
return $this->getAll($path,$schemaName)->{$name};
}
есть ли другой способ это сделать?Есть конечно, но так норм, так как все равно вам как то нужно получить содержимое файла.
так как я думаю что getByName не должен знать о каких либо путях итдНе то что бы не должен, просто здесь это не нужно. Просто нужен чейнинг: гетолл сетит внутреннее свойство $this->schemes и возвращает $this, а гетбайнэйм берет по имени из $this->schemes.
class FileSchemaStorage
{
private $schema;
public function __construct($path,$schemaName)
{
$json = file_get_contents($path . '/' . $schemaName);
if ($schema == false) {
throw new \Exception('Data not found');
}
$this->schema = json_decode($json);
}
public function getAll()
{
return $schema;
}
public function getByName($name){
return $this->schema[$name];
}
}