Is Delphi for PHP better than Delphi 1.0?

Eric Wilms of WilmSoft.com left a comment on an ealier post.  My reply was way to long for a comment, so I’ve turned it into a post.  Then I can get other people’s feedback.  I’ve found people rarely ever read the comments here since most of my posts show in full on the front page…

Let’s catch you up on the story so far…

Eric wrote:

I’ve got the first release of Delphi 4 PHP… I have to say I’m VERY disapointed… I’m a Delphi code since Delphi 1 and PHP programer since 1998 and the thought of a Delphi for PHP was a dream come true. However, I can’t not get it to run any “app” on my Hosted server. The code runs fine on my local machine but, that’s not where my web sites are hosted. I HAD to upgrade to PHP 5.X.X.X in order to even get anywhere on a simple Hello World. I have no issue with that execpt it’s not really mentioned anywhere in the specs… Also, I was completely dumbfounded to find that there was NO FTP built in to Delphi 4 PHP… Come on guyes! You have to “delploy” you project (which puts all the files you’ll need together in one spot then open up your favorite FTP program and copy them to where you want it…. So, that means a simple change is not a click of a button away to update… you have to click deploy and about four “next” buttons to have it “deploy” THEN open your FTP and copy the files to the server…. That is a Joke.

Just calling it Delphi and hoping it will change the way things are done (Like Delphi ONE did) will not change the way things are done. I’m back to hand coding in my Favorite PHP editor. At least when I hit save, it saves it via FTP back to the server it came from….

I wish I could get my money back… :(

To which I said: 

Well, I do understand where you are coming from.

But I can’t say that either of those two things were not issues for me. I usually use PHP 4, but php 5 was always there for me to enable with a simple .htaccess change. Your past that anyway.

As for the FTP setup, I agree that would be nice too, but I don’t need it either as I use the old Novell add on util NetDrive ( abandonware publicly distributed for free to students) to make my debian webserver’s root drive X: on all of my machines, even my laptop. There are a bazillion instruction pages at colleges and elsewhere explaining how to use it, but I really don’t think you need it. Here’s one set http://www.loyola.edu/5555/netdrive/installingnetdrive/

I know lots of people use similar solutions so that their FTP account is just a drive letter on their windows sever.   Maybe it will help the transition for you… The public goal for Delphi for PHP v1.0 was always a Delphi 1 level of ability. It’s surpassed Delphi 1 in MANY, MANY ways, but I can’t deny there are some rough spots that require attention.

And Eric wrote back (OK this is the last quote):

I’m curious (and a die hard Borland….er ahem… Code Gear fan) what do you see as: “It’s surpassed Delphi 1 in MANY, MANY ways, ”

Because for me and Delphi one (coming from VB) was I Dropped down a button, a label and pressed F9. Bam! done… And every thing from “hello world” to middle-ware client server app doing OLE (or what ever) was just as hard (or simple).

I Dropped down a Calendar in D4PHP, do the deploy, copy the files to my server and I get: “Warning: require_once(vcl/jscalendar/calendar.php) [function.require-once]: failed to open stream: No such file or directory in /home/wilmsoft/public_html/delphi/vcl/vcl.inc.php on line 127″

Is that a rough spot? Do I really have to dig in to the source code to figure out what’s missing the vcl.inc.php file?

I hear what your saying about the FTP and figured that would be the general response. But, I’m a contract programmer. I never am “on the server”. I almost always am on someones remote server where I don’t have access to a simple .ini file. I can’t use this tool and make money as it is today. I made money DAY ONE with Delphi One. No telling the customer oh, I’m glad you hired me to fix such and such but, I need you to now use change your infrastructure so my tools work.

I thought (or hoped) that the code gear spin off would start to focus (again) on the little guy writing code not the corporations… and I do see that trend and felt like I need to preorder D4PHP. But, Code Gear bought Delphi 4 php and I think it’s going to take a few releases to get it where they want it. Version one is not there yet. I wish I would have waited for the demo before I put down my money….

And this may not be the place for this conversation but, I couldn’t find any place on Code Gear’s site to vent. I am interested in other peoples view on this potentially awesome product.

So there we are.  This is my reply… 

Well, first off, “How does Delphi for PHP surpass the Delphi 1.0 feature set?”  I’m not going to be able to give you a exhaustive list in without giving it more serious thought, but I can rattle off a quick ten ways Delphi for PHP is improved over Delphi 1.0:

  1. Code completion springs instantly to mind.  Delphi for PHP’s use of code completion is hindered compared to current Delphi versions because PHP is not a strongly typed language.  But, there was nothing to compare to it in Delphi 1 AFAIR.
  2. Datamodules are another addition.  They were introduced in d3, I believe, and take the clutter off of your design forms and allow you to share the database structure across various forms.
  3. If you deployed BDE apps in D1, you should remember that the end user had , until the setup programs caught up. That’s handled for you, though here too there are technical difficulties on the D4PHP side.  So perhaps this one is  a wash…
  4. The Code explorer didn’t exist in Delphi 1.  You couldn’t easily go between unit and unit.  As far as that goes I don’t think Ctrl-Enter worked to open the unit from the uses list either.
  5. Project Groups have been added allowing you to have several projects on a single website.
  6. There are numerous more advanced controls in the tool pallette AND a way for the community to have input and an affect on the behavior of these controls.
  7. The applications you produce are themed, that certainly wasn’t the case in Delphi 1.  Delphi 1 apps didn’t even minimize in quite the same fashion as other Windows Apps.  Because of TApplication IIRC, your main form wasn’t REALLY your main form and you had this double minimize thing going on.
  8. The Data Explorer and all of its numerous features certainly didn’t exist.
  9. Internationalization (I18N) was in its infancy in Delphi 1 days.
  10. Pinning, expansion and restoring of the debug & development “windows” in the IDE allow you to have a much more dynamic IDE than was ever possible in D1.

I’m sure there are plenty of other things to add and the list can be debated, but if you install Delphi 1 again, you might be surprised at the feel of it compared to what we have in today’s delphi.  I was when I did just that last year.

Now I do agree that saying that Delphi for PHP had “Rough Spots” might be a bit rosey.  I also agree that Delphi for PHP could have baked for another month in the oven.  If it would leave a better taste in everyone’s mouth after the first bite.  But if you have more than a day to look at this stuff, you find that there really is some worth here, but it is a paradigm shift that takes some getting used to.   Somethings work really well and somethings… not so much.  D1 was not much different if you got in early enough.  The whole concept of design time libaries and run time libraries and deploying artificially thin EXEs had everyone pulling their hair out for a while. 

With Delphi for PHP, there’s another hurtle to over come.  You are switching from a Native API design environment, into a designer that IS a webrowser and javascript interpreter.  In order to have live components, the designer now has to execute all of that web code.  So there is a significant speed cost to that.  The equivelent would be writing a Delphi app that would use a TWebBrowser component to load rich web pages again and again and again. 

I’m not sure I understand the logic of the one day trial idea in this sitation.  Nothing makes people crankier than a ticking clock, working with something never seen before, things not working right, and a significant money decision on the line.  I’m not sure combining all of those issues into one program was the key to success when taking API developers and putting them in a web environment for the first time.  But…that’s the situation.

There are definately things that you can do to make your situation better.  First, I totally agree with you about the calendar thing. I logged an issue for it here:
Report No: 43501            Status: Reported
js Calendar does not deploy with the deployment wizard
<a href=”http://qc.codegear.com/wc/qcmain.aspx?d=43501″>http://qc.codegear.com/wc/qcmain.aspx?d=43501</a>
ALL of the javascripts should deploy with the rest of the application.

Now that said, there is no reason that you can’t have the full VCL directory already deployed on your site and in that directory. 

I’ve actually taken that one step further.  I have ONE copy of the VCL for PHP for all of my websites.  I hung it off of my web root.  I allow my Delphi for PHP apps to access it by creating symbolic links in the directory containing the Delphi for PHP files.  Just put the VCL up there in your root (or wherever) and then telnet/ssh into your account, change to a different directory and then run these two lines:

ln -s ~/vcl
ln -s ~/vcl vcl-bin

The vcl-bin path is required for images used in the components.  There are other ways you could do this too.  You could just link the vcl-bin for example and then have a custom PHP.INI file in your directory that adds the vcl to your include path.  This solution, though, I think is the most generic.

When you have this done, you should never need to deploy your app again, and can just create a batch file that multi sends only your stuff to the website.  I’ve not experimented much with this solution, but it seems to work fine with all I’ve done with it so far!