WinBinder.org The native windows binding for php

Downloads

 


General questions

        What is WinBinder?
        Why should I use WinBinder?
        How much does it cost?
        Can I use WinBinder in my commercial application?
        Is it usable already?
        Is WinBinder object-oriented?
        Where can I find more information about WinBinder? Is there a function reference?

WinBinder and PHP

        What is PHP?
        Why PHP?
        Which versions of PHP are supported?
        Why don't you just dump PHP 4 in favor of PHP 5?
        Where can I find more information about PHP?
        Where can I get a PHP function reference?

WinBinder vs. PHP-GTK

        What are the similarities between WinBinder and PHP-GTK?
        But PHP-GTK is a stable product. Why shouldn't I use it instead?
        So what are the differences between WinBinder and PHP-GTK?

Windows questions

        Which versions of Windows are supported?
        Why doesn't it run under Windows 95 or Windows 3.1?
        Does WinBinder need any framework or runtime library to work with?
        Which control classes and Windows features are supported?
        Do I need a resource editor to design dialog boxes for WinBinder?
        Does it support Windows XP themes?

Installation issues

        How do I install it?
        I already have PHP installed in my computer and don't want to mess with it. Can I use WinBinder anyway?
        WinBinder claims to be very lightweight. How small is it, really?

Database questions

        Which databases are supported by WinBinder?
        How does WinBinder support databases?
        Which other methods of storing and retrieving data are supported?
        Is there a preferred database to use with WinBinder?

Compilation

        Which language is used to develop WinBinder?
        Which compiler is used to build it?

Extending WinBinder

        Is it possible to use WinBinder with other script languages besides PHP?
        Is it possible to use WinBinder with a compiled language? What about embedding it in a compiled program?
        O.k., but will you support extending WinBinder to other (script or compiled) languages?
        Is it possible to port WinBinder to OS X, Linux, or (your favorite OS here)?
        I would like to help. Is it possible to join this project?


General questions

What is WinBinder?
A. WinBinder is a new open source extension that allows PHP programmers to easily build native Windows applications.

Why should I use WinBinder?
A. WinBinder encapsulates a great deal of the complexity of the Windows API, so applications can be developed quickly and easily. Since PHP is a scripting language you are not required to compile anything, just code and run. Click here for a more detailed explanation.

How much does it cost?
A. Nothing. WinBinder is released as open source, meaning it is completely free for home or commercial use. Its source code is also freely available and is included in the distribution files.

Can I use WinBinder in my commercial application?
A. In a word, yes. There are very few restrictions to what you can do with it. The BSD-style license allows you to create freeware, shareware, commercial or open source applications.

Is it usable already?
A. Yes. Take a look at the examples page to see some screenshots of real applications. You may also download the demo to see a complete, standalone program built with WinBinder.

Is WinBinder object-oriented?
A. The WinBinder library itself is not object-oriented, but it has an OOi (object-oriented interface) written in PHP (version 5 only) that consists of a class library that encapsulates the WinBinder functions. This way the extension effectively supports both procedural and object-oriented programming models so you can choose which one is best for you and your application.

Where can I find more information about WinBinder? Is there a function reference?
A. There is an online version of the WinBinder manual with the function reference. You may also take a look at the winbinder-discussion mailing list archives and the winbinder forum..

WinBinder and PHP

What is PHP?
A. PHP is a remarkable scripting language that is extremely popular. It is used mainly for web development, but relatively recent enhancements have enhanced it to the point that it can be use as a general-purpose language for console and GUI applications as well.

Why PHP?
A. PHP is easy to learn and to use. If you have a background in C, C++, Java or JavaScript, you will be comfortable with PHP in no time. You can master PHP even if you are used to Visual Basic or ObjectPascal (Delphi) due to its logical an no-nonsense implementation. It has a great collection of useful extensions and provides excellent database support. It is fast and performs very well under Windows. It has a very large installed base of programmers and users and it is increasingly popular. Furthermore, it has a very liberal license that allows you to produce open, source, freeware or commercial applications.

