dd可以工作,但是echo不适用于在Laravel中作为参数传递给函数的对象

时间:2018-08-13 11:40:47

标签: laravel laravel-5 laravel-5.6

我在laravel中的函数中传递了一个对象。 我试图将属性的值分配给变量。弹出错误。

当我试图弄清楚发生了什么时,我尝试dd()它起作用的值。

但是当我尝试回显相同的内容时,它不会。

我在想什么。

使用此功能时,

  

location1和location2是location类的两个对象。

函数在这里:

function geodistance($location1,$location2){
    dd($location1->lat);
    $lat1=$location1->lat;
}

它打印

  

“ 28.612072”

但是当我将相同的功能更改为

function geodistance($location1,$location2){
    echo($location1->lat);
    $lat1=$location1->lat;
}

输出错误为:

  

试图获取非对象的属性“ lat”

甚至功能

function geodistance($location1,$location2){
echo $location1->lat;
$lat1=$location1->lat;
}

给出相同的输出

提醒您的目的是像这样将值分配给变量。

function geodistance($location1,$location2){
    $lat1=$location1->lat;
}

当我从函数geodistance()内回显$ location1时,发出并给出了有意义的错误。

function geodistance($location1,$location2){
    echo $location1;
    $lat1=$location1->lat;
  

App \ MyClasses \ city类的对象无法转换为字符串

当我dd(像这样,从函数中获取$ location1时,它会给出正确的结果。

function geodistance($location1,$location2){
  dd($location1);
  $lat1=$location1->lat;

像这样:

  

城市{#13410▼   +编号:2245   + info:“ {}”
  +名称:“新德里”
  + lat:“ 28.612072”
  + lon:“ 77.22978”
  +时区:空
  +加权评分:空   + country_id:1   }

看来我错过了一些非常琐碎的东西。 :(

1 个答案:

答案 0 :(得分:0)

@salman zafar和@apokryfos指出,错误是我正在传递数组。

当我做dd时,在处理完第一个数据后,程序终止了。

传递的数组不完全正确。我数组中的最后一个数据点不是同一类的对象。

因此,使用echo时数据最终被破坏。 Echo会依次打印一个数据,但最终它将得到错误的输入。

捕获这些错误的最佳方法(经过大量的实验)是在每个迭代中将变量的值写入文本文件中。 这样做是因为它可以捕获文本文件中的错误,并且您可以知道程序停止了多少次迭代。

希望这有助于其他人避免犯下如此明显的明显错误(这是此类错误中的第一个),这对我来说至少是