Explore Open Source Technology

Lets Explore Power of Open Source Technology PHP, MYSQL, APACHE, LINUX(LAMP)

Archive for the 'design pattern' Category

All articles are related to design pattern.

Sajax PHP

Posted by openstech on January 24, 2008

AJAX and PHP Tutorial: Building Responsive Web Applications

Enhance the user experience of your PHP website using AJAX with this practical and friendly tutorial! This book is the most efficient resource you can get www.cristiandarie.ro/ajax-php/ - 22k - Cached - Similar pages

Ajax Toolkit for PHP - SAJAX - Simple Ajax Toolkit by ModernMethod

An open source XMLHTTPRequest toolkit with PHP, Perl, and Python backends.www.modernmethod.com/sajax/ - 11k - Cached - Similar pages

PHPit - Totally PHP » Ajax & PHP without using the XmlHttpRequest 

PHP file which looks something like this:. <?php. $html = ‘<b>This content came from ourAjax Engine</b>’; ?> div = document.getElementById(’contentdiv’) www.phpit.net/article/ajax-php-without-xmlhttprequest/ - 21k - Cached - Similar pages

PHPBuilder.com, the best resource for PHP tutorials, templates 

XMLHttpRequest and AJAX for PHP programmers. James Kassemi. Introduction:. Although the concept isn’t entirely new, XMLHttpRequest technology is implemented www.phpbuilder.com/columns/kassemi20050606.php3 - 63k - Cached - Similar pages

ajax php

This tutorial explains how to use Ajax with PHP and introduces the Simple Ajax Toolkit (Sajax), a tool written in PHP that lets you integrate server-side www.ajaxtopics.com/ajaxphp.html - 18k - Cached - Similar pages

” » Creating a MySQL connection with PHP/AJAX” by John Wiseman

In this tutorial I will explain how to open a [tag]mysql[/tag] database connection using PHPand the all popular [tag]AJAX[/tag].www.johnwiseman.ca/blogging/tutorials/ creating-a-mysql-connection-with-phpajax/ - 61k -Cached - Similar pages

Developing PHP the Ajax way, Part 1: Getting started

Asynchronous JavaScript and XML (Ajax), is arguably the most popular new Web technology. In this two-part ‘Developing PHP the Ajax way’ series, www.ibm.com/developerworks/xml/library/os-php-rad1/ - 65k - Cached - Similar pages

Tutorials Round-Up: Ajax, CSS, PHP and More | Tutorials | Smashing 

Coding or designing a page, it’s always nice to have some basic templates you can quickly modify adapt your needs. However, at least once know, www.smashingmagazine.com/2007/01/26/ tutorials-round-up-ajax-css-javascript-php-mysql-and-more/ - 138k - Cached - Similar pages

PHP and AJAX MySQL Database Example

The stateChanged() and GetXmlHttpObject functions are the same as in the PHP AJAXSuggest chapter, you can go to there for an explanation of those. www.w3schools.com/php/php_ajax_database.asp - 31k - Cached - Similar pages

AjaxAC - Open-source PHP framework for creating AJAX / JavaScript 

Object oriented Web-application framework offering to build Ajax applications. [Open source, Apache licence]ajax.zervaas.com.au/ - 12k - Cached - Similar pages

Posted in advanced s/w development life cycle, design pattern, framework, linux apache mysql php development, server, web development in php | Tagged: , | 1 Comment »

PHP AJAX Tutorial

Posted by openstech on January 24, 2008

AJAX and PHP Tutorial: Building Responsive Web Applications

Enhance the user experience of your PHP website using AJAX with this practical and friendly tutorial! This book is the most efficient resource you can get www.cristiandarie.ro/ajax-php/ - 22k - Cached - Similar pages

Ajax Toolkit for PHP - SAJAX - Simple Ajax Toolkit by ModernMethod

An open source XMLHTTPRequest toolkit with PHP, Perl, and Python backends.www.modernmethod.com/sajax/ - 11k - Cached - Similar pages

PHPit - Totally PHP » Ajax & PHP without using the XmlHttpRequest 

PHP file which looks something like this:. <?php. $html = ‘<b>This content came from ourAjax Engine</b>’; ?> div = document.getElementById(’contentdiv’) www.phpit.net/article/ajax-php-without-xmlhttprequest/ - 21k - Cached - Similar pages

PHPBuilder.com, the best resource for PHP tutorials, templates 

