2016-10-26 1 views
1

URL-адрес для JSON структурыСинтаксических данные JSON к объектам в PHP

http://api.giphy.com/v1/gifs/search?q=funny+cat&offset=100&limit=1&api_key=dc6zaTOxFJmzC

Теперь я пытаюсь разобрать этот Json данных для моих объектов:

это мой класс:

<?php 
class MappedEntity{ 
    private $id; 
    private $mp4Url;  


    public function setId($id){ 
     $this->id=$id; 
    } 
    public function setMp4Url($mp4Url){ 
     $this->mp4Url=$mp4Url; 
    } 
    public function getId(){ 
     return $id; 
    } 
    public function getMp4Url(){ 
     return $mp4Url; 
    } 

    function __contruct($jsonData){ 
     foreach($jsonData as $key => $val){ 
      if(property_exists(__CLASS__,$key)){ 
       $this->$key = $val; 
      } 
     } 
    } 
} 
?> 

треска е то будет созывающие класс:

<?php 

require_once 'mappedEntity.php'; 


    $keyword = $_POST["keyword"]; 


    $url="http://api.giphy.com/v1/gifs/search?q=".$keyword."&offset=100&limit=1&api_key=dc6zaTOxFJmzC"; 



    $json = file_get_contents($url); 
    $file = json_decode($json); 
    $entity = new MappedEntity($file); 
    echo $entity->getId(); 
?> 

Im получая

Примечание:

Неопределенная переменная: идентификатор в C: ... \ MappedEntity.php на линии 14

который является следующим ine

13 public function getId(){ 
14   return $id; 
15 } 

КИ, я изменил й методу е геттерной и конструктор, теперь ошибка идет

Notice: Undefined variable: id in C:\....\MappedEntity.php on line 14 

Fatal error: Cannot access empty property in C:...\MappedEntity.php on line 14 

Я полагаю, мой метод отображения внутри конструктора не работает нормально?

+0

'вернуть $ this-> идентификатор;' – Progrock

+0

1) Ваша апи ключ находится в этой строке. – Farkie

+0

2) Вы вызываете '__contruct', а не' __construct' – Farkie

ответ

3

Вы упускаете $ это на обе функции GetId и getMp4URL, они должны прочитать:

public function getId(){ 
    return $this->id; 
} 

и

public function getMp4Url(){ 
    return $this->mp4Url; 
} 
+0

и contructor? – Progrock

+0

Сначала исправьте опечатку в конструкторе (это должен быть __construct), вам не нужно менять тело метода, это выглядит нормально. –

+0

Кроме этого все еще не будет корректно загружать данные, поскольку код конструктора также не получает данные из правильной части структуры – RiggsFolly

Смежные вопросы