Qafoo GmbH - passion for software quality ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :Author: www-data :Date: Wed, 31 Oct 2018 10:07:55 +0100 :Copyright: All rights reserved =============== Qafoo Team Blog =============== - Object lifecycle control From time to time I trip over APIs, which do not allow me to control the object lifecycle of the used objects myself. Let me discuss why this is a bad thing… - Howto write a Rule for PHPMD This blog post will give you a detailed introduction into the development of custom PHPMD rules. PHPMD is static code analysis tool that helps to improve the quality of PHP software projects. Therefore it processes the project's source code and searches for known error patterns, design flaws, overcomplicated expressions and unused/dead code. You would like to use like PHPMD to improve the quality of your project, but you are missing a features in the current release, then you should read this post. Because this blog post will give a detailed description how to write and configure PHPMD with own rules for. - Feel welcome: Contributing to Zeta Components In case you missed it, what was formally known as eZ Components is now Apache Zeta Components since some time. The story behind has already been written down somewhere else, so I skip it here. This article shall instead show you how to get on board with an amazingly cool open source project and what it gains you. - Meet us at a place near you Qafoo people are travelling to many conferences in the next weeks. This is your chance to meet us in person, have interesting chats face to face, discuss your software quality issues and have a beer! If you want to have a dedicated meeting, please email us upfront. Our schedule is: - Struct classes in PHP PHP arrays are a wonderful tool and one of the reasons I like PHP. Their versatility makes it possible to easily set up proof of concepts (POC), either used as hash maps storing multiple keys, or as lists, stacks, trees or whatever you like. But once you are past the phase of the initial POC, the excessive usage of arrays and exactly their versatility has some drawbacks: If you see an array type hint or return documentation, you know nearly nothing about the data structure. Using arrays as key-value hash maps for storing configuration keys or data sets you also know nearly nothing about the expected contents of the array. - Code Review offer (20% discount) This month we want highlight a second part of our portfolio and provide you with a special opportunity in respect to code reviews: We will give you a 20% discount on code reviews with a focus on software quality, booked until January 31st for Februrary. - The PHP collective The PHP collective (or the "PHP-Kolektiv" in German) provides you with a new amazing alternative for PHP training in Germany. Read more for schedule, dates and prices. - Testing file uploads with PHP A question I am asked on a regular basis is, how you can test a file upload with PHP. In this blog post, I take a precise look at this topic and show you how to test your file uploads from within your standard testing environment, using widely unknown testing framework for PHP. - 20% discount for OOP/OOD trainings in January The year is almost over, for many people time to reflect the past and plan for the future. If you wanted to please your developers and enhance your development for 2011, how about a customized training to boost your powers? Qafoo offers you a 3 days training (German or English) on good object oriented design and object oriented programming in PHP, customized to your companies very personal needs, with 20% discount in January! - Apache Zeta Components: Doing mail right Sending and receiving mail is a regular, but often cumbersome task. Especially, when it comes to more complex mails than just plain text. HTML and alternate text parts, embedded images, attachments and digests can make your brain spin if you need to do it yourself. The Apache Zeta Mail component makes it easy for you to send such mails, but also to receive them! In this article I show you how to send HTML emails with embedded images and how to receive all mails from an IMAP server and forward them in a single mail, using a digest.