Login   Register  
PHP Classes

Delphi for PHP 2007

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us

  Latest classes All reviews   Delphi for PHP 2007   Latest classes Latest reviews   Best sellers ranking Best sellers ranking  


Delphi for PHP 2007


Development tools


Borland, CodeGear

Release date

March 20, 2007

Sales ranking

Week: 57 All time: 4


April 3, 2007 55555 5
  Post a comment Post a comment   See comments See comments (7)   Find where to Buy Now Find where to Buy Now  
Picture of Manuel Lemos
Manuel Lemos
It was a pleasant surprise that I got when I received the news that Borland/CodeGear were launching an IDE product for PHP development. My surprise was not so much because of the product itself, but rather because of what this means to the PHP market and the PHP community.

We all know that PHP is undoubtedly the most popular language for Web development. But when I see reputed companies like Borland embracing the PHP market, following the steps of industry giants such as IBM and Microsoft, this means a lot for the present and the future of PHP adoption, especially in the corporate world.

But lets bring back the scope of this review to the product: Delphi for PHP. First I would like to clarify that I am not Delphi user, nor a desktop application developer, actually not even a Windows user. So I will try to do my best to put myself in shoes of a PHP developer that is looking for Rapid Application Development (RAD) tools that can run under Windows.

My first impression is that the scope of this application is huge. I am sure that this review will not do justice to the extension of the capabilities of this PHP IDE. So I will try to mention just what I think that most people looking for tools like this would like to know.

Despite the name Delphi for PHP, this is not exactly a new project. It is a PHP IDE based on qadram qstudio.

The user interface is pretty standard for this kind of IDE. There is the project manager view that exhibits the different components that are being designed by the application developer.

Applications may have units and forms, like in the regular Delphi or Visual Basic IDE for desktop applications. Units are actual PHP scripts. Forms represent an application perspective that can be viewed in Web pages. So forms are also PHP scripts. The difference is that forms have either a code view and a design view that shows a preview of what the page will display editable using drag and drop actions.

Besides the project manager view, there is also the data explorer view. Here you only see the available databases. You can register one or more database connections that you may need in your application. Currently, only MySQL and Firebird are supported.

The data explorer view provides interesting drag and drop features. If you drag a table name in the design view, it pastes a database grid component to present data from the selected table. Similarly, you can drag just a table field in the design view to paste a control to display or edit that field in the form. This is a rapid way to add data binding controls to a form.

Alternatively you can also drag and drop controls from the tool pallete. There are many types of controls available for drag an drop from the tool pallete into the form design view.

The tool pallete includes the common form controls, some AJAX enhanced controls, Web services invocation controls, and database access controls. Some of these controls do not really represent an entity that has a visible representation in the actual Web pages. However you can still drag these controls into the form view, so you can double click on them to configure their properties in the object inspector view.

One interesting detail about the database tables and fields mentioned above, is that when you drag them from the data explorer view to a form, the IDE automatically pastes the necessary data source controls from which the data is accessed to integrate with the database grid, labels and edit fields. This saves a lot of time that otherwise would be spent creating and configuring each of these data source controls.

Once you have added all the necessary controls to the form design view, you can test your application using the playback button in the IDE toolbar. By default the debugger is started in the test mode.

The IDE makes the current script page be opened in your browser. You can set breakpoints before running the current script page, and the IDE stops when the breakpoints are set, so you can inspect variables in the messages view at the bottom of the IDE window.

Debugging works as expected without any manual configuration of PHP, or the debugger extension and the Web server. Although this the minimum that you can expect from a commercial tool, this is still a noteworthy detail. The matter is that I have tried several other PHP IDE applications, and in some of them I was not able to make debugging work, or I still had to perform manual configuration.

Delphi for PHP comes with Apache 2.0.52, PHP 5.1.3 and the popular DBG debugger extension by Dmitri Dmitrienko. These components work well integrated for testing purposes. However, I could not find how to debug an application on a production server. The only detail that I could configure from the IDE is the port on which the Web server is running.

Once your project is ready to be deployed, you can use the deployment tool to copy all the project files to a given directory. Although this is useful as a first step, I think for most projects it would be better if it would also use FTP or SSH to install the files in a production server environment.

There is also another interesting tool for internationalizing applications. It helps users generating applications that can be easily translated to many idioms. The idea is to use gettext extension to get the application texts.