XMLHttpRequest and AJAX for PHP programmers. James Kassemi. Introduction:. Although the concept isn’t entirely new, XMLHttpRequest technology is implemented www.phpbuilder.com/columns/kassemi20050606.php3 - 63k - Cached - Similar pages

ajax php

This tutorial explains how to use Ajax with PHP and introduces the Simple Ajax Toolkit (Sajax), a tool written in PHP that lets you integrate server-side www.ajaxtopics.com/ajaxphp.html - 18k - Cached - Similar pages

” » Creating a MySQL connection with PHP/AJAX” by John Wiseman

In this tutorial I will explain how to open a [tag]mysql[/tag] database connection using PHPand the all popular [tag]AJAX[/tag].www.johnwiseman.ca/blogging/tutorials/ creating-a-mysql-connection-with-phpajax/ - 61k -Cached - Similar pages

Developing PHP the Ajax way, Part 1: Getting started

Asynchronous JavaScript and XML (Ajax), is arguably the most popular new Web technology. In this two-part ‘Developing PHP the Ajax way’ series, www.ibm.com/developerworks/xml/library/os-php-rad1/ - 65k - Cached - Similar pages

Tutorials Round-Up: Ajax, CSS, PHP and More | Tutorials | Smashing 

Coding or designing a page, it’s always nice to have some basic templates you can quickly modify adapt your needs. However, at least once know, www.smashingmagazine.com/2007/01/26/ tutorials-round-up-ajax-css-javascript-php-mysql-and-more/ - 138k - Cached - Similar pages

PHP and AJAX MySQL Database Example

The stateChanged() and GetXmlHttpObject functions are the same as in the PHP AJAXSuggest chapter, you can go to there for an explanation of those. www.w3schools.com/php/php_ajax_database.asp - 31k - Cached - Similar pages

AjaxAC - Open-source PHP framework for creating AJAX / JavaScript 

Object oriented Web-application framework offering to build Ajax applications. [Open source, Apache licence]ajax.zervaas.com.au/ - 12k - Cached - Similar pages

Posted in design pattern, framework, linux apache mysql php development, server, web development in php | Tagged: , | No Comments »

Top 10 Search Engines & Directories

Posted by openstech on January 23, 2008

Posted in Web Services, design pattern, framework, linux apache mysql php development, server, web development in php | Tagged: | No Comments »

PHP with Flex

Posted by openstech on January 23, 2008

To make sure we don’t get too stuck in a rut with our tutorial posts I decided to branch out a little bit and talk about Adobe Flex 2.0. I recently spent a lot of time figuring out how to do this. Basically what I am going to go over here is how to use php and json to send data to your flex application, and then how to use that data in Flex. 

This is actually a lot easier than it seems because PHP and Flex both have functions to handle json data transmissions. For Flex, the one thing you need to make sure is that you have the corelib from Adobe in order to use the JSON functions - this can be found atAdobe Flex coreLib. This can be added to a project in Flex builder by going into the properties of a project then to “Flex Build Path” and adding the .swc to the library path. For PHP, if you have a version greater than 5.2, you are all set. If not, you can either upgrade, or install the php-json extension.

Below is the final product of what we are going to create today - to view the Flex source right click the flash movie and select ‘View Source’. Pressing each of the buttons sends a request to our php code for data. If you click the “Get Employee” button we just get a single person back, and if you click “Get Manager” we get a manager back and his employees (which is an array of people). This is a very simple little app, and not particularly useful, but it does have everything needed to show how to communicate between php and flex using json.

The first thing we are going to go over is the php code. The php code creates a few classes for the objects that we will pass to our flex application. We also have code to check if a GET variable has been set, we use this to tell the php code what we are requesting. If the variable “getPerson” is set we create a person and echo it (after we encode it into json) to send it to the Flex app. Ideally your data would be stored in a database, but for simplicity, we’re just creating Person objects directly in the php code.

<?php

class Person
{
    public $first_name;
    public $last_name;
    public $email;
    public $address;
}

class Manager extends Person
{
    public $title;
    public $employees;
}

if(isset($_GET['getPerson']))
{
    $p = new Person();
    $p->first_name = ‘Chuck’;
    $p->last_name = ‘Killer’;
    $p->email = ‘fake@email.com’;
    $p->address = ‘5555 Some Street City, State 52423′;
    echo json_encode($p);
}

