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

Reply via email to