-
Notifications
You must be signed in to change notification settings - Fork 0
PHP Bindings for wxWidgets
License
lordgnu/wxPHP
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Site: http://wxphp.org/ Table of Contents ------------------ * Introduction * Building on Windows * Building and Installing on Linux/Unix Environments * Running the examples * Third Party Tools * Development * Support Introduction ======================================================================== wxPHP is a binding of wxWidgets (http://wxwidgets.org/) with the purpose of bringing all the rapid application development tools available on PHP to assist on the development of applications as the crossplatform beauty of wxWidgets to create great Graphical User Interfaces. The syntax used is very similar to the one used on original implementation of wxWidgets C++, making it easier for people already familiar with the library. Building on Windows ======================================================================== . Requirements * Windows SDK 6.1 * Visual C++ 2010 Express Edition * wxWidgets 2.8.12 * PHP5 Sources * wxPHP source code * Read the README_MSW . Install Windows SDK 6.1 and Visual C++ 2008 Express Edition Windows SDK 6.1 download links: Web Setup - http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11310 or DVD ISO - http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en Visual Studio 2008 Express Edition download links: http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express . Download and install wxWidgets Latest SVN Checkout svn sources: svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets Open Windows SDK 6.1 CMD Shell: setenv /release /x86 /xp cd wxWidgets_Installation_Path cd build\msw nmake -f makefile.vc BUILD=release . Download and Install PHP sources NOTE: At time of writing compilation was tested against PHP 5.3.11 but it should work with almost any prior 5.3.x version Download PHP 5: To check available versions for download: http://windows.php.net/download/ Direct download link for 5.3.11: http://windows.php.net/downloads/releases/php-5.3.11-src.zip Create the directory: c:\php-sdk Download PHP 5 binary tools: http://windows.php.net/downloads/php-sdk/ Extract the binary tools inside the directory c:\php-sdk leaving you with: c:\php-sdk\bin c:\php-sdk\script Open the Windows SDK 6.1 CMD Shell and do the following: setenv /release /x86 /xp cd c:\php-sdk\ bin\phpsdk_setvars.bat bin\phpsdk_buildtree.bat php53dev Extract the php source files and place them on: c:\php-sdk\php53dev\vc9\x86\php5.3.x Then compile the sources to see if everything is working: cd c:\php-sdk\php53dev\vc9\x86\php5.3.x buildconf configure --disable-all --disable-zts --enable-cli nmake . Compile wxPHP Get wxPHP sources: svn co http://wxphp.svn.sourceforge.net/svnroot/wxphp/trunk wxphp Put the source code in the ext folder of your php build folder: c:\php-sdk\php53dev\vc9\x86\php5.3.x\ext\wxphp Make sure to read the README_MSW for some compilation and linking fixes Open the Windows SDK 6.1 CMD Shell and do the following: setenv /release /x86 /xp cd c:\php-sdk\ bin\phpsdk_setvars.bat cd c:\php-sdk\php53dev\vc9\x86\php5.3.x buildconf configure --disable-all --disable-zts --enable-cli --with-wxwidgets=C:\wxWidgets_installation_path,shared nmake Copy the resulting php_wxwidgets.dll file on the Release directory to the php extensions directory of your current PHP 5 VC9 X86 Non Thread Safety setup. If you want the wxWidget extension to be automatically loaded, add the following lines to the end of your php.ini: [PHP_WXWIDGETS] extension=php_wxWidgets.dll Building and Installing on Linux/Unix Environments ======================================================================== . Install C/C++ compilers and autoconf tools Ubuntu and Debian based distros: sudo apt-get install build-essential . Compile wxWidgets library and development packages, currently we have tested with latest svn revision 71250 distributed on wxwidgets.org Download wxWidgets tar file and uncompress it on your directory of choice or svn checkout with: svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets On the console change to the wxWidgets directory and: ./configure --prefix=/opt/wxWidgets-svn --enable-monolithic . Install php5 development packages Ubuntu 10.04 (and most debian based distros): apt-get install php5-dev . Configure and build the extension cd wxPHP phpize ./configure --with-wxwidgets=/opt/wxWidgets-svn make . Installing the extension After make a file named wxwidgets.so will be generated on the modules directory. You can reduce the file size by stripping debugging symbols by using the strip utility: strip modules/wxwidgets.so Copy the resulting wxwidgets.so file on the modules directory to the php extensions directory (you can make this file smaller by running strip on it). PHP extensions directory is usually found on /usr/lib/php5/ On ubuntu 10.04 - 11.10 this directory is /usr/lib/php5/20090626/ If you want the wxWidget extension to be automatically loaded, add the following lines to your php.ini: ; load php wxwidgets module extension=wxwidgets.so If not, then enable dynamic loading on your php.ini usually on: /etc/php5/cli/php.ini modify enable_dl = off to enable_dl = on Running the examples ======================================================================== In order to run the examples provided you need to install php cli version. On ubuntu this is done by running: sudo apt-get install php5-cli To run the examples change on your console to the examples directory and run the php interpreter on each file: php thread.php on windows you can also do php-win thread.php Third Party Tools ======================================================================== . wxFormBuilder - a RAD tool for wxWidgets GUI design. We worked on adding php support to this great forms designer. For more information visit the official website: http://wxformbuilder.org/ Also You can find the latest nightly builds for windows with PHP support at: http://sourceforge.net/projects/wxformbuilder/files/ Integration of PHP support wouldn't be possible without the help of RedTide and the rest of wxFormBuilder teams, Thanks a lot! Development ======================================================================== For those interested on helping improve this extension this section explains the basics of how it works. Almost every subdirectory contains a README file explaining its content so be sure to check them all ;) . Code is auto generated Almost all the wxPHP extension source code is generated by a set of php scripts except app.h, app.cpp, references.h and references.cpp. Even at a certain point config files are re-generated to include changes on the source files that need to be compiled. The PHP script that generates the source code uses as input the xml files produced by doxygen from the wxWidgets docs. This xml files are parsed by another tool and then converted into json files for easy mapping into php arrays using json_decode function. . XML Parser On the xml_parser directory you will find the script on charge of parsing the xml files and converting them to json files. This script uses the xml files on the xml_parser/xml directory as input. In order to regenerate this xml files with the most recent changes you would need a svn trunk copy of wxWidgets then inside of the wxWidgets directory: cd docs\doxygen ./regen.sh xml This will produce hundreds of xml files that constitute the wxWidgets documentation. You would need to copy all the files on out/xml to the xml directory where the wxPHP xml_parser script resides. After you run the xml_parser script with: php xml_parser/parser.php Some json files will be generated on the output dir, this files are classes.json, consts.json, global_variables.json, typedef.json class_groups.json, enums.json, includes.json, class_variables.json, functions.json NOTE: For some other details check the README file on the xml_parser directory. . Code Generator At the source_maker directory resides the php script in charge of all the C/C++ code generation (parser.php) that forms the wxPHP extension. As said before this script depends on the json files generated by the xml_parser so on the source_maker/dumps directory you will find a copy of all these files. The source maker will read the json files and create a set of headers and source files wrapping the wxWidgets classes defined on classes.json It starts by decoding all json files and cleaning methods with unsupported parameter types as other qualities not handled correctly by the generator. All the cleaning activity is logged on a file named discarded.log. Then it process each class using a semi-template system. The templates directory holds the source of what will form the skeleton of the wrapping code. After generating the classes binding code it generates binding code to the global wxWidgets functions and store them on functions.cpp. Then it populates the files on source_templates directory with all the code needed to initialize each binded class, function, global variable, etc... At the final stage, it uses the config_templates directory to retreive the configuration files skeleton and populate it with the list of files that need to be compiled. If you use the go.sh/bat utility script the process of copying the files to the root directory is done automatically, even the extension compilation and installation if build.sh script (linux only) at the root of wxPHP is used. NOTE: For more information about the code generator check the README file on source_maker directory. . Class/Methods Selector An GUI utility on source_maker/class_selector/selector.php was created using wxPHP itself in order to facilitate the selection of the class methods that are going to be binded. To use this utility you need to have a working wxPHP. This utility uses the file named full_classes_set.json that is actually a copy of the classes.json generated by the xml parser. When saving the selected methods it creates a file named classes.json that is the one actually used by the code generator. This file automatically replaces the one on dumps directory each time the go.sh/bat utility is ran to generate the code. NOTE: For more information about the utility check the README file on source_maker/class_selector directory. Support ======================================================================== Any problems, please refer to the official website: http://wxphp.org/ http://wxphp.org/docs http://forums.wxphp.org/ or visit the sourceforge.net project page at: https://sourceforge.net/projects/wxphp/
About
PHP Bindings for wxWidgets
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published