if(isset($_GET['getManager']))
{
    $p1 = new Person();
    $p1->first_name = ‘Joe’;
    $p1->last_name = ‘Schmoe’;
    $p1->email = ‘joe.schmoe@email.com’;
    $p1->address = ‘5424 Some Street City, State 12314′;
    $p2 = new Person();
    $p2->first_name = ‘Bob’;
    $p2->last_name = ‘Hacker’;
    $p2->email = ‘bob.hacker@email.com’;
    $p2->address = ‘1414 Some Street City, State 12412′;
    $p3 = new Person();
    $p3->first_name = ‘Kevin’;
    $p3->last_name = ‘Putvin’;
    $p3->email = ‘kevin.putvin@email.com’;
    $p3->address = ‘6123 Some Street City, State 41241′;    
    $m = new Manager();
    $m->first_name = ‘Manager’;
    $m->last_name = ‘Dude’;
    $m->email = ‘manager.dude@email.com’;
    $m->address = ‘5534 Some Other Street City, State 91230′;
    $m->title = ‘Office Manager’;
    $m->employees = array($p1$p2$p3);
    echo json_encode($m);
    
}
?>

The next thing to do is setup the basic application for flex. The following code is the simplest flex application. This sets up an application with specified height and width and also adds the view source option to the movie, with the source file specified by “viewSourceURL”.

<?xml version=“1.0″ encoding=“utf-8″?>
<mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml” 
    layout=“absolute” width=“500″ height=“410″ 
    viewSourceURL=“../files/JSONTutorial.mxml”>

</mx:Application>

The next thing to do is setup the user interface. This is pretty standard flex mxml, nothing should look out of place. The user interface has a couple of text fields for the data we get back from the php code, a datagrid, and two buttons. This is all setup on a panel. The one important thing to observe is that the dataField properties on the DataGridColumns, these names correspond to the variables from the objects in the php code.This code goes inside the Application block.

<mx:Panel x=“0″ y=“0″ width=“500″ height=“410″ layout=“absolute” 
     title=“Simple JSON Example”>

    <mx:DataGrid x=“10″ y=“174″ width=“460″ enabled=“true” 
             editable=“false” id=“dgEmployees”>

        <mx:columns>
            <mx:DataGridColumn headerText=“First Name” 
                            dataField=“first_name”/>

            <mx:DataGridColumn headerText=“Last Name” 
                            dataField=“last_name”/>

            <mx:DataGridColumn headerText=“Email” 
                            dataField=“email”/>

            <mx:DataGridColumn headerText=“Address” 
                            dataField=“address”/>

        </mx:columns>
    </mx:DataGrid>
    <mx:Button x=“116″ y=“338″ label=“Get Employee”
            id=“getPerson” />

    <mx:Button x=“266″ y=“338″ label=“Get Manager” 
            id=“getManager” />

    <mx:Label x=“131″ y=“12″ text=“Name”/>
    <mx:TextInput x=“189″ y=“10″ id=“txtName” editable=“false”/>
    <mx:Label x=“131″ y=“42″ text=“E-mail”/>
    <mx:TextInput x=“189″ y=“40″ id=“txtEmail” editable=“false”/>
    <mx:Label x=“131″ y=“68″ text=“Address”/>
    <mx:TextInput x=“189″ y=“66″ id=“txtAddress” 
            editable=“false”/>

    <mx:Label x=“131″ y=“94″ text=“Title”/>
    <mx:TextInput x=“189″ y=“92″ id=“txtTitle” editable=“false”/>
    <mx:Label x=“131″ y=“122″ text=“Has Employees”/>
    <mx:TextInput x=“229″ y=“120″ width=“120″ editable=“false” 
             id=“txtEmployees” text=“No”/>

    <mx:Label x=“10″ y=“148″ text=“Employees:”/>
</mx:Panel>

Now that our user interface is setup and ready to go we can add our http services to go ask for the data from our php code. Now in flex you can setup all kinds of different services. We are just going to setup a simple http request service that sets a GET variable and tells the service that we want to run a function once we get the results. As you can see in the code below we send both services out to the same php page, which is the one we made earlier. Also each one sets one GET variable, which is done inside the mx:request block. Lastly, the result is an event which we hook to, to process the results of the request (our JSON data). This code goes at the very beginning of the file right after the Application opening element.

