Skip to content
This repository

HHVM is an open-source virtual machine designed for executing programs written in Hack and PHP. HHVM uses a just-in-time (JIT) compilation approach to achieve superior performance while maintaining the flexibility that PHP developers are accustomed to.

fix soap encoding on non-nillable empty properties

Summary: Issue 1: When having an existing SOAP class property that is not
initialized (private $prop), PHP encodes it into an empty element: even
if the WSDL does not set the "nillable" flag for the element. We must
check if the property exists, not just if the returned property isNull.
The following php-src file should make that clear:
https://github.com/php/php-src/blob/PHP-5.6/ext/soap/php_encoding.c#L1697

Issue 2: HHVM simply checks for an incorrect object type: String instead
of Object (and then grabbing its class name). Very obvious:
https://github.com/php/php-src/blob/PHP-5.6/ext/soap/php_encoding.c#L464

Not sure how to create a proper test for this:
- the majority of bad zend tests are currently being skipped
- all good zend tests pass
- HHVM itself only provides 3 tests that focus on SoapServer instead.
- I'd have to find a way to reduce my current setup (3rd-party SOAP
  server, abstracted client) into a small example.

Hopefully you can forgive the lack of a test this time, the 2 php-src
links above should convince you.
Closes #2505

Reviewed By: @fredemmott

Differential Revision: D1288053
latest commit 991e92dc79
Daniel Sloof danslo authored April 21, 2014 sgolemon committed April 21, 2014
Octocat-spinner-32 CMake Remove legacy webserver from non-X64 Linux April 21, 2014
Octocat-spinner-32 hphp fix soap encoding on non-nillable empty properties April 21, 2014
Octocat-spinner-32 third-party @ 828df00 Update third-party to fix MacOSX April 21, 2014
Octocat-spinner-32 .gitignore Sync TLD files April 18, 2014
Octocat-spinner-32 .gitmodules remove old submodules directory April 12, 2014
Octocat-spinner-32 .travis.yml Sync TLD files April 18, 2014
Octocat-spinner-32 CMakeLists.txt use a direct checkout of third-party April 18, 2014
Octocat-spinner-32 CONTRIBUTING.md Use the new pretty cla form March 31, 2014
Octocat-spinner-32 LICENSE.PHP Removed a bit of trailing whitespace February 13, 2014
Octocat-spinner-32 LICENSE.ZEND Removed a bit of trailing whitespace February 13, 2014
Octocat-spinner-32 README.md better cla page April 07, 2014
Octocat-spinner-32 configure Fixed typos December 09, 2013
Octocat-spinner-32 configure_generic.sh submodule update must be recursive April 21, 2014
README.md

HHVM Build Status

HHVM (aka the HipHop Virtual Machine) is an open-source virtual machine designed for executing programs written in Hack and PHP. HHVM uses a just-in-time compilation approach to achieve superior performance while maintaining the flexibility that PHP developers are accustomed to. To date, HHVM (and its predecessor HPHPc before it) has realized over a 9x increase in web request throughput and over a 5x reduction in memory consumption for Facebook compared with the PHP 5.2 engine + APC.

HHVM should be used together with a FastCGI-based webserver like nginx or apache.

FAQ

Our FAQ has answers to many common questions about HHVM, from general questions to questions geared towards those that want to use or contribute to HHVM.

Installing

You can install a prebuilt package or compile from source.

Running

You can run standalone programs just by passing them to hhvm: hhvm my_script.php.

If you want to host a website:

  • Install your favorite webserver
  • Install our package
  • Start your webserver
  • Run sudo /etc/init.d/hhvm start
  • Visit your site at http://.../index.php

Contributing

We'd love to have your help in making HHVM better.

Before changes can be accepted a Contributor License Agreement (pdf - print, sign, scan, link) must be signed.

If you run into problems, please open an issue, or better yet, fork us and send a pull request. Join us on #hhvm on freenode.

If you want to help but don't know where to start, try fixing some of the PHP5 tests that don't pass. You can run them with hphp/test/run. When they work, move them to zend/good and send a pull request.

All the open issues tagged php5 incompatibility are real issues reported by the community in existing PHP code and frameworks that could use some attention. Please add appropriate test cases as you make changes; see here for more information. Travis-CI is integrated with this GitHub project and will provide test results automatically on all pulls.

License

HHVM is licensed under the PHP and Zend licenses except as otherwise noted.

Reporting Crashes

See Reporting Crashes for helpful tips on how to report crashes in an actionable manner.

Something went wrong with that request. Please try again.