Delphi for PHP generates PHP 5 object oriented code. Although PHP 5 has not yet seen great adoption, PHP 5 code may be fine for new projects.

The generated code uses VCL, an Open Source Visual Component Library developed also by qadram. You can develop new components by extending base VCL classes.

One odd thing about VCL is its deeply nested class hierarchy. For instance, a simple combo box, also known as HTML form select input, is implemented by a class with no more, no less than 8 parent classes. Inheritance is a great characteristic of object oriented programming, but 8 parent classes is absurdly exaggerated.

In practice this means that not only you need to load more classes to use a simple form, but it also consumes a lot of memory and CPU just to load a simple object. I have not benchmarked a simple form, but I am afraid this may cause serious scalability problems to busy sites.

Another detail that many people want to know about is that VCL uses ADODb database abstraction layer and Smarty as template engine.

Unfortunately, the PHP community was never consensual when it comes to choosing a database abstraction package or a template engine. The choice of these packages was not a fault of qadram or Borland/CodeGear. It seems they picked what seemed more popular. But a lot of people will be displeased by these choices. It is impossible to please Greeks and Trojans. Maybe new adapters can be developed to replace these package choices by others that some users may prefer.

For a first version of this PHP IDE, I think Borland/CodeGear did very well, but there is plenty of room for improvement.

If you have been a big fan of Delphi for Windows desktop applications, you will certainly love Delphi for PHP.

Even if you dislike the choices that were made when it comes to the generated code or then library packages, Delphi for PHP may still be very useful for developers than need to quickly create a prototype of a PHP application and show how it looks to potential or current customers.
  Post a comment Post a comment   See comments See comments (7)   Find where to Buy Now Find where to Buy Now  


4. Disappointed - Beier, Uwe (2007-05-30 17:27)
Delphi for PHP disappointed me... - 0 replies
Read the whole comment and replies

3. Some points - Jose Leon Serna (2007-04-10 15:25)
Just some points to add to the review... - 2 replies
Read the whole comment and replies

2. Pros and Cons - Clive Wickham (2007-04-04 19:02)
First thoughts regarding Delphi for PHP... - 1 reply
Read the whole comment and replies

1. Delphi for PHP 2007 - Mark (2007-04-04 17:32)
Timely and helpful review... - 0 replies
Read the whole comment and replies

Post a comment

May 9, 2007 55555 5
  Post a comment Post a comment   See comments See comments   Find where to Buy Now Find where to Buy Now  
Picture of Sabine Rothe
Sabine Rothe
Übersetzung des Blog-Postings von Manuel Lemos, Administrator von PHP Classes

Ich war sehr positiv überrascht, als ich erfuhr, dass Borland/CodeGear ein IDE-Produkt für die PHP-Entwicklung herausbringt. Dabei bezog sich meine Überraschung nicht so sehr auf das Produkt selbst, vielmehr dachte ich mit Freude an die Bedeutung für den PHP-Markt und die PHP-Gemeinde.

Wir alle wissen, dass PHP ohne Zweifel die populärste Sprache in der Web-Entwicklung ist. Aber wenn sich bekannte Firmen wie Borland (Anmerkung des Übersetzers: CodeGear) auf den Spuren von Industriegiganten wie IBM und Microsoft des PHP-Marktes annehmen, dann hat das eine große Bedeutung für die Gegenwart und die Zukunft des PHP-Einsatzes vor allem in der Unternehmenswelt.

Aber lassen Sie uns wieder zu dem Produkt selbst zurückkehren: Delphi for PHP. Zunächst möchte ich klarstellen, dass ich weder Delphi-Benutzer noch Entwickler von Desktop-Anwendungen bin, zurzeit noch nicht einmal Windows-Anwender. So werde ich jetzt mein Bestes geben, um mich in die Lage eines PHP-Entwicklers zu versetzen, mit einem Werkzeug für Rapid Application Development (RAD) für Windows arbeiten möchte.

Mein erster Eindruck ist, dass die Entwicklungsumgebung sehr umfangreich ist und ich bin sicher, dass dieser Bericht der Fülle an Fähigkeiten dieser PHP IDE nicht gerecht werden kann. So werde ich versuchen, das herauszustellen, was meiner Meinung nach die meisten Leute, sich für RAD für Windows interessieren, wissen möchten.

