Planet eZ publish
Just a very quick and rudimentary roundup, but imho especially an IDE shouldn't get in the programmer's way and do just what it should be - aid development.
I've felt the need to both test both the Zend IDE and phpeclipse and so I made a little thing for practice and to fiddle around a bit.
He mentions being surprised and impressed by PHPEclipse, while left a bit cold by Zend's offering ("I wasn't able to work with a file of just 500 lines because it felt more frozen than sloppy"). His personal choice for larger projects? PHPEclipse.
Now I have stated in my last few posts that there is an open source protocol and implementation for scripting language debuggers. Are these by definition technically superior? Of course not. It could very well be that Zend's debugger protocol and server component are superior. However if that is the case why isn't Zend publishing the protocol so that we can judge and compare?
Zend has officially proposed a PHP IDE for eclipse (PHPEclipse is not an official Eclipse project) and they are certainly poring in development resources which cost them real money. The end product will however not be released in its entirety as open source. Even worse the parts that will not will not be specced out until the last second. I am of course talking about the debugger.
He also notes that, while the protocol he's previously proposed isn't perfect, there's still advantages to using the XDebug code. It can be altered, adapted, and even integrated with the Zend tool with just a little nudge in the right direction. Lukas' final advice to Zend - "it's not too late to go Open Source".
You can see the change notes here, but the major updates are:
I know, "alpha" is only slightly less change-prone than "devel", but it's a move forward and it makes me happy.
He briefly mentions a comparison between the Solar_Filter class and the Zend_Filter class from their framework - for more on that, see the SitePoint post.
He finished up the post by outlining some of the features to come once this just-released version has been used and abuse by developers. These items include a Solar_User_Access class and integration of the Dojo Toolkit.
We will also create a function to fill up our collection with random data in order to test the sort algorithms with a sufficiently large data set. The sort algorithms listed above are the ones that every computer science student learns in college and are the primary sort algorithms found in real-world applications.
This article will examine the primary sorting algorithms with code examples, and some empirical data regarding how they perform in relation to one another, as well as the size of the data set in question.
The sorting styles they cover include: bubble sort, heap sort, merge sort, quick sort, and shell sort. For each, they provide the code, making it a simple matter of cut and paste to make it work in your script. There's not a whole lot of documentation going along with the code in this article, but the sorting code is simple enough to understand without it.
Ideal for developers, Oracle Database XE is free to develop, deploy, and distribute. Join Oracle experts as they demonstrate best practices for Oracle and PHP on Linux and interoperability with SQL, Java, and BPEL while taking advantage of PHP's explosive growth and new functionality.
Bring your laptop and get up and running on Oracle Database 10g Express Edition (Oracle Database XE) on Linux and Zend Core for Oracle. Walk away with a complete enterprise Oracle and PHP environment completely free of charge!
For more information on the wheres and whens of this offer or to register, check out this page on the Oracle site.
As I coded a bit to test the features PHPEclipse offers I implemented a feature-request for Date_Holidays that allows to create drivers not only by a unique driver-id, but also by using an ISO3166 country code (i.e. "de" or "deu").
The past weekend Stephan spent some time to fix all filed bugs for Date_Holidays. The result was the release of version 0.15.2. Meanwhile I finally managed to install all the tools on my new MacBook I needed for PHP development.
The post also mentions some of the tools that he's installed to do development work on this package, including PHPEclipse.
Many PHP applications require to parse e-mail messages. For example bug systems and ticket systems that want to allow input by e-mail. For sending e-mail there are already decent implementations, ones that even allow sending multi-part and mixed text/html messages with attachments and so on.
He gives an example of how the component can be used to grab the mail from a remote POP3 server and display the parsed results with a few echo statements. Getting different values in the mail messages is made simple and is as easy as using structures like "$mail->to->email" or "$mail->body" to reference the content you want.

Many PHP applications require to parse e-mail messages. For example bug systems and ticket systems that want to allow input by e-mail. For sending e-mail there are already decent implementations, ones that even allow sending multi-part and mixed text/html messages with attachments and so on.
Parsing e-mail is a whole different story, and definitely not an easy task. As we see this task as something important we decided to add e-mail parsing functionality to the Mail component. We just released an alpha release of this component as PEAR package which you should be able to install with (not sure if you have to add the components channel first, for information on how to do that see the "PEAR Installer" section in this article.
pear install components.ez.no/mail-alpha
The Mail parsing part of the component can currently use a POP3 server or a file to parse e-mail messages from. A small example to parse e-mail from a POP 3 server looks like (if you use the PEAR installer to install the component):
<?php
require_once "ezc/Base/base.php";
function __autoload( $className )
{
ezcBase::autoload( $className );
}
$pop3 = new ezcMailPop3Transport( "pop3.example.com" );
$pop3->authenticate( "user", "password" );
$set = $pop3->fetchAll();
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
foreach ( $mails as $mail )
{
echo "From: {$mail->from->email}\n";
echo "To: ";
foreach ( $mail->to as $to ) {
echo "{$to->name} ({$to->email}) ";
}
echo "\n";
echo "Subject: {$mail->subject}\n";
switch ( get_class( $mail->body ) )
{
case 'ezcMailText':
echo "Text part, ".
"type={$mail->body->subType}\n--\n";
echo $mail->body->text;
echo "\n--\n";
break;
case 'ezcMailMultipartMixed':
echo "Multipart mail\n";
break;
}
echo "\n";
}
?>
The $mail variable now holds an array of ezcMail objects. For more information on how to access the information in the mail classes, please refer to the documentation. Currently not all the ezcMailPart decendents document the available properties yet, but this will ofcourse be addressed before the first beta.
In the near future we want to expand the component with an IMAP transport, more authentication mechanisms and add methods that allow you to "reply" to a parsed e-mail message or "forward" one. Those methods then set the correct headers in the e-mail object, including the correct handling of "References" and "In-Reply-To" headers.
