2016-11-18 4 views
0

Я пытался использовать метод GET из класса я создал, ошибка говоритPHP объект ошибка не может быть преобразован в строку

«Catchable фатальная ошибка: Объект класса IdmoreRO не может быть преобразован в строку в»

, когда я пытался использовать магический метод __toString() его ошибка тоже говорит

Фатальная ошибка: Метод IdmoreRO :: __ ToString() не может принимать аргументы в

вот мой код:

idmore.php

class IdmoreRO 
{ 
    public function __construct() 
    { 
    } 

    //hitung ongkir 
    public function __toString($origin,$destination,$weight,$courier) 
    { 
     $curl = curl_init(); 
     curl_setopt_array($curl, array(
      CURLOPT_URL => "http://rajaongkir.com/api/starter/cost", 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_ENCODING => "", 
      CURLOPT_MAXREDIRS => 10, 
      CURLOPT_TIMEOUT => 30, 
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
      CURLOPT_CUSTOMREQUEST => "POST", 
      CURLOPT_POSTFIELDS => "origin=$origin&destination=$destination&weight=$weight&courier=$courier",CURLOPT_HTTPHEADER => array("key: $this-> 3f01f13ce2b42ba983ad3f3bc4852f84"), 
     )); 
     $response = curl_exec($curl); 
     $err = curl_error($curl); 
     curl_close($curl); 
     if ($err) { 
      $result = 'error'; 
      return 'error'; 
     } else { 
      return $response; 
     } 
    } 
} 

process.php

#header("Content-Type: application/x-www-form-urlencoded"); 
require_once('idmore.php'); 

$IdmoreRO = new IdmoreRO(); 
if(isset($_GET['act'])): 

     switch ($_GET['act']) { 

     case 'showprovince': 
      $province = $IdmoreRO->showProvince(); 
      echo $province; 

     break; 

     case 'showcity': 
      $idprovince = $_GET['province']; 
      $city = $IdmoreRO->showCity($idprovince); 
      echo $city; 

     break; 

     case 'cost': 
      $origin = $_GET['origin']; 
      $destination = $_GET['destination']; 
      $weight = $_GET['weight']; 
      $courier = $_GET['courier']; 
      $cost = $IdmoreRO->__toString($origin,$destination,$weight,$courier); 
      echo $cost; 
      break; 

     } 
endif; 
+2

Не используйте '__toString' с параметрами, это волшебный метод автоматического преобразования объектов в строки. Вы должны просто назвать свою функцию чем-то еще. –

+0

Возможный дубликат [Можно ли вернуть прежнее поведение \ _ \ _ tostring() в PHP 5.3?] (Http://stackoverflow.com/questions/5260607/can-i-bring-back-old-tostring-behaviour-in -PHP-5-3) – insertusernamehere

ответ

3

Как сказано в сообщении об ошибке, __toString не может принимать аргумент

Вы могли бы сделать что-то например

class IdmoreRO 
{ 
    private $origin; 
    private $destination; 
    private $weight; 
    private $courier; 

    public function __construct(
     $origin, 
     $destination, 
     $weight, 
     $courier 
    ) { 
     $this->origin = $origin; 
     $this->destination = $destination; 
     $this->weight = $weight; 
     $this->courier = $courier; 
    } 

    public function __toString() 
    { 
     // use $this->origin, $this->destination, $this->weight and $this->courier 
    } 
} 
Смежные вопросы