Trotz des Namens Delphi for PHP handelt es sich nicht wirklich um ein neues Projekt. Es handelt sich um eine PHP IDE basierend auf qadram qstudio.

Die Oberfläche ist guter Standard für diese Art IDE. Es gibt einen Projektmanager, der die verschiedenen Elemente darstellt, die vom Anwendungsentwickler gestaltet werden.

Wie in den gängigen IDEs für Desktop-Anwendungen, wie Delphi oder Visual Basic, können Projekte aus Units und Formularen bestehen. Die Units sind hier PHP-Skripte und die Formulare repräsentieren eine Anwendungsansicht, die als Webseiten betrachtet werden kann. Letztendlich handelt es sich bei den Formularen auch um PHP-Skripte. Der Unterschied zu den Units besteht darin, dass Formulare sowohl eine Code-Ansicht als auch eine Design-Ansicht haben. Die Design-Ansicht zeigt ein Preview, in dem die Webseite über Drag-and-Drop-Aktionen angepasst werden kann.

Neben dem Projektmanager enthält die IDE auch einen Data Explorer. Hier sehen Sie die zur Verfügung stehenden Datenbanken. Sie können eine oder mehrere Datenbankverbindungen registrieren, je nachdem was Sie in Ihrer Anwendung benötigen. Aktuell werden MySQL und Firebird unterstützt.

Die Data Explorer Ansicht bietet interessante Drag-and-Drop Funktionen. Wenn Sie einen Tabellennamen in die Design-Ansicht ziehen, so wird eine Datenbankgitterkomponente eingefügt, die die Daten der ausgewählten Tabelle darstellt. Ebenso können Sie einfach ein Tabellenfeld auf die Design-Ansicht ziehen, um ein Steuerelement einzufügen, das dieses Feld auf dem Formular anzeigt oder editierbar macht. So können Sie auf schnelle Weise datengebundene Steuerelemente in ein Formular einbinden.

Alternativ haben Sie die Möglichkeit, Steuerelemente von der Werkzeugpalette zu ziehen und auf Ihrem Formular zu platzieren. In der Werkzeugpalette stehen Ihnen eine Menge unterschiedlicher Typen von Steuerelementen zur Verfügung, die Sie per Drag-and-Drop auf Ihren Formulardesigner holen können.

Die Werkzeugpalette enthält allgemeine Formularsteuerelemente, einige erweiterte AJAX-Steuerelemente, Steuerelemente für den Aufruf von Web Services und für den Datenbankzugriff. Einige dieser Steuerelemente sind Funktionseinheiten, die keine sichtbare Repräsentation auf den aktuellen Web Seiten haben. Dennoch können Sie diese Elemente auf Ihre Formularansicht ziehen und dann per Doppelklick im Objektinspektor ihre Eigenschaften anpassen.

Hinsichtlich der Datenbanktabellen und Felder, die ich oben erwähnte, gibt es noch ein sehr interessantes Detail: Wenn Sie eine solche Komponente aus der Data Explorer Ansicht auf das Formular ziehen, fügt die IDE automatisch die notwendigen Data Source Steuerelemente ein, die den Datenbankgrids, Labels und Editierfeldern die Daten zur Verfügung stellen. Dies spart eine Menge Zeit, die andernfalls für die Erstellung und die Konfiguration eines jeden Data Source Elementes aufgewendet werden müßte.

Nachdem Sie alle erforderlichen Steuerelemente in das Formular eingefügt haben, können Sie Ihre Anwendung testen, indem Sie den Playback-Button in der IDE-Toolbar anklicken. Standardmäßig wird dann der Debugger im Testmodus gestartet.

Die IDE sorgt dafür, dass die aktuelle Skriptseite in Ihrem Browser geöffnet wird. Bevor Sie die Skriptseite starten, können Sie Breakpoints setzen. Dann stopt die IDE die Ausführung an den Breakpoints, so dass Sie Variablen im Meldungsfenster unten im IDE-Fenster kontrollieren können.

