This website recently got a major rebuild; if you're missing something, let Lorna know.

    Tag: php


  1. Use Database Connection Strings with Laravel 8


    I've been doing a lot of database stuff lately, and not much PHP, so when I returned to make my first Laravel project for a while, I had to check the docs to remind myself how some of this works. I noticed that the default approach to database credentials is still to use separate credentials for the host, port, and other variables. I'm using Aiven databases (because I work there and managed databases are great for demo apps as well as real ones!) which supply connection strings, but Laravel supports these too.

    Read more

  2. Handy Beanstalkd Admin Console


    I've been building apps with queues lately and mostly using beanstalkd as my queue because it is very simple, very fast and on my platform it is [apt install beanstalkd] -easy to install. I have also been using a handy web interface for beanstalkd which I like so much that I felt I ought to share! It's beanstalk-console, which is a PHP-based web interface to one (or many) beanstalkd servers.

    Read more

  3. HTTP Toolbox


    As Web Developers, we need to know how to work with HTTP from every angle. I gave a 2-hour tutorial at PHP UK that included some of my most trusted tools - but it was sold out and a bunch of people asked me if there was video (there wasn't, tutorials make little sense when videoed). Instead, I thought I'd try to set out a self-study version of the workshop (I rarely teach these days so I'm unlikely to deliver it anywhere else).

    There's a slide deck, some exercises and a sample repo on GitHub ... let's dive in!

    Read more

  4. Relative Links with IBM Cloud API Gateway


    I work quite a bit with serverless tech, particularly on IBM Cloud since I work there. At the moment I'm building a microservice using web actions. When a user creates data with a POST request, I want to redirect them to the URL of the new thing they created - but for that I need to know the URL that it was accessed with. This is a relatively new feature on API Gateway so here's a quick howto for grabbing that URL in both JavaScript and PHP.

    Read more

  5. Removing Object Properties Before Var_Dumping Them


    I'm working on a project at the moment (a PHP library for CouchDB, if you must know) that is designed to make HTTP calls and therefore holds a Guzzle HTTPClient object as an object property. This is great except when I need to debug something and the output of my call to var_dump() is several screens high ...

    Read more

  6. PHP Learning Path from O'Reilly


    I'm very excited to announce that some of my content is featured in the PHP Learning Path from O'Reilly. The Learning Paths are a good way to buy a bundle of content from different people on related topics, and the introductory pricing is always a good deal! Their newest offering …

    Read more

  7. PHP Quick Stack Trace in Exception Handler


    PHP and frameworks built from it have many great tools to assist with debugging (I particularly like XDebug) but sometimes you can find yourself in a situation where the "helper" features aren't all that much help ... in my case this was a framework totally determined to output HTML from my commandline script and to only show me 5 lines of stack trace, which wasn't enough for my complex application. I had to look up how to generate a nice stack trace inside an exception handler so here it is in case I want it again some time (future me, you're welcome!)

    Read more

  8. How to Choose PHP Hosting


    I've been thinking a lot about the state of hosting in PHP lately, mostly as a result of working with a few different clients on their setups (including one that bought brand new hosting a month ago and got a PHP 5.3.3 platform), and also being at DrupalCon and meeting a community who is about to make a big change to their minimum requirements. With that in mind, here are my thoughts and tips on choosing hosting.

    Read more

  9. Compiling PHP Extensions


    There are lots of reasons why you might like to compile your own PHP extensions. For me those reasons are usually:

    • The extension isn't available on pecl (e.g. uprofiler)

    • The extension is on pecl, but you need the newest version or a branch with a particular feature or fix in it, perhaps for testing

    • You are fixing an extension yourself (yay, we need more people like you!)

    Related: If you followed my previous post on compiling PHP, be aware that in the ``php/bin/`` folder there is a pecl binary that will install extensions correctly for whichever version of PHP it belongs to, so you may not need to read the rest of this post. However if you do, the paths follow on from the examples in that post.

    I haven't seen a really approachable guide anywhere, we tend to speak of extensions in hushed tones, and actually it isn't particularly tricky so here is my quick how-to guide.

    Read more

  10. Running Multiple Versions of PHP


    When I advise people about upgrading their PHP version, I say things like "just run your test suite with the new version" "just grab the new version and try your site with the built-in webserver". A couple of people recently have asked for more detail on how to actually achieve these things so here's a quick primer on getting new PHP without touching anything to do with your existing PHP installation.

    Read more

  11. New PHP Videos on OReilly.com


    I am delighted to announce that I have new video titles available! I'm delighted for two reasons: selfishly, because these things take a lot of prep and I am pleased they are done; but also because I think it is very good news that a key industry player such as O'Reilly recognises PHP's place in the world and works hard to publish new content in this area.

    There are two videos available: PHP Web Servicesimage1 and Intermediate PHPimage2 (subtitle: a bunch of things Lorna thinks will make developers' lives and applications better!), you can click through (disclaimer: affiliate links!) to get more information and a detailed chapter outline for each course. I hope that either or both of them will be useful to you.

    Read more

  12. Working with PHP and Beanstalkd


    I have just introduced Beanstalkd into my current PHP project; it was super-easy so I thought I'd share some examples and my thoughts on how a job queue fits in with a PHP web application.

    Read more

  13. PHP and Git Training Course Dates


    I've had a little flurry of enquiries about training lately, so I thought I'd mention the courses I have coming up, as especially the PHP ones are topics that I don't run public classes on all that often. At the time of writing I have some space on all of these classes:

    Read more

  14. Zend Certified PHP Developer 5.5


    Yesterday I updated my previous ZCE certificate to the Zend Certified PHP Developer qualification (the new ZCE for PHP 5.5 also got a new name). Since the ZCE 5.3 exam is no longer available and I work with various clients to prepare their teams for these certifications, it …

    Read more

  15. Setting Multiple Headers in a PHP Stream Context


    Last week I tried to create a PHP stream context which set multiple headers; an Authorization header and a Content-Type header. All the examples I could find showed headers built up as a string with newlines added manually, which seemed pretty clunky and not-streams-like to me.

    In fact, you've been …

    Read more

  16. Video Course on Learnable: OOP PHP


    I'm delighted to announce that my new video course on Object-Oriented PHP is now available on Learnable! It's very much an introduction, aiming to cover WHY objects are so cool as well as how to declare and use one. The course is a mix of video (filmed in my kitchen …

    Read more

  17. PHP 5.4 Timezone Error Message on Ubuntu


    Quick post because this tripped me up the other day: When you use a vanilla ubuntu 12.10 "Quantal Quetzal" installation, it will come with PHP 5.4, which is excellent news. However the default php.ini doesn't set the timezone, so you will see an error like:

    It is …
    Read more

  18. PHP at FOSDEM 2013


    In case you haven't been following, FOSDEM is a Free Software/Open Source weekend event held every year in Brussels - it's free to attend and it's huge! It's actually a network of smaller events, and this year that includes a whole day of PHP on the Saturday (2nd February 2013 …

    Read more

  19. 9 Magic Methods in PHP


    This post forms part of a series of articles about using PHP to do objected oriented programming, or OOP. They were originally published elsewhere but are no longer available at that location, so I'm reposting them here. Previously in the series was an introduction to OOP in PHP, in two parts

    The title is a bit of a red herring as PHP has more than 9 magic methods, but these will get you off to a good start using PHP's magic methods. It might be magic, but no wands are required!

    Read more

  20. A Little More OOP in PHP


    This post forms part of a series of articles about using PHP to do objected oriented programming, or OOP. They were originally published elsewhere but are no longer available at that location, so I'm reposting them here.

    This post follows an earlier entry introducing the basics OOP and what that looks like in PHP. This time around we'll look at some more advanced concepts and some more practical examples of building code, covering use of constructors and how to add access modifiers in to control how calling code can operate on your objects. We'll also show off how to create static methods and properties and, perhaps more importantly, illustrate applications of these features.

    Read more

  21. PHP at FOSDEM: Call for Papers


    There's an excellent open source conference that happens every year in Brussels in February, called FOSDEM. It consists of some main tracks, plus a series of sub-rooms, where various technical communities are given some space to use for whichever talks they choose; the schedules are centralised so that people can …

    Read more

  22. Introduction to PHP OOP


    This is the first in a series of articles about using PHP to do objected oriented programming, or OOP. They were originally published elsewhere but are no longer available at that location, so I'm reposting them here.

    Since the introduction of PHP 5 in 2004, PHP has had an object model worthy of that description and became a truly modern language for use on the web. Earlier PHP scripts would have been of the kind where, to quote from Alice's Adventures, you would "Begin at the beginning, and go on till you come to the end: then stop." Nowadays that very procedural approach is less common in PHP, so this article takes a look at some of the basic object oriented features available in the language and shows some examples of using them with code examples.

    Read more

  23. Installing PEAR Packages Offline


    As with most tools that work really well, I know very little about PEAR. I mean, I use it all the time, and I love it for getting all the extensions installed that I need for the work I do. But I've never made a PEAR package, or channel, and I've been happy to leave all those things in the hands of the smart people who have created what we have today.

    However I'm now in a situation where I might need to install PEAR packages with a connection that may or may not be working, and I'm not sure exactly which packages I might need, so I wanted to know whether I could use PEAR as my packaging tool even when I wasn't able to reach the usual channels. And guess what? I can!

    Read more

  24. Google OAuth 403 Response


    I had an issue this week on a system which has been working fine for a while, but stopped fetching some data from google's user account API. I was getting a 403 response from the API, which seemed odd. Luckily I was logging OAuth::getLastResponse() to my error logs (this …

    Read more

  25. Building a RESTful PHP Server: Output Handlers


    This is the third installment in my series about writing a RESTful web service in PHP (the previous entries are about understanding the request and routing it. It is probably the last one but there are a few other things I'd like to cover such as error handling, so I might keep adding to it, especially if I get any particular requests or interesting questions in the comments. So far we've covered parsing requests to determine exactly what the user is asking for, and also looked at routing to a controller to obtain the data or perform the action required. This post gives examples of how to return the data to the client in a good way.

    Read more

  26. PHP 5.4 Built In Webserver


    One of the big features arriving with PHP 5.4 is the addition of a built-in basic webserver for use in development environments. Quite a few of the other scripting languages have something like this so I'm very pleased to see it in PHP. Using a server like this makes it easy to quickly try out some scripts without needing to configure apache or really do anything much! I had to look up a few things to get started, so I thought I'd write them down for posterity.

    Read more

  27. Building A RESTful PHP Server: Routing the Request


    This is the second part of a series, showing how you might write a RESTful API using PHP. This part covers the routing, autoloading, and controller code for the service, and follows on from the first installment which showed how to parse the incoming request to get all the information …

    Read more

  28. Building A RESTful PHP Server: Understanding the Request


    Once upon a time, what seems like a lifetime ago, I was away for a couple of weeks, and I wrote a series of posts about serving RESTful APIs from PHP to keep my blog going while I was away. Fast forward a few years and those posts are outdated and still wildly popular - so I thought it was about time I revisited this and showed how I'm writing RESTful PHP servers today!

    In the first part of this (probably) 3-part series, we'll begin with the basics. It might seem boring, but the most important thing to get right with REST is parsing all the various elements of the HTTP request and responding accordingly. I've put in code samples from from a small-scale toy project I created to make me think about the steps involved (should I put the code somewhere so you can see it? Let me know). Without further ado, let's dive in and begin by sending all requests through one bootstrap script:

    Read more

  29. Handling SQL Errors in PDO


    I love PHP's PDO (PHP Data Objects) extension; it gives a consistent, object-oriented interface to handling all kinds of relational database backends. One thing that annoys me is that the MySQL driver for PDO defaults to a silent error mode which can make SQL errors tricky to spot!

    Read more

  30. ArrayAccess vs ArrayObject


    I help people qualify for Zend Certification and in the last few months I've had questions about both ArrayAccess and ArrayObject. This post is an attempt to illuminate both.

    Read more

  31. PHP OAuth Provider: Access Tokens


    I've been working with OAuth, as a provider and consumer, and there isn't a lot of documentation around it for PHP at the moment so I thought I'd share my experience in this series of articles. This relates to the stable OAuth 1.0a spec, however OAuth2 has already started to be adopted (and differs greatly). This article uses the pecl_oauth extension and builds on Rasmus' OAuth Provider post. This entry follows on from the ones about the initial requirements, how to how to handle request tokens, and authenticating users.

    Read more

  32. PHP Static Analysis Tool Usage


    Last week I tweeted a poll with the question "Which PHP static analysis tools do you regularly use?". These are the results:
    Static Analysis Tools Poll Results (phpcs 81%, phpmd 59%, phpcpd 59%, phploc 41%, phpdpd 48%)

    My interest was mostly because I'm working on a book chapter which includes some static analysis content, and there are a couple of these tools that I include …

    Read more

  33. Shortening URLs from PHP with Bit.ly


    I've been looking around for a really simple API that would be a nice place to get started using web services from PHP - and I realised that bit.ly actually fits the bill really well. They have straightforward api docs on google code, and it's also a pretty simple function!

    Here's a simple example, using PHP's curl extension, of using the bit.ly API to get a short URL, using PHP (you need an API key, but if you're a registered bit.ly user, you can log in and then find yours at http://bitly.com/a/your_api_key).

    Read more

  34. PHP Returning Numeric Values in JSON


    When I wrote about launching a prototype of a new joind.in API, quite a few people started to try it out. My friend David Soria Parra emailed me to point out that many of the numbers in the API were being returned as strings. He said:

    It's just a …
    Read more

  35. PHPMyAdmin Designer View


    This week I've been using phpMyAdmin for what feels like the first time in years. I'm happier at the command line, but needed some graphical representation of information and easy ways to export example queries for the book I'm working on. I noticed that phpMyAdmin now has a Designer tab, which shows relationships between tables and allows you to define them.

    |image1|

    Read more

  36. Gearman Priorities And Persistent Storage


    I have been writing a bit about Gearman lately, including installing it for PHP and Ubuntu, actually using it from PHP and also how I use persistent storage with Gearman. I'm moving on to look at adding jobs of different priorities.

    I use Gearman entirely as a point to introduce …

    Read more

  37. PHP North West 2011


    We might still be in the thick of the summer conference season, but there's an event coming up this autumn which has me very excited: PHP North West 2011.

    This is a regional PHP conference based in Manchester, UK, and I've been involved with it since it began (I'm surprised to find this is our fourth edition, it still feels like a shiny new adventure!). This year the dates are 8th and 9th of October and with an added tutorial day on the Friday, it is bigger (and of course better) than ever. In case you missed the announcements, here are the main things you need to know:

    Read more

  38. PHP|Tek and a Hackathon


    A couple of weeks ago I had the pleasure of speaking at php|tek in Chicago. As usual there were a few great talks, a good crowd of new folk and a selection of established speakers all at the event and I had a great time. This year, there was one particular highlight that I wanted to share: the hackathon.

    Read more

  39. PHP OAuth Provider: Authenticate User


    I've been working with OAuth, as a provider and consumer, and there isn't a lot of documentation around it for PHP at the moment so I thought I'd share my experience in this series of articles. This relates to the stable OAuth 1.0a spec, however OAuth2 has already started to be adopted (and differs greatly). This article uses the pecl_oauth extension and builds on Rasmus' OAuth Provider post. This post is the third in the series, following on from the ones about the initial requirements and how to how to handle request tokens.

    This phase is probably the most familiar to us as developers, as it's simply a login form. The consumer will send the user to us at the URL we provided in the request token, and the user will have the request token key as a parameter. The access control on this page will look the same as on the rest of the website; if the user has a session already then the page is displayed, otherwise they must be logged in to see it.

    Read more

  40. PHP OAuth Provider: Request Tokens


    I've been working with OAuth, as a provider and consumer, and there isn't a lot of documentation around it for PHP at the moment so I thought I'd share my experience in this series of articles. This relates to the stable OAuth 1.0a spec, however OAuth2 has already started to be adopted (and differs greatly). This article uses the pecl_oauth extension and builds on Rasmus' OAuth Provider post.

    The consumer requests a request token (see my earlier post about consuming OAuth), and as a provider, we need to handle that request. In my example, I chose to pass the variables as GET parameters, but you could adapt this to handle POST variables or information contained in HTTP headers.

    Read more

  41. A Prototype API for Joind.In


    Following the principle of "release early, release often", I put live a very early version of the v2 API for joind.in today (so that I can use it in another project!). I haven't updated the documentation yet but in case anyone was thinking of consuming data from joind.in …

    Read more

  42. Idiot-Proof Deployment with Phing


    disclaimer: I am not underestimating the universe's ability to produce idiots, the point I'm trying to make is that I haven't managed to make any deploy mistakes using this approach. Yet.

    Once upon a time, a long time ago, I went onto a conference stage for the very first time and said that I thought I might be the world's ditsiest PHP developer. I actually still think that is pretty true, and if you work with me then you will know that I mostly break and fix things in approximately equal measure. With this in mind, when I launched my own product recently (BiteStats, a thing to automatically email you a summary of your analytics stats every month), I knew that I would need a really robust way of deploying code. I've been doing a few different things for a few years, and I've often implemented these tools with or for other organisations, but I don't have much code in production in my own right, weirdly. I decided Phing was the way to go, got it installed, and worked out what to do next.

    Read more

  43. PHP OAuth Provider: Initial Requirements


    I've been working with OAuth, as a provider and consumer, and there isn't a lot of documentation around it for PHP at the moment so I'm sharing my experience in this series of articles. This relates to the stable OAuth 1.0a spec, however OAuth2 has already started to be adopted (and differs greatly). This article uses the pecl_oauth extension and builds on Rasmus' OAuth Provider post.

    Read more

  44. PHPComCon Web Services Tutorial


    If you are attending my Web Services tutorial at PHP Community Conference (if not, probably nothing for you to see here) later this week then you might like to download the sample code. I'll be referring to this and inviting you to "play along" as I go creating services during …

    Read more

  45. Script for Database Patching at Deploy Time


    I've written before about a simple way of patching database versions and there's a much more comprehensive article from Harrie on TechPortal as well. I often find though that projects with patching strategies are missing the scripts to apply these automatically when the code is deployed, so I thought I'd share mine.

    My current project (BiteStats, a simple report of your google analytics data) uses a basic system where there are numbered patches, and a patch_history table with a row for every patch that was run, showing the version number and a timestamp. When I deploy the code to production, I have a script that runs automatically to apply the patches.

    Read more

  46. Invalid Protected Resource URL in Pecl_Oauth


    I had a funny (funny weird, not funny haha) problem the other day when working with pecl_oauth in PHP to talk to a service. I'd gone through all the handshaking steps, got the acces token and was ready to start talking to the service itself. However when I tried to …

    Read more

  47. Downgrading a PECL Module


    Recently I saw some weirdness in an existing application when I upgraded a PECL module that the application depended on. To figure out if that really was the problem, I wanted to downgrade the module to its previous version. There is no opposite command to "upgrade" but you can instruct …

    Read more

  48. Summer PHP Conferences


    Conference season approaches and in May I'm on a trip to take in two of the most high-profile events in the PHP conference calendar: DPC in Amsterdam (19-21 May) and php|tek in Chicago (24-27 May). The two events have historically been a few weeks apart and I've always complained at having all the fun for the year in such a short space of time - but this year the events are literally back-to-back, there are a small number of speakers attending both and we're pretty much all on the same flight from Amsterdam to Chicago!

    Read more

  49. Github To Jira Bug Migration Script


    Recently I mentioned the github API and retrieving issues from it. This is because the joind.in project agreed to move its issue tracking from github to JIRA, since the issue tracker on github is far from feature complete. I migrated only our open issues, and comments (and the comments ended up a bit weirdly formatted on the other end but this was the best they could do). It was nothing pretty or clever but in case it's useful to someone else, here's the script:

    Read more

  50. The PHP Community Conference


    Next month, I'll be heading out to Nashville for the PHP Community Conference. This is wildly exciting for a few reasons; this is the first in what I hope will be many episodes of this event, and I'm speaking in a lineup that blows every other conference schedule I've seen …

    Read more

  51. Dealing with MySQL Gone Away in Zend Framework


    I wrote recently about having gearman in my application, however I have been seeing problems with the long-running PHP worker scripts. My logs had entries like this:

    SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
    

    The worker is a Zend Framework application, run from the CLI, and it …

    Read more

  52. A Tale of Two User Groups


    This post is probably only relevant if you're interested in PHP and UK-based. In the next few weeks I'll be at some user groups that I don't manage to visit often. On Thursday, 3rd March, I'll be at PHP East Midlands to talk about Design Patterns. On Tuesday, 12th April …

    Read more

  53. PHP Days and PHP Unconference Europe


    I spend most of the last week or so over in Manchester for a combination of excellent PHP-related events: PHP Unconference Europe on Saturday and Sunday (with a rather excellent warm-up party on Friday night!), followed by the PHP Days training on Monday and Tuesday.

    Read more

  54. Using Gearman from PHP


    I've introduced Gearman into a project I'm working on, and since a few people have asked I thought I'd share my experiences. Basically, this application generates some PDFs from a variety of data sources, makes images, and emails it. Since the whole data processing, image handling, PDF generation process is fairly heavy, I'm putting the requests to generate these onto a gearman queue and having some workers process the jobs. The eventual aim is to bring up EC2 instances (or php-specific cloud hosting perhaps? Recommendations gratefully received!) to do this work but right now I have one worker and it's all on one server.

    Read more

  55. Ticket Giveaway: DC4D:2


    Did you know that there's a second edition of the DayCamp 4 Developers event coming up in March? The daycamps are a chance for developers to invest a day in their careers, wherever they are, focussing on the soft skills we need to grow beyond coding monkeys and into accomplished …

    Read more

  56. 27 Ways To Be A Better PHP Developer


    Last weekend I was at the PHPBenelux 2011 conference in Antwerp. As conferences go it was pretty awesome, completely surpassing my expectations in many ways! The schedule was published in advance but I somehow forgot how many friends I have in that part of the world and what a wonderful …

    Read more

  57. Number System Primer


    I regularly teach the Zend Certification course and one thing that really splits those with a Computer Science background from those without is handling number systems other than decimal. Personally I don't see it as a major omission, I certainly don't work with those systems very often in web development! However, ZCE includes decimal, binary, octal and hexadecimal numbers in its syllabus, so I always make sure to stop and teach it. Here's a quick round-up of how they work:

    Read more

  58. Preparing for ZCE 5.3


    |image1|Recently I have been getting to grips with the ZCE since it was updated to take account of PHP 5.3. In the last few weeks I've both passed the certificate myself and also taught Zend's certification training course as a classroom course at NTI Leeds. I thought I'd share my top tips for preparing for taking the ZCE - getting to the standard, last-minute preparations, and also some tips for surviving the day itself (disclaimer: everyone sitting the ZCE signs a declaration not to disclose the contents of the exam, so I can't actually tell you the questions, sorry!)

    Read more

  59. ZCE 5.3: Worth Doing?


    I recently took (and passed!) the ZCE 5.3 certification. I've been a Zend Certified Engineer (5.0) for nearly 3 years, and I know a lot more about PHP today than I did then. Today I speak and write various things related to PHP, and also teach all sorts of topics including PHP certification. I thought I'd share my thoughts on the ZCE, and I'll write a follow-up post on how to prepare for it.

    Read more

  60. Declaring Static Methods in PHP


    I was confused recently to realise that I had accidentally called a static method in PHP dynamically from another part of my code; I expected PHP to output warnings when this is done. On closer inspection I discovered that:

    • Static functions can be called dynamically

    • Dynamic functions generate an E_STRICT error if called statically

    This made a lot more sense when I thought about it a bit more and wrote some toy code:

    Read more

  61. Retrieving Data from Google Analytics API using PHP


    Recently I started playing with the google analytics API, looking at ways to bring analytics onto dashboards and generate simple reports from the data in there. Very shortly after I started to look at the API, I had working data retrieval, so I thought I'd share my experiences (and code!).

    Read more

  62. PHPUnconference Comes to Manchester


    I'm very excited to hear that the PHPUnConference Europe (@phpuceu on twitter) is coming to Manchester on February 19th and 20th! So excited, in fact, that I've rushed out and bought my ticket (for a whole £40, that's a good investment in my opinion). The event brings together the PHP …

    Read more

  63. 3 Ways to Access a Namespaced PHP Class


    After what felt like years of debate over the notation to use for PHP's namespaces, it seems like the feature itself has had relatively little use or attention since it was actually implemented in PHP 5.3. We're all used to working without it but using it does make code neater.

    Take this example (in a file called namespaced-class.php)

    Read more

  64. Keynoting at PHPBenelux


    Have you got your tickets for PHPBenelux yet? If not then I hope you will do so because I would love to see you there!

    I'll be delivering a keynote at the PHPBenelux Conference in Antwerp in January alongside my good friend Ivo Jansch. Between us we've got plenty of …

    Read more

  65. Google Analytics Accounts API


    I'm working with Google Analytics at the moment, to pull information about web traffic from analytics into another system. Google have excellent APIs and that makes this job much easier. I'm using pecl_oauth to authenticate users against their google accounts (see my post about using OAuth from PHP), but even after I have a valid google user, working out which analytics accounts they have access to and how to refer to them is a puzzle in itself, so I thought I'd share what I learned.These examples use pecl_http, since I have control of my platform and I find it easy to work with. I've tried to write this with explanations of the overall process in between the code snippets so hopefully this makes the process clear whether or not you will use exactly the same implementation.

    Read more

  66. Fetching Namespaced XML Elements With SimpleXML


    Recently I was working with some google APIs and needed to retrieve some namespaced elements from the result set. This confused me more than I expected it to so here's my code for the next time I need it (and if you use it too, then great!)

    I was reading from their analytics data feed API, this returns a few key fields and then multiple <entry> tags, each with namespaced children. The entry tags look something like:

    Read more

  67. Be My Guest for DayCamp4Developers


    This weekend I'm presenting at DayCamp4Developers, a virtual event comprising a full day of workshops for developers of all disciplines to improve their soft skills and move forward in their career. I get to attend since I'm speaking, but even after I've given my slot I know I'll be online …

    Read more

  68. Deprecated Methods in Pecl_Http


    I'm a big fan of pecl_http, which I use quite often as I work so regularly with APIs and on systems where I can get it installed, it's much nicer than PHP's curl extension. Recently though I've been often seeing output which reads:

    Function HttpRequest::addRawPostData() is deprecated
    

    It isn't …

    Read more

  69. Best Practices in API Design: Audio and Slides


    Earlier in the year I gave a talk at PHP UK in London entitled "Best Practice for API Design". I really enjoyed giving this talk, since I work so much with APIs and enjoy sharing my ideas. The audio is now online so if you missed the talk, feel free …

    Read more

  70. PHPNW10: Teach a Man to Fish


    Last weekend I gave a talk at PHPNW10 in Manchester, entitled "Teach a Man to Fish". This is a keynote about teams and how to use the resources around you to create a team where individuals and the whole team continues to learn and develop. The slides are not very …

    Read more

  71. Authenticating with OAuth from PHP


    I've been looking into OAuth recently and really like what I see, so I started looking at actually starting to play with something that uses it (and isn't twitter). In the pursuit of this, I spent some time walking through the process of how to actually authenticate using OAuth, as a client. I chose Yahoo!'s service, because they have some fabulous developer documentation and have a standard OAuth implementation. Although you don't strictly need any special libraries to handle OAuth, that would be a bit like decoding XML with a regex, so I used the OAuth Package from PECL. For others (including me after I've slept), here's an outline of the process.

    Read more

  72. Speaking at PHP London, October 2010


    In October I will be speaking at the PHP London user group on Thursday 7th at the Theodore Bullfrog pub in London. I'm giving a new talk called "The Source Control Landscape", looking at the products currently available in the source control arena, how the distributed systems have changed the …

    Read more

  73. Day Camp For Developers


    I'm very excited by a new virtual event which is coming up, and at which I have been invited to speak. This is Day Camp 4 Developers, an event aimed at developers of all disciplines and focussing on the soft skills that sometimes we miss in our pursuit of technical excellence. I'll be giving my talk "Open Source Your Career", which looks at how being involved in open source outside of work can improve our professional development. The event is on November 6th, and you can buy tickets here.

    There are a number of things that really appeal to me about this event:

    Read more

  74. Working with Web Services - Froscon 2010


    This weekend I'm at froscon in Germany, giving two talks. One had no slides (but may have video, if I see it then I will post the link here) and the other was "Working with Web Services" which I gave this morning in the PHP room. My slides are here …

    Read more

  75. CodeigniterCon 2010


    I spent the weekend in Bristol so I could attend cicon2010 - a volunteer-organised first-edition conference around the CodeIgniter PHP Framework. It started on Saturday morning with registration at 8:30am and the first talk at 9am. When I arrived (at about ten to nine) there were no organisers there. I …

    Read more

  76. Leeds PHP User Group


    There's a new PHP user group which has sprung up in my home town of Leeds - Leeds PHP. So far it has met twice and its been a good crowd both times. Our meetings at the moment are at Brewery Tap, which is not only the closest pub to the …

    Read more

  77. Keynoting at PHPNW10


    I'm slightly surprised but mostly wildly excited to announce that I'll be the keynote speaker at the PHP North West Conference in October. It is held in Manchester in the UK, which is about an hour from where I live in Leeds, so it is definitely my "home" conference, and …

    Read more

  78. SugarCRM 6 Installation Error


    I noticed that SugarCRM have just released their new version 6.0.0, and since my sugarcrm installation is madly out of date and I'm about to start using it again, I thought I'd just throw the old one away and install from scratch. I had no problems until I …

    Read more

  79. Giving Up The Day Job


    The In-A-Nutshell Version I have resigned from Ibuildings. I will complete my notice period here in a couple of weeks and then move on to a wide and interesting variety of well-paying freelance assignments covering development, consultancy, writing and speaking. Hopefully.

    The slightly longer version really is this. Two and …

    Read more

  80. Retrieving Product Attributes from Magento's V2 API


    I've been working with the API for Magento in recent weeks and I had a bit of a struggle explaining to the V2 API which attributes of a product I wanted to retrieve. Actually I had issues talking to the V2 API at all, but that's a different post so …

    Read more

  81. Speaking at FrOSCon


    In August I'll be attending FrOSCon in Germany for the first time, and speaking there. It's a mixed technology conference, with rooms set aside for separate scheduling for various projects and technologies. I'll be speaking in the PHP room, delivering "Working With Web Services", a talk which covers how to …

    Read more

  82. PHPNW10: Call for Papers


    It's official, PHP North West 2010 is definitely happening ... and for that we'll need some people to pop along and give a talk! As in previous years, we'll first of all deal with selecting the papers for our main conference day, 9th October. Talks can be 60 minutes or 30 …

    Read more

  83. Accessing the Magento V2 API


    Recently I've been working with Magento at work, and in particular with integrating with their API. Now, before I say anything more, I must say that I am always pleased when I see that these products do include some kind of API. The Magento one is a bit interesting, although …

    Read more

  84. Your Open Source Stories


    In this post, I am asking for your help and input, although it might seem like a post about nothing in particular to begin with. Please keep reading!

    Last month, I gave a talk at TEK-X entitled "Open Source Your Career". Personally I think that a lot of the high …

    Read more

  85. DPC Retrospective


    I spent most of last week and the weekend in (rather rainy) Amsterdam for the Dutch PHP Conference. This is an event that is in its 4th year, although I was attending for only the 3rd time. Two years ago, I spoke at DPC - my first conference talk. This year …

    Read more

  86. Magic Methods on Think Vitamin


    I'm happy to announce that my new post 9 Magic Methods for PHP is live on Think Vitamin this morning. I've written a series of posts about OOP for the site, with a few more to come, and these "underscore-underscore" methods make for some very neat tricks with PHP, which …

    Read more

  87. The Unavoidable PHPWomen


    I'm subscribed to a number of women-in-tech mailing lists because, well, I'm a woman in tech. Every few months or so a thread will come round about a technical conference with no female speakers. The issues around this are many, lengthy, and not something I want to write about here …

    Read more

  88. DPC10 Has an Uncon


    As the Host of the Dutch PHP Conference this year, you can imagine I'm squeaky-excited about the whole event. This story goes right back to last year though, when someone (Ivo? Cal? I don't know who) conceived the idea of including an unconference in this year's event. DPC is easily …

    Read more

  89. Web Services Tutorial on TechPortal


    I'm very pleased to say that today I have a a post about web services for PHP developers published on techPortal! OK so I edit techPortal so this is the written equivalent of introducing myself as a speaker but I enjoyed writing the post and I hope it'll be a …

    Read more

  90. TEK-X: Conference Report


    Its been quiet around here recently, partly because I have been really busy and partly because I was in Chicago last week for the wonderful TEK-X conference. It would be very cool to get to go skipping around the world to conferences, however people paying for my airfares do seem …

    Read more

  91. Podcast: How and Why to Become a Speaker


    This is a podcast version of my rant-in-the-bar advice to anyone thinking about speaking, or wondering how to begin. Personally I think many more people could be sharing their expertise at events than actually do so, and I would really like anyone who wants to get involved to have a …

    Read more

  92. Accessing the Magento Web API


    I've been working with the Magento Web API lately, and the first problem I ran into was actually getting access to it. Contrary to its reputation, I found some perfectly good documentation outlining how to connect to the service and use it. I thought I was on to a winner …

    Read more

  93. Speaking at PHPNW May


    Next week I'm speaking at the PHPNW User Group in Manchester on Tuesday Evening, 4th May - full details of the event are on upcoming.org. The talk isn't directly about PHP though; I'll be giving my "Open Source Your Career" talk, discussing how contributing to the community can really help …

    Read more

  94. Wordpress Plugin for Joind.In


    In case anyone thinks I've gone joind.in crazy after already writing about its import functionality this week, I really haven't. Its just that some months of pulling a few things together have finally bourne fruit and so I can actually write about them now they are done! The good …

    Read more

  95. Importing Data to Joind.In


    Update! This post is now outdated - the import functionality on joind.in has been replaced with a CSV import.

    As a conference organiser I work extensively with the site joind.in, which allows attendees to comment on sessions at a conference. Recently the site has also started supporting sessions with …

    Read more

  96. OOP Articles on Think Vitamin


    I've been working on a series of articles for Think Vitamin, the Carsonified blog, about OOP in PHP5. In fact I'm wildly excited about this, partly because I love to write and partly because its such a cool site to write for! The first two installments are now live:

    Read more

  97. Speaking at PHPWM: April 6th


    Next week I will be making the trip to my original home town of Birmingham to speak at the PHP West Midlands User Group, on 6th April. They are an active user group and although I haven't managed to organise myself to attend their meetings before, I do keep meeting …

    Read more

  98. PHP London Conference: In Review


    I'm really late with this post, but I wanted to write about the PHP London Conference which was held in London last Friday. The event was in a great venue and had hoards of people - this was my fourth year in attendance!! They do, however, have the longest twitter tag …

    Read more

  99. An iPhone App for Joind.in


    Recently I've been doing some bits and pieces with the open sourced event feedback site joind.in, including some work on its API to facilitate development of an iphone app. As a conference attendee, speaker and organiser, I use this site a lot for the various events that I am …

    Read more

  100. PHP and JSON


    This is a quick outline on working with JSON from PHP, which is actually pretty simple to do. This post has some examples on how to do it and what the results should look like. JSON stands for JavaScript Object Notation, and is widely used in many languages (not just …

    Read more

  101. PHPBenelux: Recap


    Last weekend I was privileged to speak at the inaugural PHPBenelux conference in Antwerp, Belgium. Since Ibuildings is partly a dutch company I combined this with one of my regular trips to meet with the people there, visiting both our offices in the Netherlands and catching up with a bunch …

    Read more

  102. Speaking at SuperMondays


    I'm delighted to announce that the people at SuperMondays in Newcastle have invited me to speak at their event on 22nd February. For this I'll be writing a new talk entitled "PHP and Web Services: Perfect Partners" - looking at how PHP is a good fit for web services and how …

    Read more

  103. Stopping CodeIgniter from Escaping SQL


    I'm adding some small features to the API for joind.in when I have a moment and this is my first experience of working with CodeIgniter. I've been getting increasingly impatient with its tendency to try to escape my SQL code for me - this is a really useful default feature …

    Read more

  104. Speaking at PHPNW February


    If anyone is able to make it to the PHPNW User Group meet in Manchester next Tuesday 2nd February - I'm the speaker there! I'll be giving a talk entitled "Best Practices for Web Service Design", which covers lots of information about web services and how to write one that your …

    Read more

  105. Three Ways to Make a POST Request from PHP


    EDIT: A more modern take on this topic is here http://www.lornajane.net/posts/2018/make-a-post-request-from-php-with-guzzle

    I've been doing a lot of work with services and working with them in various ways from PHP. There are a few different ways to do this, PHP has a curl extension which …

    Read more

  106. Dutch PHP Conference: Call for Papers Now Open


    There is an announcement over on the DPC (Dutch PHP Conference) website - their Call for Papers is now open (so go submit!). What's remarkable about this announcement is that I wrote it, and its signed with my name and the words "Your host this year" ... yes, I'm hosting DPC.

    I'm …

    Read more

  107. Speaking at TEK·X


    I'm always pleased to be accepted as a speaker but I'm especially delighted to hear that I'm speaking at TEK·X in Chicago this May. They had a crazy number of submissions for the number of slots available, and I really wanted to go since I spoke there last year …

    Read more

  108. Speaking at PHPUK


    I'm pleased to announce that this year I'll be speaking at PHPUK in London in February. I've attended this conference for the last three years, and attend its related user group, PHP London whenever I can find a reason to be in London on the right day. My talk this …

    Read more

  109. PHP Advent 2009


    I'm very proud to be able to say "I'm a PHP Advent author" - I've been invited to take part in this year's event and my article One Step at a Time is now live!

    My post this year is aimed as a reminder to us all that we can all …

    Read more

  110. Speaking at PHP Benelux 2010


    I'm delighted to announce that I'm speaking at the inaugural PHP Benelux Conference, to be held on Saturday 30th January in Antwerp, Belgium. The talk will be "Passing the Joel Test in the PHP World"; I gave this talk PHPNW09 in October and it was well-received there, so hopefully I …

    Read more

  111. Conference Biography Help


    I've been updating my conference details recently, in order to submit my talks for php|tek in Chicago (the call for papers closes on Monday - get your submissions in!). One thing which I struggled with is my biography, I used to have a paragraph which sort of said "Lorna is …

    Read more

  112. Announcement: Editor-in-Chief of Ibuildings Techportal


    A few weeks ago I got a call from my employers, Ibuildings, asking me how I felt about changing my role a bit and taking on some of the functions of our PCE (PHP Centre of Expertise). This area of the company does some super-cool stuff and so I said …

    Read more

  113. PHP Barcelona 2009: Round-Up


    I spent the last few days in sunny Spain at the PHP Barcelona conference as a speaker. Happily the most reasonably-priced flights gave me some time while I was there to get into the city, I was very keen to see it because I haven't been before. The trip was …

    Read more

  114. Add a heartbeat method to your service


    Over the summer months I wrote a series of posts about designing APIs in general, and web services in particular. This included posts on status codes for web services, error feedback for web services, auth mechanisms for web services, saving state in web services and using version parameters with web …

    Read more

  115. Book Review: PHP Team Development


    I was recently contacted by Packt Publishing asking if I would review a copy of one of their new titles - PHP Team Development. I happily agreed and the book promptly arrived in the post (just in time for me to take it on holiday and read it by the pool …

    Read more

  116. PHPNW09: In Conclusion


    Last weekend was the second annual PHP North West Conference, held at Manchester Conference Centre and attended by 200 people. We kicked off our weekend on Friday night, with a pre-conference social in a pub near to the conference venue. There wasn't really enough space but it contained geeky things …

    Read more

  117. PHP Code Sniffer Tutorial on Techportal


    I'm pleased to announce that a my tutorial on using PHP Code Sniffer is now available on techportal. I had the opportunity to work with PHPCS in a recent project and thought it was a great tool, and looked more closely into how it works and can be configured. I …

    Read more

  118. Joel Test talk at PHPNW09


    Thanks to a wonderful combination of slideshare actually working and conference wifi being rather excellent, the slides from my talk "Passing the Joel Test in the PHP World" are now online, you can find them at http://www.slideshare.net/lornajane/passing-the-joel-test-in-the-php-world.

    If you were there, please leave feedback for …

    Read more

  119. PHPNW09: Weekend of PHP and Fun


    Having just put the finishing touches to the schedule for PHPNW09, I'm realising just how excited I am about this event coming up in less than a fortnight. This is the second year we've run the event, and its bigger and better than last year - and I know what a …

    Read more

  120. Speaking at PHP Barcelona


    I'm delighted to announce I'll be speaking at the PHP Barcelona Conference in October. This is a new speaking topic for me, although I've been working and blogging in this area for a while, with a talk entitled "Working with Web Services". Its a very technical session looking at different …

    Read more

  121. Speaking at PHPNW09


    I have experience of PHP conferences from all possible angles - as an attendee, as a speaker and as an organiser. At PHP North West this year I will be taking this to new heights and combining all three roles into a single one-day conference. I have a speaking slot at …

    Read more

  122. PHPNW: Schedule and Crowd-Sourcing


    Plans for the second annual PHP North West conference (Manchester, 10th October) are coming along rather nicely, so I thought I'd share an update and some headline news. First of all - tickets cost 50 GBP + VAT. This is about 57 euros or 81 dollars. I don't know where else you …

    Read more

  123. PHPWomen Merchandise


    A few weeks ago, phpwomen.org put out an announcement about merchandise. When we first started the group (almost 3 years ago, believe it or not) we printed t-shirts and gave them out at conferences. Once the various founder members and a few benefactors had paid for a set of …

    Read more

  124. Adding PUT variables to Request Object in Zend Framework


    When I wrote recently about testing web services within Zend Framework, I missed out a really key piece of information! I didn't explain how I was reading the PUT vars in my controller code in the first place - so I'll rectify that omission now.

    Its very simple: I have extended …

    Read more

  125. Using Zend_Test for Web Services


    Recently I had cause to develop a web service and so I wrote some tests to go along with it - or I was about to. When I looked at the asserts available in Zend_Test, they were all geared towards HTML/CSS output - but we can test just as effectively on …

    Read more

  126. 5 Ways to Make Friends at a Technical Conference


    These are my top tips for getting along and meeting new people at a technical conference.

    Take an extension cable

    Conferences are notorious for having too few and too short power leads, and everyone needs to recharge laptops, especially in hands-on sessions like tutorial day. Having an extension cable will …

    Read more

  127. PHPUnit with Zend_Controller_Action_Helper


    I'm currently working on a REST service built in Zend Framework and I ran into problems very quickly - when I tried to write the first unit test for the first action in fact! PHPUnit was just dying when I asked it to dispatch() any URL which didn't return HTML, it …

    Read more

  128. PUTting data fields with PHP cURL


    This is a little post about how to PUT multiple data fields using the PHP cURL extension. Why I wanted to do this in the first place is beyond the scope of this post, since its quite a long story. The curl command line allows data fields to be sent …

    Read more

  129. PHPNW: Site, Tickets and CfP


    The date for PHPNW was announced a few weeks ago as Saturday 10th October 2009, and now we've got all the official bits and bobs to go with it! In outline:

    The website: http://conference.phpnw.org.uk

    Tickets: http://conference.phpnw.org.uk/register. Early bird pricing until September …

    Read more

  130. Status Codes for Web Services


    This the last entry in a mini series on points to consider when designing and building web services. So far there have been posts on error feedback for web services, auth mechanisms for web services, saving state in web services and using version parameters with web services.

    Unlike the other …

    Read more

  131. Version Parameters for Web Services


    This is a mini series on points to consider when designing and building web services. So far there have been posts on error feedback for web services, auth mechanisms for web services and saving state in web services.

    When designing a service API, there are lots of things you can …

    Read more

  132. Memcache Follow-Up Article on Techportal


    Today techportal published a new article of mine on their site - New Memcached Extension for PHP. Its a sequel to the article I wrote for them earlier in the year entitled Getting Started with Memcache. At the same time I wrote that first article, Andrei Zmievski released a new extension …

    Read more

  133. Dutch PHP Conference


    Often when I attend PHP conferences, I blog as I go along, upload a few photos and generally share with others who aren't in attendance. At DPC this year I completely failed to do any of the above - no excuses, I was just having too much fun :)

    I travelled over …

    Read more

  134. DPC09: Looking forward to the Dutch PHP Conference


    This time next week I'll be full of new ideas and enthusiasm as the Dutch PHP Conference 2009 will have ended. Last year was the first time I attended the event and I have memories of a great crowd and some fabulous sessions, also my first experience speaking at a …

    Read more

  135. PHPNW09 - PHP Conference in Manchester


    Last night at the PHPNW user group we announced this year's conference - PHPNW09. We don't have a lot of detail but here is a run-down of all the information I have:

    Read more

  136. php|tek 2009: Quick Round-Up


    Last week I was at the php|tek 2009 conference in Chicago. This was a really exciting trip for me - only my second conference as a speaker and the first time I'd attended any of the MTA conferences. I was absolutely delighted to have three of my sessions accepted into …

    Read more

  137. Linux-Fu For PHP Developers


    The slides from my talk at php|tek are now online - Linux-Fu for PHP Developers. Thanks to everyone who attended and left feed back for me on joind.in. Feel free to leave a comment if you were there or if you have any questions about the slides!*

    * Unless the …

    Read more

  138. php|tek 2009: Tutorial Day


    I'm currently attending the php|tek conference in Chicago. Today is tutorial day, and I delivered a half-day session with Matthew Weier O'Phinney of Zend. Our session was entitled "Practical SVN for PHP Developers" and the slides are online. The session seems to have gone over pretty well - this is …

    Read more

  139. PHPNW TestFest


    Yesterday saw the PHP North West User Group hold their first Test Fest in Manchester. As a relatively young user group (at less than a year old) with not a single @php.net email address between us, this was an ambitious venture. Scott MacVicar very kindly offered to come and …

    Read more

  140. Looking Forward to php|tek


    This year I'm excited to be heading to the php|tek conference in Chicago (May 19th to 22nd), and even more excited to be going there as a speaker. Over the course of the conference I will present or co-present three sessions; one tutorial and two talks.

    The tutorial session …

    Read more

  141. Testing PHP


    I'm organising the PHP Test Fest that is happening in Manchester next weekend, and in preparation I decided it was high time to sit down and figure out what testing PHP is all about. People kept telling me it was easy but I had no clear picture of how all …

    Read more

  142. Auth Mechanisms for Web Services


    Having been involved in quite a few service-related activities in the last year or so, I've been having a few thoughts about what I've learned from this and what decisions I make when designing a service. Hopefully there will be a few of these posts - but to start with, I'm …

    Read more

  143. Speaking at phpGG


    Next week I'm passing through the Ibuildings office in Utrecht on business. During the 36 hours or so that I'll be there, the Dutch PHP User Group, phpGG have kindly extended an invitation to speak at a one-off user group meeting they are arranging. Well, I have a talk that …

    Read more

  144. DPC - Dutch PHP Conference June 2009


    I keep getting asked about the Dutch PHP Conference so here's a quick outline about the event.

    The conference is in Amsterdam, on 11th to 13th June 2009. Thursday 11th is the tutorial day, Friday and Saturday are the main conference days. The schedule is entirely in English and it …

    Read more

  145. PHPNW Test Fest Event - May 9th 2009


    The PHPNW user group are taking part in this year's PHP Test Fest. Our event will be on 9th May - you can sign up to attend (limited places so do let us know) on the upcoming page for this event: http://upcoming.yahoo.com/event/2299548/

    The idea behind Test …

    Read more

  146. PHP Training Courses from Ibuildings


    |image1|Ibuildings (my employers) have announced their public courses in the UK - this is very exciting as its been in the planning for a while and of course it means more people can be using PHP to build excellent applications. There are more details on the Ibuildings site of the …

    Read more

  147. Sortable Views in Drupal 6


    I'm completely new to Drupal, I've heard a lot about it and I know some evangelists, but I've never had reason to use it - until now. So, I might be using the wrong words for things or not explaining things too well, but I'm going to record this because it …

    Read more

  148. PHPUK Conference (London) 2009


    Last week I was in London for the annual PHP conference held by the PHP London User Group. One thing that makes this conference different from any others I've attended is that its organised by volunteers. Another thing which makes it unique is that I have attended more than one …

    Read more

  149. techPortal - new PHP developer resource


    There is a new resource for PHP developers available from today - techPortal from Ibuildings. First, I must add the disclaimer - Ibuildings are my employers, so I've known about this project for a while. I helped set up the site and the first tech article on there is mine. With those …

    Read more

  150. PHPWomen "I am" Competition


    PHPWomen have announced a new competition on their website - to complete a sentence "I am a phpwomen member because..." in a post on their forums to win a prize! Already people are posting and the prize is a certificate to spend at php|architect's site. Pop over to the forums …

    Read more

  151. DPC 2009 - Currently Calling for Papers


    The Call for Papers for the Dutch PHP Conference 2009 is currently open - with only a week left, it closes next week on Friday 13th. I went to this conference in Amsterdam for the first time last year, when I was still relatively new in my job at Ibuildings. This …

    Read more

  152. OSCON CfP


    The OSCON Call for Participation is open for another couple of days and I've finally got over my nerves and submitted some talks to them. I haven't been to this conference before, and couldn't afford to send myself - but I took a look at last year's schedule and knew I …

    Read more

  153. Speaking at php|tek


    I'm delighted (and somewhat stunned) to announce that I'll be speaking at php|tek in Chicago this May - you might also like to see the full timetable. This is one of the big events of the year and I was so desperate to attend that I gave the organisers a …

    Read more

  154. Published in php|architect


    I'm very excited to be able to say that I was published in php|architect, in December's issue. I had the /etc column, where I wrote a bit about phpwomen.org and what we're up to these days. As I've wanted to write for them for ages, I was very …

    Read more

  155. 7 Things


    It doesn't seem like that long since the last time this happened, but apparently its been two years and the "tell us something new about yourself" meme has come around again. I was trying to ignore it but now I've been tagged by Matthew, Davey and Kathy I guess I …

    Read more

  156. Book Review: RESTful PHP


    I was recently contacted by the friendly people at Packt Publishing to ask if I'd like a copy of a new addition to their catalogue - RESTful PHP Web Services
    , by Samisa Abeysinghe.

    When I received and unpacked the book, it was a little lighter than I had expected, however REST …

    Read more

  157. PHP Advent Article Published


    I was wildly excited a few weeks ago to receive an email inviting me to be one of the contributors to this year's PHP Advent. Actually the biggest kick was seeing my name in a list of PHP luminaries! The article was published today, you can find it at http …

    Read more

  158. Zend_Paginator on Ibuildings Blog


    In case anyone thought it was a bit quiet around here - that's because I've been working on a few other bits and pieces! Today I posted an article about Zend_Paginator to the Ibuildings blog. Do stop by and have a read - and read the comments as well as there are …

    Read more

  159. PHPNW Post-match Analysis


    Last weekend saw a crowd descend on central Manchester in the UK for the first PHP North West conference. We had almost 180 attendees, 12 sessions, 16 speakers, and lots of fun. The day itself went off very smoothly and although I didn't manage to see many of the sessions …

    Read more

  160. My PHPWomen Interview on Sun's SDN Podcast


    I was recently interviewed by Cassandra Clark from Sun about PHPWomen - they've put the interview live now and you can find it at http://blogs.sun.com/SDNChannel/entry/introduction_to_phpwomen_org

    Read more

  161. Locale-Sensitive Dates in PHP


    I am working on a site at the moment whose front end is in Dutch - and for an English-only speaker, its an education! Most things default to English and I had no idea how to use PHP to work with other languages.

    In particular I needed dates like "Donderdag 23 …

    Read more

  162. Introduction to Zend_Db


    I recently worked on a project which was based on Zend Framework - I haven't worked with it before and I was temporarily confused by the existing implementation of some of the database-level stuff. After much reading and untangling of code, I'm now pretty clear how this should look, so here's …

    Read more

  163. How to Submit a Conference Talk


    Speaking at conferences is a great way to share ideas and meet people - but actually getting the opportunity to do is a little more tricky and usually involves proposing a talk. In the last year I've attended IPC in Germany and PHP London, spoken at DPC in Amsterdam, submitted talks …

    Read more

  164. PHPNW: One Month Countdown


    |image1|In a month's time I'll be in Manchester, ready for the PHP North West conference. The conference is a one-day event (Saturday, 22nd November), although the social side of things will kick off the night before. Tickets are 50 GBP for the early bird, 35 GBP for students and …

    Read more

  165. PHPNW Tickets On Sale


    Tickets are now on sale for PHPNW - the PHP Conference in Manchester, UK, on November 22nd. This is a conference aimed at bringing together and promoting the amazing wealth of local talent and activity in PHP within the North West and wider area. The schedule is online already and tickets …

    Read more

  166. Schedule for PHPNW


    Today saw the publication of the schedule for the PHP North West Conference - you can see it in full on their site. There are some great speakers lined up - Johannes Schlüter, Rob Allen and Stefan Koopmanschap to name just a few that immediately jump out of the page. Tickets aren't …

    Read more

  167. Update from ZendCon


    I'm currently in California, at ZendCon. I'm having way too much fun to blog but there is a writeup on the phpwomen site of my experiences so far. I've met some great people, and its long days but I'm learning a lot! I've (been) volunteered for an uncon session later …

    Read more

  168. Using curl and PHP to talk to a REST service


    Having recently written articles about curl and about writing a PHP REST server, I thought I'd complete the circle and put here a few notes on using PHP's curl wrapper as a Rest client. Also I had to look some of this up when I needed to actually do it …

    Read more

  169. PHPNW Update


    With just over a week remaining on the PHP North West Call for Papers, plans for this Manchester-based conference are fairly racing along. The call for papers closes on 21st September (in time for me arriving home from ZendCon so we can make some decisions before I shoot off again …

    Read more

  170. PHP Rest Server (part 3 of 3)


    Edit: I have a newer series of articles on this topic. You can start reading here :)

    This is part 3 of my article about writing a restful service server. If you haven't already, you might like to read part 1 (covering the core library and grabbing the information we need …

    Read more

  171. PHP Rest Server (part 2 of 3)


    Edit: I have a newer series of articles on this topic. You can start reading here :)

    This is part 2 of my rest service writing article. In part 1 we saw the library which holds the functionality we will be using, and we also handled the incoming request and captured …

    Read more

  172. PHP Rest Server (part 1 of 3)


    I recently had reason to write a REST server in PHP, which was very interesting. There aren't a whole lot of resources on this topic around so I thought I'd write an outline of what I did. There is quite a lot to it so I'm publishing in multiple sections …

    Read more

  173. PHPNW Site and Call for Papers Launched


    Yay! The PHPNW site is now online with all the details of the PHP North West Conference to be held on November 22nd, 2008 in Manchester, UK. The conference is specific to PHP and aims to develop the skills of the developers in the local area. Look out for local …

    Read more

  174. PHPNW 2008 - 22nd November


    image1I'm wildly excited to be able to tell you that the PHP North West Conference now has a date and venue confirmed! The event will be at Manchester Central (apparently this used to be the GMex), on Saturday 22nd November with an early bird ticket price of £50. At the …

    Read more

  175. Accessing Incoming PUT Data from PHP


    Recently I started writing a REST service. I began in the usual way, writing a php script, calling it with a GET request, accessing the variables using the PHP superglobal variable $_GET. I wrote code to handle a POST request and used the variables I found in $_POST. Then I …

    Read more

  176. Ibuildings Seminar, Leeds


    image1My employers, Ibuildings, have been running a series of seminars where we invite a few people (and it is a few, they are generally small events), bring some of our developers along, and have some technical tutorials, demonstrations and general discussions, and some food. The previous events have all been …

    Read more

  177. DPC Interview


    So, at the Dutch PHP Conference, they were making a video and they interviewed me. The video is at http://www.bachelor-ict.nl/dpc and it is also featured in this article on DevZone which is exciting! The video is mostly about the PHPWomen organisation, rather than my talk but …

    Read more

  178. PHPWomen Article Competition


    There's an article competition running over at phpwomen.org where thre are two Zend Studio for Eclipse licenses to give away to the best short articles submitted in the Best Practices forum before the end of July. See the announcement for more details.

    Read more

  179. Deployment with SVN slides - Dutch PHP Conference


    The slides for my talk "PHP Deployment with Subversion" at the Dutch PHP Conference last weekend are now online, you can find them at http://www.slideshare.net/lornajane/php-deployment-with-svn/. If you have any questions or comments then either drop me a line or add a comment below.

    Edit: I …

    Read more

  180. DPC Talk Review


    A couple of days ago I had the pleasure of speaking at the excellent Dutch PHP Conference in Amsterdam. I haven't done anything like this before and I did a lot of preparation - as you'll know if you read this blog regularly.

    My talk was entitled "PHP Deployment with Subversion …

    Read more

  181. DPC Day 1


    Well, its a misleading title because the day is only half over but the Dutch PHP Conference 2008 is well and truly underway! Today I've been in the Zend Framework tutorial given by Matthew Weir O'Phinney, which is a full-day session. Its been excellent - with some concepts, some examples, and …

    Read more

  182. Visit To PHP London


    Last night I had the opportunity to speak at the PHP London group, giving a talk entitled "PHP Deployment with Subversion". This is the talk I will be giving next week at the Dutch PHP Conference in Amsterdam, and giving the same talk last night was the last step in …

    Read more

  183. SugarCRM SOAP Data Types


    Since SugarCRM only works with PHP5 in non-WSDL mode, I had to create all my calls from scratch. The SugarCRM documentation is somewhat minimal, as I may have mentioned, and I found I was mostly reading the WSDL to figure out how to format my SOAP calls. I've put together a post with working examples but I've also assembled a list of the data types needed. Click through to read more.

    Read more

  184. SugarCRM SOAP API Examples


    By popular request, here are some examples that worked for me when using the SOAP API offered by SugarCRM. Its nice that there is an interface, but it isn't brilliantly documented or nearly as widely used as it should be!

    SugarCRM can't talk to PHP 5 native SOAP libraries in …

    Read more

  185. SugarCRM SOAP API


    I don't know when SugarCRM, the open source CRM tool, first acquired a SOAP API but I missed it completely. I've used SugarCRM a few times, on quite a casual level, and only fell across the SOAP API because I needed it.

    The first thing to note is that the …

    Read more

  186. SugarCRM Custom Fields


    'Tis the week for code snippets it seems - actually its mostly that I'm working with SugarCRM in anger for the first time and falling into a few traps. Due to the unique way in which this product is funded, there is a lot less community support around than I'd expect …

    Read more

  187. ZendCon Call For Papers


    The ZendCon Call For Papers is now open. This conference is one of the biggest of the year but unfortunately is only held in the US. This year I am planning to submit talks for consideration for the first time ... wish me luck :)

    Read more

  188. PHP London Meet and Some Heckling


    I've been in London on business again this week (hopefully my wild travelling will calm down a bit now) which had the nice side-effect of allowing me to get to the PHP London meetup on Thursday. It was nice to see people that I met at the conference the previous …

    Read more

  189. PHP London 2008


    On Friday was this year's PHP Conference in London and I must say it was a roaring success. The whole conference had completely gone up a gear from last year (the only other time I've attended) with a larger venue, choice of tracks, more attendees and better food.

    I was …

    Read more

  190. Offline Geeking


    I don't spend a lot of time hanging around with geeks in the real world. I spend a lot of time hanging around with them in virtual spaces and some of the people I have met there are my closest friends. Offline meets are ... quite different. Lots of geeks are …

    Read more

  191. PHP London and Another Busy Week


    I heard last week that the PHPLondon conference is completely sold out - I had a funny feeling it might be :) I will be there, this Friday 29th February and looking forward to a great event. I'll be at the pre- and post-conference socials, if you are an online acquaintance please …

    Read more

  192. Speaking at Dutch PHP Conference


    A quick announcement: I'm speaking at the Dutch PHP Conference this year, my talk is entitled "PHP Deployment with Subversion". The conference is in Amsterdam, you can find out more on its website http://phpconference.nl, and it takes place on June 14th. It'll be my first big speaking engagement …

    Read more

  193. PHP Women at PHP London


    On Feburary 29th the PHP London 2008 conference will take place in London. Things have been very busy for the guys organising, there have been a few tweaks to the schedule but its looking like things are coming together nicely. I'm all set and have booked tickets and a hotel …

    Read more

  194. So Begins a New Chapter


    I'd like to announce that today I parted company with my employers Coolpink to the satisfaction (and probably benefit) of both sides.

    To answer the first three questions: Yes, I am fine. Yes, they are paying me my notice period so I won't starve. And yes, I need a new …

    Read more

  195. Donate to PHPWomen and Win


    Its exciting times at PHPWomen.org. There is the new addition of a "Donate" button, for anyone who would like to contribute to our cause. As if we aren't reason enough, the adorable Cal Evans from Devzone has given us 10 elePHPants (remember he sent me one?) to give to …

    Read more

  196. PHP London 2008 Schedule


    After the fun I had last year at PHPLondon, I'm happy to announce that I'll be there this year as well. The talks are pretty much finalised, the schedule is online and all that's left is for everyone to get tickets and I'll see you there!

    Read more