Skip to content

lordgnu/wxPHP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Site: https://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 (https://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 - https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11310
		
		or
		
		DVD ISO - https://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en
		
	Visual Studio 2008 Express Edition download links:
	
		https://www.microsoft.com/visualstudio/en-us/products/2008-editions/express
	
. Download and install wxWidgets Latest SVN 

	Checkout svn sources:
	
		svn checkout https://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:
		
			https://windows.php.net/download/ 
			
		Direct download link for 5.3.11:
		
			https://windows.php.net/downloads/releases/php-5.3.11-src.zip
			
	Create the directory:
		
		c:\php-sdk
	
	Download PHP 5 binary tools:
		
		https://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 https://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 https://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:
		
		https://wxformbuilder.org/
	
	Also You can find the latest nightly builds for windows with
	PHP support at:
	
		https://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:
	
	https://wxphp.org/
	https://wxphp.org/docs
	https://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

No packages published

Languages