PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Web Services » Services_Weather » Bug #692

testing strlen on array create unwanted warning in weatherdotcom module

Details

Submitted2004-02-06 03:53 UTC
Fromfischaz at fischaz dot com
StatusBogus
PackageServices_Weather
PHP Version4.3.4
OSDebian GNU/Linux
Roadmaps(Not assigned)

Comments

[2004-02-06 03:53 UTC] fischaz at fischaz dot com

Description:
------------
In the function _checkLocationID($id) which test if $id is a valid location (a string). The test is made using the strlen func.

This function create a warning output if $id is an array (case of multiple locations returned by weather.com) or an object (pear_error object)

The test would be better by hiding the warning or changing the function to a more suitable (like a gettype() or is_a()).

Reproduce code:
---------------
$location = 'Paris, France';

$weatherDotCom = &Services_Weather::service("WeatherDotCom");
$weatherDotCom->setAccountData($id, $key);
$weatherDotCom->searchLocation($location);
$result = $weatherDotCom->getLocation($search);

...

Expected result:
----------------
The function just return the pear_error object for a bad location without any display messages

Actual result:
--------------
Notice: Array to string conversion in /usr/share/php/Services/Weather/Weatherdotcom.php on line 160

(ps: I added some debug code just before, so the error normally would be at line 149 I think).

I'm also in a E_ALL environment.

[2004-02-06 10:56 UTC] eru at php dot net

The getLocation (and _checkLocationID as well) function header clearly states, that it expects a string as input, so if you pass an object or array don't be suprised if you get an error - I won't start adding typechecking everywhere.
Likewise the searchLocation function is marked as returning either a string or an array, you have to do the differentiation on your own.

Thanks for your report anyway ;-)