<mx:HTTPService id=“personRequest” 
        url=“../files/json_tutorial.php” 
        useProxy=“false” method=“GET” resultFormat=“text” 
        result=“personJSON(event)”>

    <mx:request xmlns=“”>
        <getPerson>“true”</getPerson>
    </mx:request>
</mx:HTTPService>
<mx:HTTPService id=“managerRequest” 
        url=“../files/json_tutorial.php” 
        useProxy=“false” method=“GET” resultFormat=“text” 
        result=“managerJSON(event)”>

    <mx:request xmlns=“”>
        <getManager>“true”</getManager>
    </mx:request>
</mx:HTTPService>

Ok, now let’s get into the actual JSON decoding, which is really simple. So at this point if your using flex builder you will be getting a error message about an undefined method for personJSON(event) and managerJSON(event). We are going to solve that right now. First things first - lets just put in the method signatures so the application can build and run. The way this is done is by inputting a script tag and adding our actionscript functions inside there. You’ll notice we added two import statements to import our JSON serialization functions and use the result event. This code will go right above the http services we just setup and below the Application opening element.

<mx:Script>
    <![CDATA[
    import mx.rpc.events.ResultEvent;
    import com.adobe.serialization.json.JSON;
    
    private function personJSON(event:ResultEvent):void
    {
    }
    
    private function managerJSON(event:ResultEvent):void
    {
    }
    ]]>
</mx:Script>

Now down to the actual work of our application, the first thing we need to do in both of the functions is get the result back and we store it in a string. The next thing we do is call the function JSON.decode on the string, this function will return us an object with all the same properties of the one sent by php - we set this equal to a variable. We can now use this object and reference the properties using the . (dot) notation. So to get the first name of the person we simply use variable.first_name and so on for the rest of the variables. So that takes care of getting a person. And the above code is changed like so.

<mx:Script>
    <![CDATA[
    import mx.rpc.events.ResultEvent;
    import com.adobe.serialization.json.JSON;
    
    private function personJSON(event:ResultEvent):void
    {
        //get the raw JSON data and cast to String
        var rawData:String = String(event.result);
        var person = JSON.decode(rawData);
        txtName.text = person.first_name + " " + 
                  person.last_name;
        txtEmail.text = person.email;
        txtAddress.text = person.address;
        txtEmployees.text = "No";
        txtTitle.text = "No Title";
    }
    
    private function managerJSON(event:ResultEvent):void
    {
        //get the raw JSON data and cast to String
        var rawData:String = String(event.result);
        var manager = JSON.decode(rawData);
        txtName.text = manager.first_name + " " + 
                  manager.last_name;
        txtEmail.text = manager.email;
        txtAddress.text = manager.address;
        txtEmployees.text = "Yes";
        txtTitle.text = manager.title;
    }
    ]]>
</mx:Script>

This takes care of all the text boxes we created and puts the correct values in them. Now we have to worry about that datagrid we created, and you might have noticed we haven’t dealt with the employees of the manager yet. Well this is handled pretty nicely in the manager function. We are going add a new var called employees and this will be an Array. Because of the JSON.decode function we can simply cast the employees as an Array and all will be fine. The next thing we do is actually create an ArrayCollection to use for the data provider for the datagrid. This is a best practice when using array data for the provider because the ArrayCollection allows for some extra functionality. The final setup is to set the dataGrid.dataProvider equal to the ArrayCollection. Also we set the dataProvider equal to null in the person function to clear our the data in the data grid. To make all this work we also need to add another import for ArrayCollection. This leaves us with the following code.

<mx:Script>
    <![CDATA[
    import mx.collections.ArrayCollection;
    import mx.rpc.events.ResultEvent;
    import com.adobe.serialization.json.JSON;
    
    private function personJSON(event:ResultEvent):void
    {
        //get the raw JSON data and cast to String
        var rawData:String = String(event.result);
        var person = JSON.decode(rawData);
        txtName.text = person.first_name + " " 
            + person.last_name;
        txtEmail.text = person.email;
        txtAddress.text = person.address;
        txtEmployees.text = "No";
        txtTitle.text = "No Title";
        
        //Data Grid Code
        dgEmployees.dataProvider = null;
    }
    
    private function managerJSON(event:ResultEvent):void
    {
        //get the raw JSON data and cast to String
        var rawData:String = String(event.result);
        var manager = JSON.decode(rawData);
        txtName.text = manager.first_name + " " 
            + manager.last_name;
        txtEmail.text = manager.email;
        txtAddress.text = manager.address;
        txtEmployees.text = "Yes";
        txtTitle.text = manager.title;
        
        //Data Grid Code
        var employees:Array = 
            manager.employees as Array;
        var employeesCollection:ArrayCollection = 
            new ArrayCollection(employees)
        dgEmployees.dataProvider = employeesCollection;
    }
    ]]>
