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 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染