PHP news

My interview at dot KDE - Henri Bergius

Planet PHP - Thu, 09/02/2010 - 15:31

Jos Poortvliet did an interview with me for dot KDE in this summer's aKademy and it has been online for a while now. In it we discuss things like Midgard as a storage engine for desktop applications, and Maemo's open QA process for Downloads applications. Some excepts:

At maemo.org we have an appstore for FOSS applications on the Maemo platform. This appstore is enabled by default on all Nokia N900s so we wanted to have some quality control. We had to create our own appstore approval process, compatible with the FOSS philosophy. Now any developer can submit an app, and anyone can test and vote. The whole process is completely transparent, auditable and visible. And it also provides a feedback channel from testers and users to the developers!

...

Midgard is a data storage service. Whether you write desktop or web applications, instead of coming up with your own file format, you just use Midgard. You can work more easily and object-based. Users have many different devices these days, so Midgard has strong replication features to synchronize between different systems. Midgard is built on top of GObject; we provide bindings to a bunch of different languages so developers can choose the tools they like - PHP, Python, Javascript. Currently (as in now, while we're talking) Qt bindings are being developed here at Akademy.

Read the whole interview.

Categories: PHP news

Packt launches fifth annual Open Source Awards - Ken Guest

Planet PHP - Thu, 09/02/2010 - 12:21

Packt launches fifth annual Open Source Awards

The 2010 Open Source Awards was launched last month by Packt, inviting people to visit www.PacktPub.com and submit nominations for their favorite Open Source project. Now in its fifth year, the Award has been adapted from the established Open Source CMS Award with the wider aim of encouraging, supporting, recognizing and rewarding all Open Source projects.
WordPress won the 2009 Open Source Content Management System (CMS) Award in what was a very close contest with MODx and SilverStripe. While MODx was the first runner up, SilverStripe, a Most Promising CMS Award winner in 2008, made its way to the second runner up position in its first year in the Open Source CMS Award final.
The 2010 Award will feature a prize fund of $24,000 with several new categories introduced. While the Open Source CMS Award category will continue to recognize the best content management system, Packt is introducing categories for the Most Promising Open Source Project, Open Source E-Commerce Applications, Open Source JavaScript Libraries and Open Source Graphics Software. CMSes that won the Overall CMS Award in previous years will continue to compete against one another in the Hall of Fame CMS category.
These new categories will ensure that the Open Source Awards is the ultimate platform to recognise excellence within the community while supporting projects both new and old. “We believe that the adaption of the Award and the new categories will provide a new level of accessibility, with the Award recognizing a wider range of Open Source projects; both previous winners while at the same time, encouraging new projects” said Julian Copes, organizer of this year’s Awards.
Packt has opened up nominations for people to submit their favorite Open Source projects for each category at http://www.PacktPub.com/open-source-awards-home . The top five in each category will go through to the final, which begins in the last week of September. For more information on the categories, please visit Packt’s website http://www.PacktPub.com/blog/packt’s-2010-open-source-awards-announcement

Categories: PHP news

Zend Framework is a BOSSie Award Winner - Zend Developer Zone

Planet PHP - Wed, 09/01/2010 - 18:22
Last week, while I was on vacation, the news broke that IDG's InfoWorld had announced its annual InfoWorld Bossie Award winners ("Bossie" stands for "Best of Open Source Software"), and that Zend Framework had won the " best open source application development software " award.
Categories: PHP news

Speaking at PHPNW 2010 - John Mertic

Planet PHP - Wed, 09/01/2010 - 17:36

I’m excited to announce I’ll be speaking at PHPNW Conference, to be held October 9th, 2010 in Manchester, UK. I’ll be doing my talk, “Developing Easily Deployable PHP Applications“, which I also did in July at OSCON. I’m working on making the talk even better based upon feedback I received, and will talk more about the various tools we use and have developed to make building SugarCRM easier.

This is my first time to this conference, but judging from the lineup of talks it is not one to miss if you are in the area. The lineup has several exciting talks about PHP development from some of the biggest names in PHP. You can register now at the conference website; early bird registration ends on September 4th.


Categories: PHP news

Contributing to ZendFramework - ThinkPHP /dev/blog - PHP

Planet PHP - Wed, 09/01/2010 - 10:13
... on contribution

Who hasn't ever started writing his own Framework/CMS? It is considered best practice for learning purposes, but going through all the security stuff can be stressful and boring at the same time. That's where most devs start to contribute to big Open Source-projects like Typo3 or the Zend Framework, because they are already experienced working with it and yet evolving another system on the market or even getting people to contribute seems like an unachievable task. Instead of wasting his time on yet another ACL implementation, the developer is taking part in making a software become even better, no matter if he delivers new features, reports / fixes bugs or works on documentation (another, yet an often underestimated part of contribution). It is also worth noting that every single Blog-entry and every HowTo thats put on the web also is a great deal of contribution that helps the software spreading. Beginners articles are important to put on the web since every one of us had it's beginnings and these are the sort of articles where many people decide to either use the software for a certain project or not.

As you might see, this article is not only a guide on contributing bugfixes, but also I want to motivate you to just give it a try.

... on Zend Framework

Having spent almost a year at the IRC support channel, I can tell they're really fun guys to hang around with. Of course, the Framework itself developed into a great piece of software. I do not want to discuss the up or downsides of a use-at-will framework, neither I want to recommend it over {put your favourite software here}. But what I can talk about is a little summary of the support channel's chatlogs. The widely annouced channel (which is #zftalk on Freenode) includes all kinds of concerns. One kind of people finds bugs, the other do have really clever ideas on improvements, but when you ask them to contribute its all the same: they either think it takes years to get into it, the others think they might be "not good enough for this". We sure won't force or threaten people to contribute, but what I can do is taking the fear out of it and demystify the thing, so later you might see that its actually just a few minutes to spend. Let me just loose a few words to the latter ones before we get into it: You can't destroy anything, and every idea of yours can also lead to a great improvement either realted to your concern or in a completely different area. We're glad that you take your time, even if you are completely new to ZF. Some beginners concerns already caused developers to write guides and articles that are still around and are linked at times in #zftalk...

... on contributing to Zend Framework

Contributing any code to ZF requires signing the CLA, which is an agreement that both you have the right to share any code you supply, and that you will not patent that code. This is to ensure that the frameworks codebase remains business friendly, and free to use for everyone. In fact you have to actually sign a paper, having done this you can just scan and mail or fax it. This is an important step, and none of your code will be used in any official package unless you did this.

The next step will be reading the coding & subversion standards. If you already had a look at actual ZF components code you should be familiar with the standards. Once you took a short insight (you probably wont be able to just remember all of this at once), you can check out the official SVN repository. Notice, that you, even having signed the CLA and being confirmed, do not have commit rights. So you might now ask yourself how to contribute then? All magic is taking place in the bugtracker, ZF's official Jira. All bug tickets, additions and improvements are filed as tickets here. So if you find a bug, report it here, and soon there will be a discussion in the comments section of a ticket.

Mostly all of these people, being listed by their reallife names, are also to be found on different names in the support channel, so feel free to ask them any ticket-related stuff.

The code itself will be submitted as a patch file (svn diff > patchFile), and uploaded in the Jira-Ticket. This might also be done by people who do have commit rights, but one might not be sure how to fix a problem, or any question might be left. This method of code management then leaves it to the original package developer to decide whether a change should be made or it should be thought over again (might have side effects on other packages and so on).

The last yet very important point is unit tests. ZF makes heavy use of th

Truncated by Planet PHP, read more at the original (another 1916 bytes)

Categories: PHP news

Big step forward in Modular Database Applications with DataObjects - Alan Knowles

Planet PHP - Wed, 09/01/2010 - 00:00
Article originally from rooJSolutions blog
Being a Software Developer is all about developing applications faster, and delivering quicker. At the same time ensuring that quality is not lost and readibility is kept. DB_DataObjects is one of the key tools in my productivity toolkit. It was originally designed as a way of ensuring that shared database related code ends up in the right place, In the Model layer of the application, rather than the View or Controller (or worse mixed in to some hybrid PHP html garbage..), along with doing cool stuff like Query building etc.
Over the years, of using DataObjects, I've built up quite a library of reusable DataObjects, which to some degree can be plugged in to any project. A Person object that handles login/authentication and authorization (working with the Permissions and Group objects). A Image object that handles storage of Images, and Files that can provide File type conversion for rendering (using things like unoconv, etc.)
More recently, I've been using the Roo Javascript library as the UI component, the Pman Components ontop of the very lightweight html_FlexyFramework. The result is a very modular set of Application development parts. That can quickly be thrown together to build applications. Here's how they all fit together and how it just got a whole lot more modular and flexible...

Categories: PHP news

The fine art of application virtualization - John Lim (PHP Everywhere - By John Lim)

Planet PHP - Tue, 08/31/2010 - 17:23

The new 8-core Intel Xeon 7550 processors are extremely powerful and a good platform for virtualised applications. My company is setting up PHP application running on a Xen based virtualisation on two HP Proliant DL580 for a total of 64 cores in a high availability environment. . Why Virtualise?

First let's investigate why virtualisation is attractive. The advantages are:

  • Simplified maintenance, as all software is running on virtual machines (VMs). Easy to stop and start VMs from the VM server console.
  • High availability is easier to achieve, as you can just restart the VM on a secondary server if the primary server fails, assuming that the VM is stored in shared storage accessible by all servers, using shared storage methods such as NFS, iSCSI or a SAN (Storage Area Network).
  • Able to optimize server hardware utilisation globally as CPUs, memory, hard disk, network resources are all shared.

The disadvantages are strangely enough related to the advantages:

  • The maintenance is simplified, but the initial setup is more complex as not merely do you need to setup the hardware and the operating systems, but you have to plan out the virtual environment, such as the virtual network, and make sure that everything is properly sized as you are buying a few big machines, instead of lots of smaller servers.
  • High availability means you need to invest in high quality shared storage to store the shared VMs, typically a SAN, the SAN switches and the Fibre Channel HBA cards to connect to the SAN switches.
  • Need to over-configure the hardware as there is some overhead in virtualisation, particularly in terms of network I/O and storage I/O. CPU overhead for virtualisation is normally not a concern with modern virtualisation technologies such as VMWare, Xen, or Hyper-V.

In this case, our customer was comfortable with virtualisation, as they are big users of IBM AIX Logical Partitions and VMWare. Secondly, they already operate several large Storage Area Networks, and merely had to upgrade the SAN to support us. Lastly they had the budget to pay for all of this :) VM Technology

We are using Zend Server CE (PHP 5.2), Apache 2.2 and Oracle 11gR2 running on Red Hat Linux 5.5 and Oracle VM 2.2 (which uses the Xen Hypervisor).

In the VM world, there are 4 main technologies that are popular:

  • VMWare - the market leader, this company has been doing virtualisation for over 10 years and they have good products.
  • Xen Based products - Xen is an open source technology that arose from some research on Hypervisors (the bare metal OS that controls all the virtual machines) done in Cambridge University. Today, several companies offer products using Xen, including Red Hat, Citrix, and Oracle. Has good support for Linux and Windows.
  • KVM - many kernel hackers were dissatisfied with Xen (because the Xen Hypervisor is not Linux-based internally), resulting in the development of KVM, which is fully Linux based. KVM is not as mature as Xen, but improving really fast. Support Linux and Windows.
  • Hyper-V - Microsoft's virtualisation technology. Microsoft is committed to supporting Linux also.

We chose Oracle VM (Xen) because it has good performance with Linux and Oracle databases (naturally). Oracle VM is free with optional paid support available. There are also licensing advantages to using Oracle VM with Oracle databases. Oracle database licensing dictates that if you are using virtualisation technologies such as VMWare and are purchasing CPU licenses, you still have to pay database licenses for all the CPU cores of the server, even if the database VM is using only 1 core. However if you are using Oracle VM, then you only have to pay for the CPU cores you use using; this is known as "hard-partition" licensing in Oracle terminology.

I also have experience with VMWare, and can recommend it as an mature alternative. Apparently the Citrix Xen Server is a good product, but I don't have experience with it.

I will cover more technical details in part 2, which i will be writing in September after I complete this installation.

Categories: PHP news

Collecting Garbage: PHP's take on variables - Derick Rethans

Planet PHP - Tue, 08/31/2010 - 10:23
Collecting Garbage: PHP's take on variables
London, UK Tuesday, August 31st 2010, 09:23 BST

This is the first part of three-parts column that was originally published in the April 2009 issues of php|architect.

In this three part column I will explain the merits of the new Garbage Collection (also known as GC) mechanism that is part of PHP 5.3. Before we start with the intricate details of PHP's new GC engine I will explain why it is actually needed. This, combined with an introduction how PHP deals with variables in general is explained in this first part of the column. The second part will cover the solution and some notes on the GC mechanism itself, and the third part covers some implications of the GC mechanism, as well as some benchmarks. But now first on to the introduction.

PHP stores variables in containers called a "zval". A zval container contains besides the variable's type and value, also two additional bits of information. The first one is called "is_ref" and contains a boolean value whether this variable is part of a "reference set". With this bit PHP's engine knows how to differentiate between normal variables, and references. However, PHP has user-land references—as created by the & operator, but also an internal reference counting mechanism to optimize memory usage. The second piece of additional information, called "refcount", contains how many variables names—also called symbols—point to this one zval container. All symbols are stored in a symbol table, of which there is one per scope. There is a scope for the main script (ie, the one requested through the browser), as well as for every function or method.

A zval container is created when a new variable is created with a constant value, such as:

$a = "new string";

In this case the new symbol name "a" is created in the current scope, and a new variable container is created with type "string", value "new string". The "is_ref" bit is by default set to "false" because no user-land reference has been created. The "refcount" is set to "1" as there is only one symbol that makes use if this variable container. Also, if the "refcount" is "1", "is_ref" is always "false". If you have Xdebug installed you can display this information by calling:

xdebug_debug_zval('a');

which displays:

a: (refcount=1, is_ref=0)='new string'

Assigning this variable to another variable name, increases the refcount:

$a = "new string"; $b = $a; xdebug_debug_zval( 'a' );

which displays:

a: (refcount=2, is_ref=0)='new string'

The refcount is "2" here, because the same variable container is linked with both "a" and "b". PHP is smart enough not to copy the actual variable container when it is not necessary. Variable containers get destroyed when the "refcount" reaches zero. The "refcount" gets decreased by one for each symbol linked to the variable container leaves the scope (f.e. if the function ends) or when unset() is called on a symbol. The following example shows that:

$a = "new string"; $c = $b = $a; xdebug_debug_zval( 'a' ); unset( $b, $c ); xdebug_debug_zval( 'a' );

which displays:

a: (refcount=3, is_ref=0)='new string' a: (refcount=1, is_ref=0)='new string'

If we now call "unset( $a );" the variable container, including the type and value will be removed from memory.

Things get a tad more complex with compound types such as arrays and objects. Instead of a scalar value, arrays and objects store their properties in a symbol table of their own. This means that the following example creates three zval containers:

$a = array( 'meaning' => 'life', 'number' => 42 ); xdebug_debug_zval( 'a' );

which displays (after formatting):

a: (refcount=1, is_ref=0)=array ( 'meaning' => (refcount=1, is_ref=0)='life', 'number' => (refcount=1, is_ref=0)=42 )

Graphically, it looks like:

You can see the three zval containers here: "a", "meaning" and "number". Similar rules apply for increasing and decreasing "refcounts". Below we add another element to the array, and set it's value to the contains of an already existing element:

$a = array( 'meaning' => 'life', 'number' => 4

Truncated by Planet PHP, read more at the original (another 4743 bytes)

Categories: PHP news

How to Roll Your Own JavaScript Compressor with PHP and the Closure Compiler - SitePoint » PHP

Planet PHP - Tue, 08/31/2010 - 09:21

In my previous post, I discussed the Closure Compiler’s REST API. In this article, we’ll develop a small PHP program that shows how the API can be used to compress JavaScript code whenever you need it.

Why write your own system?

You’ll find that several free tools handle this task; one of the first PHP JavaScript compressors was written by Ed Eliot. Sometimes, however, they require technologies you don’t use — such as Java — or may not cater for internal workflow processes, including:

  • distributing uncompressed JavaScript to developer PCs
  • integration with source control systems
  • automating your build, and so on
Important: This is not production-level code!

The code below implements a rudimentary JavaScript compressor in PHP to illustrate the basics. The code calls the Closure Compiler compression API every time a request is made, so it’s likely to be slower than multiple uncompressed JavaScript files. You should add your own functions to handle caching to a file or database.

The html

Assume you normally include the following script tags at the bottom of your html:

<script src="script/file1.js"></script> <script src="script/file2.js"></script> <script src="script/file3.js"></script>

We’ll replace this block with a single script tag that references all three files.
The .js is removed and the file names are separated with an ampersand:

<script src="script/?file1&file2&file3"> </script> The PHP

We now require an index.php file within our script folder. The first code block transforms the GET parameters into an array (file1, file2, file3) and initializes the variables:

<?php // fetch JavaScript files to compress $jsfiles = array_keys($_GET); $js = ''; // code to compress $jscomp = ''; // compressed JS $err = ''; // error string

We now loop through the JS files, read the content, and append it to the $js string. If a file is unable to be found or read, its name is appended to the $err string:

// fetch JavaScript files for ($i = 0, $j = count($jsfiles); $i < $j; $i++) { $fn = $jsfiles[$i] . '.js'; $jscode = @file_get_contents($fn); if ($jscode !== false) { $js .= $jscode . "\n"; } else { $err .= $fn . '; '; } }

If any files are missing, we can generate a JavaScript alert to inform the developer:

if ($err != '') { // error: missing files $jscomp = "alert('The following JavaScript files could not be read:\\n$err');"; }

If there are no errors and we have some JavaScript code, we can proceed with the compression. The $apiArgs array contains a list of Closure Compiler API options — you can add, remove, or modify these as necessary. The arguments are encoded and appended to the $args string:

else if ($js != '') { // REST API arguments $apiArgs = array( 'compilation_level'=>'ADVANCED_OPTIMIZATIONS', 'output_format' => 'text', 'output_info' => 'compiled_code' ); $args = 'js_code=' . urlencode($js); foreach ($apiArgs as $key => $value) { $args .= '&' . $key .'='. urlencode($value); }

We can now call the Closure Compiler API using PHP’s cURL library. The compressed JavaScript is returned to the $jscomp string:

// API call using cURL $call = curl_init(); curl_setopt_array($call, array( CURLOPT_URL => 'http://closure-compiler.appspot.com/compile', CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $args, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HEADER => 0, CURLOPT_FOLLOWLOCATION => 0 )); $jscomp = curl_exec($call); curl_close($call);

Finally, we return our compressed code to the browser with the appropriate MIME type:

} // output content header('Content-type: text/javascript'); echo $jscomp; ?> Download the Code

Save yourself some typing and "/>

Truncated by Planet PHP, read more at the original (another 3132 bytes)

Categories: PHP news

Beware of the default Apache 2 config for PHP - Ilia Alshanetsky

Planet PHP - Mon, 08/30/2010 - 20:52
About a week ago, I was doing some upgrades on my development machine and came across a rather nasty issue when it comes to how .php(s) files are associated with PHP in Apache. It seems that a number of distros including Gentoo (which is what I was using) are using the following configuration directive to make the PHP module parse PHP files:

<IfModule mod_mime.c>
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
</IfModule>


The non-obvious problem with the above is that it will allow not only "file.php" to be treated as PHP scripts, but also "file.php.txt", which means that any file containing ".php" in its name, no matter where in the filename, would be treated as a PHP script. This of course creates a rather nasty security hole, since many upload file validation tools, only check the final extension. Consequently allowing the user to by-pass the validation, by simply prefixing another "harmless" extension like .txt, .pdf, etc... to the filename, but still get the code to execute.

To mitigate this problem you should instead use the following configuration, that would only pick-up of files ending with a .php extension.


<IfModule mod_mime.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>


The difference between the two configurations being that the original uses AddHandler (bad) and the latter uses AddType (good).
Categories: PHP news

PHP Manager for IIS 7 – beta release - Ruslan Yakushev

Planet PHP - Mon, 08/30/2010 - 18:30

Today I am releasing PHP Manager for IIS 7 – beta, which is an IIS extension for setting up and managing multiple PHP installations on IIS 7 servers. It can be used to:

  • Register PHP with IIS;
  • Run multiple PHP versions side by side;
  • Check PHP runtime configuration and environment (output of phpinfo() function)
  • Configure various PHP settings
  • Enable or disable PHP extensions
  • Remotely manage PHP configuration in php.ini fille

The PHP Manager installation packages can be downloaded from these locations:

The project’s home page and documentation are located at http://phpmanager.codeplex.com/. This blog post describes how the PHP Manager for IIS can be used.

Installation

From the Downloads page select the installation package that is appropriate for your target machine. Download and run the installer, which will install and register PHP Manager’s binaries with IIS. Note that only IIS versions 7.0 and above are supported. After installation is complete, launch the IIS Manager and find the “PHP Manager” feature:

When opened, the “PHP Manager” feature provides a configuration overview for the PHP installation that is registered with IIS and is currently active. If no PHP is registered with IIS, then the only action that can be performed is the registration of a new PHP version.

Registering PHP with IIS

To register a new PHP version with IIS, first you need to download the zip archive with PHP binaries from http://windows.php.net/ and then extract the files from it into a folder of your choice. Note that you can also install PHP by using Web Platform Installer or the Windows installer from http://windows.php.net/ – the PHP Manager can be used to manage those PHP installations as well.

Click on “Register new PHP version” task and then provide the full path to the location of the main php executable file: php-cgi.exe:

After clicking OK the new PHP version will be registered with IIS and will become active. This means that all the sites on this IIS server by default will use this PHP version.

Switching between PHP versions

After multiple PHP versions have been registered with IIS, you can use PHP Manager to easily switch between the versions on a server and site level. This means that you can configure some IIS sites to use one PHP version, while other sites use different version.

Checking phpinfo() output

phpinfo() function in PHP provides very detailed information about all aspects of PHP runtime configuration. To check the phpinfo() output from within PHP Manager use the “Check phpinfo()” task.

Configuring Error Reporting

You can use PHP Manager to configure error reporting level in PHP. If IIS is used on a development machine then you may want to use verbose error reporting in order to see all the errors, warnings and notices from your PHP application right away. If IIS is used as a production server, then error reporting level is less verbose and errors are logged in a log file, but never communicated to HTTP client.

"/>

Truncated by Planet PHP, read more at the original (another 2028 bytes)

Categories: PHP news

Creating PDF Documents with Zend Framework - Zend Developer Zone

Planet PHP - Mon, 08/30/2010 - 15:00
PHP comes with a number of options to help developers dynamically generate PDF files from within their applications. The Haru and PDF lib extensions offer a complete API for dynamic PDF generation, and there also exist a number of open-source PHP components that can be used for the same purpose. This article will introduce you to one such component, the Zend_Pdf component that ships as part of the Zend Framework, and illustrate how it can be used to perform sophisticated PDF operations from within a PHP application.
Categories: PHP news

JSClasses, JSMag, PHP Alpha 1, PHP strict typing, IndieConf - Lately in PHP podcast episode 4 - PHP Classes

Planet PHP - Mon, 08/30/2010 - 10:18
JSClasses, JSMag, PHP Alpha 1, PHP strict typing, IndieConf - Lately in PHP podcast episode 4 By Manuel Lemos On this episode of the Lately in PHP podcast, Manuel Lemos and Ernani Joppert interview Michael Kimsal from the WebDev publishing company.

They talked about JSClasses, the just launched PHPClasses brother site for JavaScript components.

They also commented on the OpenID based single sign-on system that was implemented to reuse PHPClasses accounts on the JSClasses site to avoid making current PHPClasses users to creating new accounts on the JSClasses site.

It was also discussed about the latest developments for the eventual PHP 5.4 Alpha 1 version, such as the support type hinting of scalar arguments versus strict typing.

Also covered are some initiatives of Michael's company, the JSMag JavaScript magazine (promotion coupon included) and IndieConf, a conference for independent Web professionals.
Categories: PHP news

When unstable is just not unstable enough - Alan Knowles

Planet PHP - Sun, 08/29/2010 - 00:00
Article originally from rooJSolutions blog
..It all started by having yet another look at the gir problem..... Keeping them up-to-date, and trying out the latest cool Gnome toys.
Categories: PHP news

PHP Excel Extension 0.8.6 - Ilia Alshanetsky

Planet PHP - Fri, 08/27/2010 - 13:56
PHP Excel Extension 0.8.6

The 0.8.6 version of the Excel extension was released and is now available for download. This version was updated to contain LibXL 3.0 support which introduces Excel 2007/2010 read/write support, which means that this extension can now read and generate any Excel file. Support for XSLX (2007/2010) format can be enabled by passing "true" as the 3rd parameter to the ExcelBook() construtor.

GitHub: http://github.com/iliaal/php_excel/
Source: http://github.com/downloads/iliaal/php_excel/php-excel-0.8.6.tar.bz2
Categories: PHP news

PHP SouthWest (#phpsw) User Group First Meeting: 7pm, 1st September 2010 - Stuart Herbert

Planet PHP - Fri, 08/27/2010 - 09:36

The first meeting of the PHP SouthWest User Group will be at The Third Floor, Bush House, Bristol from 7pm. The room is booked (big thanks to Del for that), and we have a projector sorted too; now we just need our first speakers

What Is Planned

As this is the very first meeting, our agenda is still being pulled together, but I’m hoping that Bitterman will treat us all to a rehearsal of his upcoming talk for the PHPNW10 conference in Manchester in early October. I’m looking for backup speakers just in case, and of course for anyone who wants to speak at next month’s meetup.

We’ll be at The Third Floor until 8pm, after which we’ll move into one of the local pubs (probably the Watershed) for the social half of the meet-up.

How To Get There

We’ll be at Bush House, 72 Prince Street, Bristol BS1 4QD. This Google Map has directions if you’re walking from Bristol Temple Meads Railway Station.

When you get to the entrance for Bush House, you’ll need to press the bottom buzzer (marked ‘The Hub’) to gain access.

If we like the place, I can get a discount (thanks to Del) for a regular booking.

How To Get Involved

Please join the PHPSW Google Group and say hello!

Categories: PHP news

JSClasses - a new repository of JavaScript components - PHP Classes

Planet PHP - Fri, 08/27/2010 - 02:56
JSClasses - a new repository of JavaScript components By Manuel Lemos The JSClasses site was finally launched. It is based on the PHPClasses site but with the focus of redistributing Object Oriented Programming components written in JavaScript.

This is a brief note about that site with a reference to the actual site launch post.
Categories: PHP news

Hijacked by Flickr pandas! - Maggie Nelson

Planet PHP - Thu, 08/26/2010 - 22:24

After over 4 years at Schematic, it was time to move on. Everyone seems to be hiring like crazy these days and with some soul searching and pondering the future ™, I decided to go with an opportunity to work on the Flickr dev team. I started in June. This involved leaving my beloved New York City for the cleaner, milder, better-produce-providing and wth-is-up-with-the-weather San Francisco. (This post is late in the making mostly due to the craziness of a cross-country move and only maybe 30% laziness).

Working at Flickr so far is pretty amazing. In addition to the NY vs. SF culture shock, it seems like every day something points out how different it is to work for an agency when compared to working for a company that owns its own product. Maybe it’s just the size, too. My previous clients tended to be pretty large companies, while Flickr, even though it’s owned by the Yahoo! behemoth, is allowed to operate quite autonomously. Also, apparently Flickr is obsessed with pandas.

Categories: PHP news

Zend Framework 1.10.8 Released - Zend Developer Zone

Planet PHP - Wed, 08/25/2010 - 20:49
The Zend Framework team announces the immediate availability of Zend Framework 1.10.8 , our eighth maintenance release in the 1.10 series. This release includes around 22 bug fixes. A special reminder to those users of Zend_Service_Twitter , please ensure you upgrade to 1.10.6, 1.10.7, or 1.10.8 ASAP. These releases introduce a change in the Zend_Service_Twitter API that enforces the use of OAuth by default when using methods that require authentication. The change was introduced to help prepare Zend Framework users for the Twitter OAuthcalypse scheduled in 6 days from now on August 31, 2010 . (If you cannot upgrade, there are other ways to integrate Zend_Oauth with Zend_Service_Twitter .)
Categories: PHP news

Pragmatic Guide to Git - Travis Swicegood

Planet PHP - Wed, 08/25/2010 - 17:30

My latest book on Git, Pragmatic Guide to Git goes on sale today! I’m really excited about this new book. It’s the culmination of a year’s worth of work on an entirely new format for Pragmatic Bookshelf.

From today’s announcement:

Last summer, Pragmatic author Travis Swicegood proposed a new kind of book covering the popular version control system, Git. We thought it was a good idea–so much so that we’ve launched a whole new series in this format. Check out the details on the series below, as well as Travis’ new book, Pragmatic Guide to Git, now available in beta.

Having a good idea is cool. Having a good idea that you can get other people excited about too is even better. I thought I was onto something interesting when I pitched the idea to Prag, and so did everyone else there. A year later and here we are with an entire new series lined up.

Here’s the quick description of the new book:

Need to learn how to wrap your head around Git, but don’t need a lot of hand holding? Grab this book if you’re new to Git, not to the world of programming. Git tasks displayed on two-page spreads provide all the context you need, without the extra fluff.

Categories: PHP news