</mx:Script>

Now you might have tried it at this point and said “Hey, this isn’t working!”, well that is true. This is because we never hooked our buttons up to send the requests. This is really simple, we just add click events for both buttons and the corresponding service.send() commands to the click events. The code below is our new button code.

<mx:Button x=“116″ y=“338″ label=“Get Employee” 
    id=“getPerson” click=“personRequest.send();”/>

<mx:Button x=“266″ y=“338″ label=“Get Manager” 
    id=“getManager” click=“managerRequest.send();”/>

So this leaves us with the final flex code. This along with the php code at the beginning of the tutorial allows for JSON data to be sent to your flex applications.

<?xml version=“1.0″ encoding=“utf-8″?>
<mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml” 
    layout=“absolute” width=“500″ height=“410″ 
    viewSourceURL=“../files/JSONTutorial.mxml”>

<mx:Script>
    <![CDATA[
    import mx.collections.ArrayCollection;
    import mx.rpc.events.ResultEvent;
    import com.adobe.serialization.json.JSON;
    
    private function personJSON(event:ResultEvent):void
    {
        //get the raw JSON data and cast to String
        var rawData:String = String(event.result);
        var person = JSON.decode(rawData);
        txtName.text = person.first_name + " " 
            + person.last_name;
        txtEmail.text = person.email;
        txtAddress.text = person.address;
        txtEmployees.text = "No";
        txtTitle.text = "No Title";
        
        //Data Grid Code
        dgEmployees.dataProvider = null;
    }
    
    private function managerJSON(event:ResultEvent):void
    {
        //get the raw JSON data and cast to String
        var rawData:String = String(event.result);
        var manager = JSON.decode(rawData);
        txtName.text = manager.first_name + " " 
            + manager.last_name;
        txtEmail.text = manager.email;
        txtAddress.text = manager.address;
        txtEmployees.text = "Yes";
        txtTitle.text = manager.title;
        
        //Data Grid Code
        var employees:Array = 
            manager.employees as Array;
        var employeesCollection:ArrayCollection = 
            new ArrayCollection(employees)
        dgEmployees.dataProvider = employeesCollection;
    }
    ]]>
</mx:Script>

<mx:HTTPService id=“personRequest” 
        url=“../files/json_tutorial.php” 
        useProxy=“false” method=“GET” resultFormat=“text” 
        result=“personJSON(event)”>

    <mx:request xmlns=“”>
        <getPerson>“true”</getPerson>
    </mx:request>
</mx:HTTPService>
<mx:HTTPService id=“managerRequest” 
        url=“../files/json_tutorial.php” 
        useProxy=“false” method=“GET” resultFormat=“text” 
        result=“managerJSON(event)”>

    <mx:request xmlns=“”>
        <getManager>“true”</getManager>
    </mx:request>
</mx:HTTPService>
<mx:Panel x=“0″ y=“0″ width=“500″ height=“410″ 
    layout=“absolute” title=“Simple JSON Example”>

    <mx:DataGrid x=“10″ y=“174″ width=“460″ enabled=“true” 
        editable=“false” id=“dgEmployees”>

        <mx:columns>
            <mx:DataGridColumn headerText=“First Name” 
                dataField=“first_name”/>

            <mx:DataGridColumn headerText=“Last Name” 
                dataField=“last_name”/>

            <mx:DataGridColumn headerText=“Email” 
                dataField=“email”/>

            <mx:DataGridColumn headerText=“Address” 
                dataField=“address”/>

        </mx:columns>
    </mx:DataGrid>
    <mx:Button x=“116″ y=“338″ label=“Get Employee” 
        id=“getPerson” click=“personRequest.send();”/>

    <mx:Button x=“266″ y=“338″ label=“Get Manager” 
        id=“getManager” click=“managerRequest.send();”/>

    <mx:Label x=“131″ y=“12″ text=“Name”/>
    <mx:TextInput x=“189″ y=“10″ id=“txtName” editable=“false”/>
    <mx:Label x=“131″ y=“42″ text=“E-mail”/>
    <mx:TextInput x=“189″ y=“40″ id=“txtEmail” editable=“false”/>
    <mx:Label x=“131″ y=“68″ text=“Address”/>
    <mx:TextInput x=“189″ y=“66″ id=“txtAddress” 
        editable=“false”/>

    <mx:Label x=“131″ y=“94″ text=“Title”/>
    <mx:TextInput x=“189″ y=“92″ id=“txtTitle” editable=“false”/>
    <mx:Label x=“131″ y=“122″ text=“Has Employees”/>
    <mx:TextInput x=“229″ y=“120″ width=“120″ editable=“false” 
        id=“txtEmployees” text=“No”/>

    <mx:Label x=“10″ y=“148″ text=“Employees:”/>
