Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
phosphorylation
/
tecas-solar.ma
/
vendor
/
arcanedev
/
laravel-settings
/
src
/
Stores
:
JsonStore.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare(strict_types=1); namespace Arcanedev\LaravelSettings\Stores; use Arcanedev\LaravelSettings\Utilities\Arr; use RuntimeException; /** * Class JsonStore * * @author ARCANEDEV <arcanedev.maroc@gmail.com> */ class JsonStore extends AbstractStore { /* ----------------------------------------------------------------- | Properties | ----------------------------------------------------------------- */ /** @var string */ protected $path; /* ----------------------------------------------------------------- | Post-Constructor | ----------------------------------------------------------------- */ /** * Fire the post options to customize the store. * * @param array $options */ protected function postOptions(array $options) { $this->setPath(Arr::get($options, 'path')); } /* ----------------------------------------------------------------- | Getters & Setters | ----------------------------------------------------------------- */ /** * Set the storage path for the json file. * * @param string $path * * @return self */ public function setPath($path) { $this->path = $path; return $this; } /* ----------------------------------------------------------------- | Main Methods | ----------------------------------------------------------------- */ /** * Read the data from the store. * * @return array */ protected function read() { $contents = $this->filesystem()->get($this->path); $data = json_decode($contents, true); if (is_null($data)) { throw new RuntimeException("Invalid JSON file in [{$this->path}]"); } return (array) $data; } /** * Write the data into the store. * * @param array $data */ protected function write(array $data) { $contents = $data ? json_encode($data) : '{}'; $this->filesystem()->put($this->path, $contents); } /* ----------------------------------------------------------------- | Other Methods | ----------------------------------------------------------------- */ /** * Get the filesystem instance. * * @return \Illuminate\Filesystem\Filesystem */ private function filesystem() { return $this->app['files']; } }