Der Debugger arbeitet - wie erwartet - ohne irgendeine manuelle Konfiguration von PHP oder der Debugger Erweiterung und des Web Servers. Obwohl dies eigentlich das Minimum dessen ist, was Sie von einem kommerziellen Tool erwarten können, ist es nach wie vor eine beachtenswertes Detail. Ich habe einige andere PHP IDE Anwendungen getestet und bei einigen von ihnen war es mir nicht möglich, ein Debugging zu aktivieren und ich musste noch manuelle Konfigurationen vornehmen.

Delphi for PHP wird ausgeliefert mit Apache 2.0.52, PHP 5.1.3 und der gängigen DBG Debugger Erweiterung von Dmitri Dmitrienko. Diese Komponenten arbeiten gut zu Testzwecken zusammen. Dennoch konnte ich nicht herausfinden, wie ich eine Applikation auf einem Produktionsserver debuggen kann. Das einzige, was ich in der IDE einstellen konnte, war der Port, auf dem der Webserver läuft.

Wenn Ihr Projekt fertig ist, können Sie Ihre Projektdateien mit Hilfe des mitgelieferten Deployment Tools in ein vorgegebenes Verzeichnis kopieren. Obwohl dies ein nützlicher Anfang ist, bin ich der Meinung, dass es für die meisten Projekte vorteilhafter wäre, wenn auch FTP oder SSH eingesetzt werden könnten, um die Dateien in der Produktionsserverumgebung zu installieren.

Ein weiteres interessantes Tool sorgt für die Internationalisierung von Anwendungen. Es unterstützt Entwickler bei Erstellung von Applikationen, die auf einfache Weise in viele Sprachen übersetzt werden können. Die grundlegende Idee ist eine "gettext"-Erweiterung, um die Anwendungstexte zu extrahieren.

Delphi for PHP erzeugt objektorientierten PHP 5 Code. Obwohl PHP 5 noch nicht sehr häufig eingesetzt wird, mag sich PHP 5 Code für neue Projekt gut eignen.

Der erzeugte Code nutzt VCL, eine Open Source Visual Component Library, die von qadram entwickelt wurde. Durch Erweiterung der VCL-Basisklassen, können Sie neue Komponenten erstellen.

Merkwürdig an der VCL ist ihre tief verschachtelte Klassenhierarchie. Zum Beispiel wurde die Combo Box, auch bekannt als HTML Auswahlliste, durch eine Klasse mit nicht mehr oder weniger als acht Elternklassen implementiert. Vererbung ist eine bedeutende Eigenschaft Objektorientierter Programmierung, aber acht Elternklassen sind aus meiner Sicht unsinnig übertrieben.

Für die Praxis bedeutet das, dass Sie nicht nur mehr Klassen laden müssen, um ein einfaches Formular zu nutzen, sondern es kostet auch eine Menge Speicher und CPU, um ein einfaches Objekt zu laden. Ich habe noch kein einfaches Formular einem Benchmark-Test unterzogen, aber ich befürchte, dies könnte ernste Probleme auf belebten Seiten verursachen.

Eine weiterer für viele Leute interessanter Umstand ist, dass die VCL ADODb Datenbankabstraktionslayer und Smarty als Template Engine nutzt.

Leider war sich die PHP-Gemeinde bisher nie einig, wenn es um die Wahl eines Pakets zur Datenbankabstraktion oder um eine Template Engine geht. Die Wahl dieser Pakete war nicht der Fehler von qadram oder Borland/CodeGear. Sie haben wohl einfach das ausgewählt, was am beliebtesten schien. Aber eine Menge Leute werden mit dieser Wahl unzufrieden sein. Es ist eben unmöglich, sowohl Griechen aus auch Trojaner zufrieden zu stellen. Vielleicht können neue Adapter entwickelt werden, die es ermöglichen, die Auswahl an Paketen variabel zu gestalten.

Für die erste Version dieser PHP IDE, denke ich, hat Borland/CodeGear viel geleistet, aber es bleibt auch noch viel Raum für Verbesserungen.

Wenn Sie ein großer Fan von Delphi für Windows Desktop-Anwendungen sind, werden Sie Delphi for PHP sicherlich lieben.

Auch wenn Sie die Auswahl, die getroffen wurde bezüglich des generierten Codes oder der Bibliothekspakete nicht mögen sollten, so ist Delphi for PHP dennoch sehr nützlich für Entwickler, die schnell einen Prototypen einer PHP-Anwendung erstellen und diesen potentiellen oder aktuellen Kunden zeigen müssen.