Which versions of PHP are supported?
A. WinBinder runs equally well with versions starting from PHP 4.3 and PHP 5. It comes with libraries for both versions.

Why don't you just dump PHP 4 in favor of PHP 5?
A. Because of size. The PHP 5 runtime is roughly 2.5 times bigger than PHP 4. In compressed form the ratio is even greater (about 2.8), so PHP 4 is great for distributing standalone applications. If size is not a concern, you may prefer to use PHP 5 because it has a bunch of new functions (although most are not intended for CLI usage). If you are going to work with object-oriented code, however, you must definitely go with PHP 5 to take advantage of the OOi interface. Click here to learn more about the differences between PHP 4 and PHP 5.

Where can I find more information about PHP?
A. PHP is very popular, with hundreds of web sites dedicated to it, in many languages. The PHP web site is user-friendly and has plenty of useful information. A search engine like Google will help you find some very fine web sites that will help you get started.

Where can I get a PHP function reference?
A. The PHP documentation page has links to the PHP manual in many languages. You will probably want to browse its contents online or download the manual in the very convenient CHM (Windows HTML Help) or HTML format.

WinBinder vs. PHP-GTK

What are the similarities between WinBinder and PHP-GTK?
A. WinBinder is often compared with PHP-GTK because both can create GUI applications for Windows and they use PHP as their language of choice. Also, both isolate the programmer from the Windows API and both are open source.

But PHP-GTK is a stable product. Why shouldn't I use it instead?
A. PHP-GTK is a solid piece of work that has the big advantage of being multi-platform. You should definitely choose it if you need a stable framework for your project or if you need to port your programs to different platforms. the drawback is that PHP-GTK is complex. It has several hundred classes, methods, functions, enums, and structures. It also does not create truly native interfaces -- it does not need to. WinBinder, on the other hand, generates 100% native Windows applications and has a much simpler approach to programming. See this page for a more extensive discussion.

So what are the differences between WinBinder and PHP-GTK?
A. The table below summarizes the main differences between the two extensions.

Language / env.

PHP-GTK

WinBinder

Platforms

Linux, Unix, BeOS, OSX, Windows

Windows

Native

No

Yes

Programming models

Object-oriented

Procedural and object-oriented

Footprint

1.8-6.5 MB

130 kB

License

LGPL

BSD

Current status

Mature, stable

Under development

Windows questions

Which versions of Windows are supported?
A. WinBinder runs successfully on Windows 98 SE, Windows 2000, Windows XP Home Edition. It will most certainly run also under plain Windows 98, Windows Me, Windows XP Professional Edition, Windows NT Workstation 4.0 and Windows 2003 Server, but there are still no reports about these systems. Please contact me if you have tested it on any of these systems. WinBinder was also tested successfully under Wine and will probably run under any Windows emulator for Linux or OS X.

Why doesn't it run under Windows 95 or Windows 3.1?
A. The PHP Team ceased to support Windows 95 since version 4.3.0, which is the minimum version required to run WinBinder. Windows 3.1 is a 16-bit platform, while PHP and its extensions need a 32-bit system to run.

Does WinBinder need any framework or runtime library to work with?
A. No. It interfaces directly to the Windows API to ensure low footprint and good performance. Therefore it does not need MFC, .NET, WTL, Java or other such libraries.

Which control classes and Windows features are supported?
A. See this page for an updated list of classes and this one for a list of window types. For more information, look at the contents page of the online manual.

Do I need a resource editor to design dialog boxes for WinBinder?
A. WinBinder does not need compiled resources. It builds its windows, dialog boxes and controls on the fly. You can code your resources "by hand", which is a painstaking but perfectly valid process. In this case you will not need a resource editor. However, it is much easier to use a resource editor to generate one or more RC files. WinBinder will then parse these files and convert them to WinBinder commands. The only resource editor tested to date is WinAsm Studio by Antonis Kyprianou, but others can be easily supported as well.

