Dear Jeff, thank you for the quick and helpful answer. You were right, I didn't RTFM... :-) At least I didn't do it carefully enough. Sorry for that.
I obviously must have looked at getMetaData() at mapObj level, since I was sure I checked if there was a deprecation note. On layerObj level (where the error happened) there is one indeed. With get() instead of direct access I could make it working again. To be honest I didn't even realise, that the hashTableObj is not a built-in type, but a mapscript one. Ouf! Regarding the wiki: I'm not sure if I can really contribute to that. Other than the getMetaData() stuff, I think I only ran into layer level issues regarding color and opacity, which all three are already explicitly mentioned. Maybe the "new" case-sensitivity is a point?! The non-existence of mapObj->numLayers I moaned about last time, just wasn't working due to case-sensitivity. o_O Don't know how that made its way into the project... :-D Normally I wouldn't even dare mentioning it, but since it worked in the past, others might also step into that?! I don't know if that is just a PHP thing, but I guess those things only happen in PHP. Still like it though. ;-) Thanks again, Jens -----Ursprüngliche Nachricht----- Von: MS4W-Users <[email protected]> Im Auftrag von Jeff McKenna via MS4W-Users Gesendet: Freitag, 28. Januar 2022 19:56 An: [email protected] Cc: Jeff McKenna <[email protected]> Betreff: Re: [MS4W-Users] Missing functions/attributes in MapScript (PHP) ACHTUNG!! Diese E-Mail erreicht Sie von einem Absender außerhalb der GZH-Infrastruktur. Bitte klicken Sie auf keine Links oder öffnen Sie keine E-Mail-Anhänge, falls Sie den Absender nicht kennen und nicht wissen, ob der Inhalt sicher ist. Hi Jens, Thank-you for the complements. In the MS4W 5.0-beta2 announcement I mentioned that I had created a Migration Guide on the wiki, that I recommend that you take the time to go through in detail: https://ms4w.com/trac/wiki/MigrationGuide5.x There you will find a section on SWIG MapScript, that also includes 4 working PHP scripts for MS4W 5.0-beta2, with a note about changes to setting metadata using the new hashTableObj way. I also now added a working example for *getting* a metadata value (see the last 'echo' command below), such as: <?php //set metadata using the new 'metadata' hashTableObj keys and value directly $oWMSLayer->metadata->set("wms_name", "popplace"); $oWMSLayer->metadata->set("wms_title", "Cities"); $oWMSLayer->metadata->set("wms_srs", "EPSG:3978"); $oWMSLayer->metadata->set("wms_server_version", "1.1.1"); $oWMSLayer->metadata->set("wms_format", "image/png"); //get metadata using the new 'metadata' hashTableObj keys directly echo $oWMSLayer->metadata->get("wms_title"); ?> As always, I kindly ask you that you add to that wiki page, by adding your examples and notes so others can learn from your tips. (it's a wiki on purpose, to hopefully get everyone editing it and adding migration examples, as you modify your mapfiles for MS4W 5.0). I hope this brings you out of the 'darkness', ha, and that you have a nice, quiet weekend. Thank-you for using MS4W. "MS4W: open doors as well as windows" -jeff -- Jeff McKenna GatewayGeo: Developers of MS4W, MapServer Consulting and Training co-founder of FOSS4G http://gatewaygeo.com/ On 2022-01-28 6:48 a.m., Gramenz, Jens via MS4W-Users wrote: > Dear list and especially dear Jeff, > > thank you for creating and supporting MS4W. Although MS4W doesn't > completely fit our demand, it is marvelous how easy it is to set it > up. :) > > I wanted to have a look at the new Mapserver/PHP-Combo and tried to > make one of our projects work with it. After fixing some deprecations > here and there, I encountered some difficulties with MapScript I was > not able to circumvent. :( > > When switching to PHP7 I had to include the php_mapscript.dll and (I > guess that was the SWIG-Version then?!) a mapscript.php. > > Sven brought this up in a message in december. This time there is no > more mapscript.php and if I include the old one it raises an error, > that the classes are already there, which is plausible. But if I don't > it seems that there is something (i.e. some functions and attributes [e.g. > mapObject->numLayers]) missing. But in general MapScript is loaded and > does work. > > Since I wasn't sure if it is a problem with my software setup, I used > a plain version of MS4W (5beta2) on another machine to reproduce it. > Took about 5 Minutes to unzip and about 5 seconds to make it work... Wow! > > An example to reproduce my problem is to add the following lines to > quickmap.php at line 20 and comment the rest of the file. > > $layer = $oMap->getLayer(0); > > echo "Layer: ".$layer->name."<br>"; > > print_r(get_object_vars($layer->metadata)); > > echo $layer->metadata->wms_title."<br>"; > > $layer->getMetaData("wms_title"); > > Getting the layer and printing the name ("ocean") does work. The > metadata actually is a hashTableObj, but get_object_vars gives an > empty array. Directly accessing the attribute just returns NULL. > Calling > getMetaData() like we used to leads to the "Fatal error: Uncaught Error: > Call to undefined method layerObj::getMetaData()" although is it > mentioned in both the SWIG and PHP MapScript API. > > Don't know if these a bugs or features. =) Could it be that there have > been some changes in the code that are not yet documented? Maybe one > of you can bring some light into the darkness?! > > Kind regards, > > Jens > > > _______________________________________________ > MS4W-Users mailing list > [email protected] > https://lists.ms4w.com/mailman/listinfo/ms4w-users _______________________________________________ MS4W-Users mailing list [email protected] https://lists.ms4w.com/mailman/listinfo/ms4w-users _______________________________________________ MS4W-Users mailing list [email protected] https://lists.ms4w.com/mailman/listinfo/ms4w-users
