doudiandi6967 2016-04-30 16:48
浏览 23
已采纳

在无框架PHP代码中重复使用本地JSON文件的最佳实践

It's a simple PHP script with no framework of any kind. I get a very large (15MB, I have no choice but deal with it) local json file and use it for different operations.

Right now I use the global keyword to call it from functions but it doesn't feel very good. I also wonder about performances. Is there a more proper simple way to do for this kind of purpose ?

$data = json_decode(file_get_contents("data.json"), true);

function randomItem() {
    global $data;
    return array_rand($data);
}

$item = randomItem();
var_dump($data[$item]);
  • 写回答

1条回答 默认 最新

  • dongwo5110 2016-04-30 17:08
    关注

    You can write it like :

    class JsonLoader{
        private $data;
        private $arrayEncoding;
        public function load($file,$arrayEncoding = true){
            if(file_exists($file) == false){
                return false;
            }
            $this->arrayEncoding = $arrayEncoding;
            $this->data = json_decode(file_get_contents($file),$arrayEncoding);
            if($this->data == null){
                return false;
            }
            return true;
        }
        public function getData(){
            return $this->data;
        }
        public function getRandomData(){
            return (is_array( $this->data ) ? array_rand($this->data) : array_rand((array)$this->data));
        }
    }
    

    And use it like :

    $json = new JsonLoader;
    
    if( $json->load("data.json") == false ){
        //Show Error
    }
    
    $random = $json->getRandomData();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失