Does it support Windows XP themes?
A. Yes. See this page for some screen shots.

Installation issues

How do I install it?
A. Just follow the step-by-step instructions in the Readme file that comes with your download. Here is a copy of it.

I already have PHP installed in my computer and don't want to mess with it. Can I use WinBinder anyway?
A. Yes. It does not harm to have more than one copy of PHP in the same computer, even from different versions. Also, WinBinder uses its own PHP.INI file.

WinBinder claims to be very lightweight. How small is it, really?
A. For an application, the additional footprint is around 130 kB, uncompressed. Compression will decrease the file size to around 50 kB. You will also need 1.4 MB for the PHP 4.3 libraries or 3.5 MB for PHP 5, plus any external PHP libraries that your application may require.

Database questions

Which databases are supported by WinBinder?
A. All databases supported by PHP are also supported by WinBinder. These include SQLite, MySQL, MS SQL Server, Oracle, Informix, PostgreSQL, and many others. ODBC and database abstraction layer functions are supported as well.

How does WinBinder support databases?
A. WinBinder can access databases directly through the many existing PHP database functions. WinBinder also comes with an optional layer written in PHP that greatly facilitates the exchange of data between WinBinder controls and SQL databases and is database-independent. This layer currently supports SQLite and MySQL. You may use whichever method most suits you.

Which other methods of storing and retrieving data are supported?
A. Any method supported by PHP is also compatible with WinBinder. These include XML, INI files, and CSV (comma-separated value) files. Also, the Windows Registry is directly supported.

Is there a preferred database to use with WinBinder?
A. MySQL would be an obvious choice because it is a the facto standard for PHP and it is already embedded in PHP 4. Since WinBinder is meant for standalone applications, however, SQLite will probably be your best option. SQLite supports only a subset of SQL commands, but it does not require a server or any other kind of installation, allowing the creation of standalone applications that can run immediately after setup. SQLite can interface directly with WinBinder through an optional wrapper. SQLite is already embedded in PHP 5 and requires a small DLL (230 kB) for PHP 4.

Compilation

Which language is used to develop WinBinder?
A. Like PHP itself, the WinBinder library is developed in ANSI C (not C++). PHP is also used extensively for additional libraries and testing.

Which compiler is used to build it?
A. In theory, any ANSI C compiler can be used to build WinBinder. LCC-Win32, by Jacob Navia, is the standard compiler. MS Visual Studio was already tested successfully. MinGW and Pelles C worked with variable degrees of success. Other target compilers include Dev-C++ and Digital Mars . Please contact me if you want to use a compiler other than LCC-Win32 so I can help you.

Extending WinBinder

Is it possible to use WinBinder with other script languages besides PHP?
A. Yes. The two-layer WinBinder architecture is designed so that it is possible to create bindings for other script languages. The hard work is already done by the API layer, so binding it to other languages should be relatively straightforward. The only language supported to date is PHP. If you are interested in binding WinBinder to another scripting language, please contact me so I can help you.

Is it possible to use WinBinder with a compiled language? What about embedding it in a compiled program?
A. The two-layer architecture used in WinBinder allows it to be embedded in an application or used as a standalone DLL, although nobody seems to have attempted this yet. In this case, the API layer would act as a simple framework to the Windows API. If you are interested in using WinBinder with a compiled language, please contact me so I can help you.

O.k., but will you support extending WinBinder to other (script or compiled) languages?
A. Certainly. This is one of the goals of this project. However I do not have plans to not support any attempts to make it run natively in other platforms (see the next question)

Is it possible to port WinBinder to OS X, Linux, or (your favorite OS here)?
A. In theory yes, because the WinBinder architecture allows this. However, the bulk of the code resides in the API layer, and replacing it is not trivial by any means. This seems to be an overly complex task which is not among the goals of this project.

I would like to help. Is it possible to join this project?
A. Yes, please :) Currently there is plenty of work to do in the C code, PHP examples, documentation, and other areas. You are very welcome to join the team. Please contact me if you think you can be of help.