@kaxa3201

Как правильно организовать получения схемы?

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){
      ???
}
}

getAll() возвращает несколько объединенных схем у этих схем есть имена. Мне нужно получить из этой объединенной схемы - конкретную схему(getByName).
я могу сделать так
public function getByName($path,$schemaName,$name)
    {
        return $this->getAll($path,$schemaName)->{$name};
    }

есть ли другой способ это сделать? так как я думаю что getByName не должен знать о каких либо путях итд
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
есть ли другой способ это сделать?
Есть конечно, но так норм, так как все равно вам как то нужно получить содержимое файла.
так как я думаю что getByName не должен знать о каких либо путях итд
Не то что бы не должен, просто здесь это не нужно. Просто нужен чейнинг: гетолл сетит внутреннее свойство $this->schemes и возвращает $this, а гетбайнэйм берет по имени из $this->schemes.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
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];
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы