PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

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 ;-)