German translation of the Delphi for PHP review by Manuel Lemos submitted by Sabine Rothe, Partnermanager at CodeGear from Borland.
  Post a comment Post a comment   See comments See comments   Find where to Buy Now Find where to Buy Now  


No comments were submitted yet.

Post a comment

May 16, 2007 55555 5
  Post a comment Post a comment   See comments See comments   Find where to Buy Now Find where to Buy Now  
Picture of Vicente do Carmo Martins
Vicente do Carmo Martins
Tive uma surpresa prazerosa quando recebi as notícias de que a Borland/CodeGear estava lançando uma IDE para desenvolvimento em PHP. Minha surpresa não foi apenas pelo produto em sim, mas mais pelo que isto significa para o mercado e a comunidade PHP.

Todos nós sabemos que o PHP é sem dúvidas uma das mais populares linguagens para desenvolvimento web. Mas ao ver companhias de reputação como a Borland entrando no mercado do PHP, seguindo os passos de gigantes da indústria como a IBM e a Microsoft, isto significa muito para o presente o futuro da adoção do PHP, especialmente no mundo corporativo.

Mas vamos voltar ao escopo deste review ao produto em questão: Delhpi for PHP. Primeiramente gostaria de esclarecer que não sou um usuário do Delphi, nem um desenvolvedor de aplicações desktop, atualmente nem um usuário de Windows. Mas tentarei fazer meu melhor para me colocar no lugar de um programador PHP que está procurando por uma ferramenta RAD que rode sob Windows.

Minha primeira impressão é que o escopo desta aplicação é enorme. Estou certo de que este review não fará a justiça à extensão das potencialidades desta IDE para PHP. Assim tentarei mencionar apenas o que eu penso que a maioria das pessoas procuram ferramentas como esta gostariam de saber.

A despeito do nome Delphi for PHP, este não é exatamente um projeto novo. É uma IDE para PHP baseada no qadram qstudio.

A interface do usuário é bastante padrão para este tipo de IDE. Existe uma caixa chamada Project Manager que exibe os diferentes componentes que estão sendo desenvolvidos pelo programador.

Aplicações podem ter units e formulários, como as aplicações desktop tradicionais em Delphi e Visual Basic. As units são aqui os scripts PHP. Os formulários representam a perspectiva da aplicação que poderá ser vista nas páginas web. Assim, formulários são também scripts PHP. A diferença é que formulários possuem visualização de código e visualização de design que mostra uma prévia de como a página será exibida e pode ser editada arrastando e soltando itens.

Além da caixa Project Manager há também uma caixa chamada Data Explorer. Nela você pode consultar os bancos de dados disponíveis. É possível registrar um ou mais conexões que você pode precisar na sua aplicação. Atualmente, apenas MySQL e Interbase/Firebird são suportados.

O Data Explorer provê um interessante recurso de arrastar e soltar. Se você clicar no nome de uma tabela e arrastar para o modo de design será colado um componente grid para exibir os dados da tabela. De forma similar, você pode arrastar um campo para colar um controle para exibição ou edição no formulário. Esta é uma forma rápida de adicionar controles de dados no formulário.

Você também pode arrastar e soltar controles da paleta de componentes. Há muitos tipos de controles disponíveis para arrastar e soltar no formulário no modo de design.

A paleta de componentes inclui os controles comuns de formulário, alguns controles melhorados com AJAX, controles para invocar Web Services e controles para acessar bancos de dados. Alguns desses controles não representam realmente uma entidade visivel nas páginas geradas. De qualquer forma você pode arrastar estes controles para o formulário, dar um duplo clique sobre eles e configurar suas propriedades na caixa object inspector.

Um detalhe interessante sobre as tabelas e campos de bancos de dados mencionados acima é que quando você arrasta um deles do data explorer para o formulário, a IDE automaticamente cola os controles necessários para acessar os dados e integrá-los ao grid, rótulos e campos de edição. Isto economiza um bom tempo que de outra forma seria gasto para criar e configurar cada um destes controles.

Assim que você tiver adicionado todos os controles necessários no modo de design, você pode testar a sua aplicação clicando no botão play na barra de ferramentas da IDE. Por padrão o debugger é iniciado em modo de teste.