</mx:Panel>
</mx:Application>

Posted in design pattern, framework, linux apache mysql php development, server, web development in php | Tagged: , | 1 Comment »

Important link for PHP Development

Posted by openstech on January 23, 2008

PHP: Hypertext Preprocessor

The PHP development team would like to announce the immediate …. The PHPdevelopment team hereby announces that support for PHP 4 will continue until the www.php.net/ - 42k - Cached - Similar pages

PHP Programs, PHP Tools, PHP Design, PHP Development

PHP Programs, PHP Tools, PHP Design, PHP Development.www.devarticles.com/c/b/PHP/ - 75k - Cached - Similar pages

CakePHP: the rapid development php framework. Home

Official website. Offers a manual for beginners and links towards the last version.www.cakephp.org/ - 32k - Cached - Similar pages

PHP Developer Center - Yahoo! Developer Network

PHP Builder : A popular site with many PHP tutorials and code samples. Sitepoint : Makers of fine books and tutorials on PHP and other web development tools developer.yahoo.com/php/ - 21k - Cached - Similar pages

Eclipse PHP Integrated Development Environment

The PHP IDE project will deliver a PHP Integrated Development Environment framework for the Eclipse platform. This project will encompass the development www.eclipse.org/proposals/php-ide/ - 17k - Cached - Similar pages

Development Infrastructure for PHP

The PHP development environment that I have devised was created by taking a set of sample programs which I had assembled for a previous language and www.tonymarston.net/php-mysql/infrastructure.html - 94k - Cached - Similar pages

ONLamp.com — Simplify PHP Development with WASP

Brian Fioca shows off WASP, a PHP framework for building maintainable database-backed websites.www.onlamp.com/pub/a/php/2006/01/19/wasp_intro.html - 28k - Cached - Similar pages

PHP Development & Production Software - PHP Tutorials Training 

Zend provides PHP programming platform, PHP development & Production tools, and PHPTraining & Certification to enable delivery of business-critical www.zend.com/ - 26k - Cached - Similar pages

Home - PHP Development

Free web scripts (PHP, JavaScript, etc), internet-related software, web development.www.php-development.ru/ - 23k - Cached - Similar pages

Qcodo - PHP Development Framework

The Qcodo Development Framework is an open-source PHP 5 framework that focuses on freeing developers from unnecessary tedious, mundane coding. qcodo.com/ - 11k - Cached - Similar pages

PHP: Credits

PHP Group. Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans,  PHP Data Objects Layer, Wez Furlong, Marcus Boerger, Sterling Hughes, www.php.net/credits.php - 16k - Cached - Similar pages

PHP Help, PHP Programming, PHP Code, PHP Tutorials

Formerly referred to as “Personal Home Page Tools,” PHP Hypertext Preprocessor is an open Terracotta simplifies application architecture and development www.devshed.com/c/b/PHP/ - 69k - Cached - Similar pages

Eclipse PHP

Developed by Zend and IBM, an IDE which focuses on the development of complex PHP-driven web applications. The Eclipse site also offers IDEs for other other www.eclipse.org/pdt/ - 35k - Cached - Similar pages

Zend Studio - The Leading PHP IDE from the PHP Experts - Zend.com

Zend Studio is the only Integrated Development Environment (IDE) available for  Zend Studio is integrated with Zend Platform’s powerful PHP intelligence www.zend.com/en/products/studio/ - 20k - Cached - Similar pages

PHPBuilder.com, the best resource for PHP tutorials, templates 

PHPBuilder.com, the resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more for the PHP developer.