A IDE fará que a página atual seja aberta no browser. Você pode setar breakpoints antes de rodar a página, e a IDE irá parar nos pontos marcados de tal forma que você poderá verificar as variáveis na caixa messages na parte inferior da janela da IDE.

O modo de debug funciona como esperado sem ser necessário qualquer configuração manual do PHP, ou da extensão de debug ou do web server. Embora isto seja o mínimo que se pode esperar de uma ferramenta comercial, ainda assim é um detalhe notável. O fato é que testei diversas outras IDEs para PHP e em algumas não consegui fazer funcionar o modo de debug, ou tive de fazer configurações manuais.

O Delphi for PHP vem com o Apache 2.0.52, PHP 5.1.3 e a popular extensão de debug DBG desenvolvida por Dmitri Dmitrienko. Estes componentes trabalham bem integrados para testes. No entando, eu não poderia debugar uma aplicação num servidor de produção. O único detalhe que pode ser configurado a partir da IDE é a porta em que o web server vai rodar.

Quando seu projeto estiver pronto para o deploy, você poderá usar a ferramenta de deploy para copiar todos os arquivos do projeto para um determinado diretório. Embora seja útil inicialmente, creio que para a maioria dos projetos ainda será melhor usar um FTP ou SSH para subir os arquivos para o servidor de produção.

Ainda há outra ferramenta interessante para "internacionalizar" as aplicações. Isto irá ajudar os usuários a gerar aplicações que poderão ser facilmente traduzidas para muitos idiomas. A idéia é usar a extensão gettext para capturar os textos da aplicação.

O Delphi for PHP gera código PHP 5 orientado a objetos. Embora o PHP 5 ainda não tenha tido uma grande adoção o código PHP 5 pode cair bem para novos projetos.

O código gerado utiliza a VCL, uma biblioteca de componentes visuais de código fonte aberto também desenvolvida pela qadram. Você pode desenvolver componentes a partir das classes base da VCL.

Algo ímpar na VCL é sua hierarquia de classes profundamente aninhada. Por exemplo, um simples combo box, também conhecido em HTML como input select, é implementado por uma classe com nada mais, nada menos que 8 classes ancestrais. Herança é uma grande característica da programação orientada a objetos, mas 8 classes ancestrais é absurdamente exagerado.

Na prática isto significa que não apenas você terá de carregar mais classes para usar um simples formulário, como também irá consumir muito mais memória para carregar um simples objeto. Eu não fiz testes de performance em formulários simples, mas me preocupa que isto cause sérios problemas de escalabilidade a sites com muitas visitas.

Outro detalhe que muitas pessoas querem saber é que a VCL usa ADODb como camada de abstração de dados e Smarty como engine para templates.

Infelizmente, a comunidade PHP nunca chegou a um consenso na escolha de uma camada de abstração de dados ou de um engine para templates. A escolha destes pacotes não é uma falha da qadram ou da Borland/CodeGear. Aparentemente eles escolheram os que pareciam mais populares. Mas muitas pessoas ficaram desgostas com estas escolhas. É impossível agradar gregos e troianos. Talvez novos adaptadores possam ser desenvolvidos para substituir estes pelos da preferência do desenvolvedor.

Para a primeira versão desta IDE para PHP, eu creio que a Borland/CodeGear foram muito bem, mas há muito o que melhorar.

Se você é um grande fã de Delphi para desenvolvimento de aplicações desktop, certamente irá adorar o Delphi for PHP.

E mesmo que você não goste da adição de código gerado ou pacotes de bibliotecas, o Delphi for PHP pode ainda assim ser muito útil para criar rapidamente protótipos de uma aplicação PHP e mostrar como ela deve parecer para potenciais ou atuais clientes.

Portuguese (Brazil) translation of the Delphi for PHP review by Manuel Lemos submitted by Vicente Martins.
  Post a comment Post a comment   See comments See comments   Find where to Buy Now Find where to Buy Now  


No comments were submitted yet.

Post a comment


2. CodeGear | Delphi for PHP - promising IDE for PHP development (2007-04-14 00:38)
I've just discovered the product Delphi for PHP and it looks very promising...

1. PHPClasses.org: Review - Delphi for PHP 2.0 (2008-07-23 12:16)
The PHPClasses.org website has posted a new review of CodeGear’s latest version of Delphi for PHP...