This entry is part 1 of 3 in the series Optimizing MySQL Introduction MySQL is one of the most used databases in conjunction with PHP. Making sure that your MySQL databases are running at their best is one of the most important aspects you have to consider whenever your web application grows. In this series […]
Continue reading %Optimizing MySQL Indexes%
ServerGrove, traditionally a Capistrano/Capifony user, decided to give Ansible a try. They include the steps to go through to get the correct environment set up and how to execute commands on the remote servers. There's also an example of a sample task that updates packages on the remote server, moves a config file into place and restarts Apache. With this foundation, they get into the actual Symfony2 deployment, sharing their custom role that sets up the directory, clones the Git repository, runs Composer and executes an Assetic dump.Link: http://blog.servergrove.com/2014/04/01/deployment-symfony2-applications-ansible
If you're relatively new to web development, you might not know exactly what kinds of benefits that using an HTTPS connection might provide. In this new article from the SitePoint PHP blog, Mufleeh Sadique covers some of the basics of HTTPS and gives some reasons why to "go HTTPS" in your applications.Hypertext Transfer Protocol Secure or Hypertext Transfer Protocol over SSL is used for secure communication over a network, or perhaps more importantly - over the Internet. You would see https:// in the URI and a lock icon in the browser when you access a page that uses HTTPS. [...] If you ever wondered whether and how to go HTTPS with your website, we'll attempt to clear this up in this article by briefly describing what HTTPS is about, and why and how to implement it.
He's broken the rest of the article up into a few different sections. The first answers the question "why HTTPS" with a few reasons including the most important - encrypted communication. In the second section, he starts showing you how to "go HTTPS" using a self-signed certificate to start. With the certificate installed, he moves into the last part, ensuring your application is always using the HTTPS version and redirecting anything else.Link: http://www.sitepoint.com/https-basics
- zidizei/toml-php (0.2.0)
Parsing TOML with PHP.
- kohkimakimoto/test (v0.0.3, v0.0.2, v0.0.1)
- stripe/stripe-php (v1.12.0)
Stripe PHP Library
- bangpound/drupal-bootstrap (1.1.3, 1.1.2)
Drupal 7 bootstrap replacement
- headzoo/core (0.6.0)
A collection of use PHP utility classes and functions.
- condenast/pangea (1.1.12, 1.1.11, 1.1.10, 1.1.9, 1.1.8, 1.1.7)
- bpez/infuse (3.0.2, 3.0.1, 3.0.0)
Infuse is a laravel admin package for generating administration style interfaces
- a4m/zencoder (1.2.0)
A laravel wrapper around the zencoder API.
- donatj/drop (v1.0.1, v1.0.0)
Simple debugging methods with CLI support
- chadicus/primaids (v2.0.1, v2.0.0)
A collection of various PHP classes for use with PHP primitive types
- bcncommerce/json-stream (0.2.0, 0.1.0)
A bundle of tools to work with JSON in PHP
- nkiraly/dbsteward (v1.3.8)
SQL database diffing and upgrade tool
- felixonline/core (0.2.2)
Felix Online Core
- irestful/routers (13.11.28)
- 99designs/ergo (v2.6.2, v2.6.1)
Micro-framework for routing and request/response handling in PHP 5.3
- lalop/aphet (v0.3.6, v0.3.5, v0.3.4, v0.3.3, v0.3.2)
- chadicus/encapsules (v1.0.0)
A collection of wrapper classes that encapsulates behavior with primitive types
- restful/wrapper (v1.2.0)
A php wrapper for RESTful apis
- menatwork/semantic_html5 (1.1.12)
Create html5 elements as content element
- msingi/msingi (0.1.3)
Set of classes to build Zend Framework 2.x based CMS
- pomm/pomm (1.2.1)
PHP Object Model Manager for Postgresql
- opennotion/profanity-filter (0.0.8)
The OpenNotion profanity filter library used to replace profanities within ideas, comments and otehr pieces of user editable text.
- crazedsanity/cs-battletrack (v0.9.3, v0.9.2)
PHP-Based web application for tracking data in traditional paper-and-pencil role playing games.
- arctic/arctic2api (0.2.0)
API for interacting with Arctic Reservations version 2
- googleads/googleads-php-lib (5.2.2)
Google Ads APIs Client Library for PHP (AdWords, Adx, and DFP)
- phpdocumentor/phpdocumentor (v2.4.0)
Documentation Generator for PHP
- ac/web-services-bundle (0.3.2)
Provides tools for developing RESTful APIs.
- 4nd/smarty (v3.1.17)
Smarty - the compiling PHP template engine
- pinkeen/api-debug-bundle (0.1)
Allows easy API consumer debugging with web debug toolbar extension.
- bcolucci/type (1.0.0)
Provides very simple classes to abstract some primitive PHP types.
- magomogo/translator-utils (v4.0.1)
PHP Utils for localization with Magomogo/Translator application
- easybib/api-client-php (0.5.10)
Client for EasyBib API, implemented in PHP
- clubduece/edd-interface (0.1.2)
A plugin interface class for Easy Digital Downloads
- zenify/framework (v2.1.17, v2.1.16, v2.1.15, v2.1.14, v2.1.13)
Practice and Zen inspired framework based on Nette Framework.
- mishal/iless (1.6.3)
Less parser and compiler written for Php
- zenify/routing (v0.0.1)
Zenify Routing component
- spiffy/spiffy-user-remember (1.2)
- zenify/application (v0.0.7, v0.0.6, v0.0.5, v0.0.4)
Zenify Application component
- felixkiss/database (v0.2.0)
A simple wrapper around PDO
- henderjon/drop (v0.1.1)
a simple function to inspect things
- henderjon/chevron (v0.2.0)
a simple set of useful tools
- irestful/concreteroutesets (13.11.28)
- firesphere/silverstripe-newsmodule (4.0)
A ModelAdmin based newsmodule to prevent clutter in the SiteTree
- prolificinteractive/mabi (0.4.0)
A Mobile API Framework
- clubduece/wpmvcbase (0.3.1)
MVC style framework for WordPress plugin development
- swarrot/swarrot (v1.1.3, v1.1.2, v1.1.1, v1.1.0)
A simple lib to consume RabbitMQ queues
- block8/b8framework (1.1.2)
Simple, lightweight framework for high-throughput applications
- irestful/multiplequeueretrievercriterias (14.03.27)
- turnaev/ext-data-grid-bundle (v1.1.4, v1.1.5)
Symfony2 Datagrid Bundle
- aura/sql (2.0.0)
The Aura Sql package is a wrapper around PDO that provides connection adapters and convenience methods for MySQL, PostgreSQL, SQLite, and SQL Server.
- psi/news4ward_archive-menu (2.0.7)
Archive menu frontend module for News4ward
- mcfedr/queue-driver-pheanstalk-bundle (1.1.1)
A bundle for managing job queues
- mcfedr/queue-manager-bundle (1.1.1)
A bundle for managing job queues
- tdt/core (v4.3.0)
A RESTful data adapter
- mcfedr/job-manager-bundle (1.3.0)
A bundle for managing job queues
- creof/geo (0.0.3, 0.0.2, 0.0.1)
PHP Geometry/Geography classes
- mediasilo/phoenix-php-sdk (0.4.8)
- openbuildings/purchases (0.5.28)
Multi Store Purchases
- tokushima/rhaco3 (0.4.0)
- tokushima/rhaco (0.4.0)
- creof/geo-parser (0.0.7, 0.0.6, 0.0.5)
Parser for geography coordinate strings
- atelierspierrot/dev-tools (v1.2.4)
Shell tools & facilities to manage app packages' development
- bread/console (v0.2.0)
Bread console library
- voceconnect/wp-cache-bucket (1.1.1)
Allows cache items to be tied to a single validation key
- bread/http (v1.6.4)
Bread HTTP library
- bread/event (v1.2.3)
Bread event library
- bc/model (0.1.1)
base for modeling (model, data map, etc.)
- irestful/concretemultiplequeuemessages (14.03.27)
- adris/base-projetos (0.1.0)
Sistema base para projetos
- marc-mabe/spreadsheet_excel_writer (v0.9.3-p1)
More info available on: http://pear.php.net/package/Spreadsheet_Excel_Writer
- umbrella-web/sf2-google-geocoding-api-bundle (1.0.0)
Google Geocoding API integration for your Symfony2 project
- rah/rah_backup_sftp (0.1.0)
SFTP module for rah_backup
- marc-mabe/ole (v1.0.0)
More info available on: http://pear.php.net/package/OLE
- sonata-project/jquery-bundle (1.10.2)
- rdlowrey/auryn (v0.13.0)
Auryn is a dependency injector for bootstrapping object-oriented PHP applications.
- sebastianblum/visionline-webapi-client (1.0, 0.15, 0.14, 0.13, 0.12)
Extraction of the visionline webapi client for the crm from visionline.at
- jakzal/codeclub (v1.0.2)
A codeclub starting point
- mattyg/meta (2.1.2)
A package that makes it easy to add meta tags to your views.
- irestful/concreteroutelists (13.11.28)
- claroline/forum-bundle (2.2.4)
Claroline forum plugin
- imsamurai/cakephp-advancedshell (1.2.1)
Advanced feutures for cakePHP shell
- psi/contao-lesscss (0.0.2)
LessCSS compiler for Contao
- tomkyle/templates (1.0.5)
- gkralik/gk-smarty (0.5.3)
Zend Framework 2 Module that provides a Smarty rendering strategy
- cargomedia/cm (1.10.1)
- neiron/puser (v0.1.1)
Little auth algoritm via doctrine 2
- oro/crm (1.0.0)
- rah/rah_backup (0.1.0)
Backup a Textpattern CMS site
- etg24/captcha (v0.1.1)
Service, ViewHelper and Validator classes for TYPO3 Flow in order to easily implement a captcha validation. Based on gregwar's captcha library for PHP.
- oro/platform (1.0.0)
Business Application Platform (BAP)
- oro/crm-magento-embedded-contact-us (1.0.0)
OroCRM Package, Contact Us form for Magento
- jwpage/binary-stream-response (1.0.0)
HttpFoundation Response for outputting binary streams
- purple-dbu/vcloud-sdk-helpers (v1.1.3)
Utility classes for vCloud Director PHP SDK
- aamant/backoffice (1.0.2)
Backoffice for Laravel
- sylouuu/php-rest-client (0.1.0)
Submit REST requests over HTTP
- aamant/email-confirmation (0.1.0)
Email confirmation for Laravel 4
- zenify/user (v0.0.7, v0.0.6)
Manages events common for user - login, registration, change/remind password
- data-values/value-view (0.5.1)
Provides JS widgets to edit values defined by the DataValues library
- arcavias/arcavias-core (2014.03.2)
e-commerce framework for web shops, portals and market places
- icap/dropzone-bundle (v0.3.1)
- pingpong/theme (1.0.3)
Laravel 4 - Simple Themes
- toadsuck/skeleton (0.7.0)
Skeleton Application for Toadsuck
- toadsuck/core (0.8.0)
Front controller and other core libraries used by the Toadsuck project.
- webforge/project-stack (1.0.0)
Full stack for webforge components to write a webapplication or website.
- theiconic/fixtures (v1.2.6)
Load fixtures into database from different formats: Yaml, XML, etc.
- PHP Discussion with Stefan Mischook - KillerPHP.com Blog
#dpcradio #stefanmishook #interview #podcast
- Hacking Hack on Heroku - HHVM
#hhvm #heroku #hosting
- The world of PHP nightmare | Blog of Leonid Mamchenkov
#nightmare #funny #language
- Building a Better PHP - Part 2: Using HHVM
#hhvm #part2 #series #introduction
If you think that someone who is offended at a joke has no sense of humor, I invite you to watch this scene from the movie The Lives of Others. The setting is East Germany, Stasi headquarters. Please watch before you read further.
You probably all agree that this prank was cruel. Why? Because the perpetrator is of a higher rank and the joke involves a threat to the person’s career. Notice how the lower-rank member cannot shake off the anxiety even after he discovers that this was a mere joke.
Now let’s see how this translates into an April’s Fools prank. Suppose you are in a position of authority over someone: teacher, landlord, employer, military officer, etc. You decide to make a prank on your subject(s). Add to that a threat to the person’s career or livelihood, and you become a sadist, not a comedian. My son’s teacher threatened his education through an April’s Fools prank. Although I learned within minutes that it was a joke, my heart rate climbed and stayed there for over 30 minutes. I had a pain in my chest for even longer.
Be mindful of how your jokes could affect people. If you are in a position of authority, be extra careful. If in doubt, don’t make a prank. Causing people distress is not funny.
As a side note, you might want to watch the whole movie to gain interesting insight into phone surveillance and other subjects that still plague our modern world.
He goes through the parts of the guide, introducing some of the commands and covering the details of the full "composer.json" JSON structure. There's also a video introduction if you'd like the more visual version.Link: http://www.sitepoint.com/composer-cheatsheet
The Amazon Web Services PHP Development blog has a new post from Jeremy Lindblom showing you how you can receive inbound SNS messages via a webhook on your application.Amazon Simple Notification Service (Amazon SNS) is a fast, fully-managed, push messaging service. Amazon SNS can deliver messages to email, mobile devices, Amazon SQS queues, and HTTP/HTTPS endpoints. [...] Though you can certainly subscribe your email address to receive SNS messages from service events like these, your inbox would fill up rather quickly. There is great power, however, in being able to subscribe an HTTP/HTTPS endpoint to receive the messages. This allows you to program webhooks for your applications to easily respond to various events.
Using the AWS SDK for PHP you can set up a listening script that can receive the message and handle subscription confirmations, message signature validation and handling the notifications.Link: http://blogs.aws.amazon.com/php/post/Tx2G9D94IE6KPAY/Receiving-Amazon-SNS-Messages-in-PHP
In a new post to his site, Pádraic Brady poses a question about the HHVM project from Facebook - is it going to "be the coffin" that will replace the Zend Engine in PHP completely and change the way we know it?With HHVM 3.0 now released, it's probably time to start talking about HHVM and the new Hack Language. It's becoming hard to ignore some of the fantastical notions spreading on the grapevine about HHVM. There is talk of significant performance improvements, a multitude of new features courtesy of Hack, that PHP Internals is actually now outnumbered by HHVM contributors. There is even treasonous talk of PHP's Zend Engine being put out to pasture.
He talks about how it was inevitable, really, that there'd be another implementation come up through the ranks (much like the variations of Ruby). He also mentions some other, less popular options in replacing the main implementation (Zephir, HippyVM, etc). He then poses an interesting question - "what is PHP?" He talks about language specifications, the PHP internals group and the delay that sometimes happens introducing new language features into the core (some of which HHVM already has).PHP, as we know it, is starting to smell. It has gone from being the only PHP in town, to being the slowest, with the least number of features, and the one that's subject to dysfunctional governance. The new PHP is called Hack, a new language with only the briefest of documentation since you can learn the other 99.9% of this language over on the PHP manual. Link: http://blog.astrumfutura.com/2014/03/is-facebooks-hhvm-building-phps-coffin
- uopz 2.0.1
fix build error in some setups
- uopz 1.0.7
fix bug in applying method modifiers
- uopz 1.0.8
fix bug in applying method modifiers
work on uopz_compose, compose classes in one function call is possible
- qb 2.2.0
Enabled compiling to native binary in Solaris and FreeBSD
Fixed issue #29 - Segfault during array resize in Solaris
Fixed issue #32 - Segfault when images are resized or created
Fixed issue #33 - Incorrect CPU count
Fixed issue #34 - Inability to call functions inside namespace
Fixed issue #35 - Segfault in PHP 5.5.8 when QB coroutine is called
Fixed issues flagged by Valgrind
- uopz 1.0.9
fix bug in finding functions, affecting various
add more tests
- uopz 1.0.10
take properties to compose
- uopz 1.0.11
fix unresolved external symbols on some builds
fix bug in overload for add trait/interface
- uopz 2.0.0
API finalized, no moar changes
fix logical error in uopz_extend
fix logical errors in uopz_compose
enforce using correct handlers (stability++)
fix scope issue in global functions created with uopz_function
take modifiers to uopz_function for global functions
fix bug in uopz_delete on magic methods
- uopz 1.0.6
fix memory error causing segfault in auto backup
allow composition of interfaces and traits
enforce inheritance rules while composing classes
- pthreads 2.0.4
fix memory errors introduced in 2.0.0
fix 5.3 build
- uopz 1.0.5
fix various scope issues
use exceptions where appropriate
tidy all code
add some more tests
- eio 1.2.5
Fix: Bitbucket issue #2: Static build fails
Fix: build failed when EVENTFD was not available
- pthreads 2.0.3
Fix bug in trait alias/precedence (gh bug #274)
Fix leak (gh bug #272)
- uopz 1.0.4
fix various scope issues
fix heap corruption issue
auto backup on uopz_function
- qb 2.1.2
Fixed issue #17 - Segfault with large fixed length array
Fixed issue #19, #28 - Errors in Solaris 11
Fixed issue #20 - Corruption of pass-by-ref variables
Fixed issue #21 - Conflict with xdebug in FreeBSD
Fixed issue #24 - Broken ZTS build
Fixed issue #27 - Incorrect object import
- timezonedb 2014.2
Updated to version 2014.2 (2014b)
While waking up we already knew this would be a glorious day. Blue skies with no clouds in sight. The moment I got out of the house I knew I was not going to need my coat either. Getting to Hamsey Green, the start of section 5 was a bit more of a chore than normally. It involved two tube trains to Victoria, a train to West Croydon and then another bus ride down the road to Ken's Auto at Hamsey Green.
After a short section next to a road, we entered Riddlesdown. With mostly open fields and a bit of woodland we made it down into the next valley, coming past a disused quarry. We only really noticed the quarry once we made it over a bridge across some railroad tracks and up a fairly steep path up the hill on the other side of the valley.
After some steps, and some more steep uphill part we came to Kenley Common, a now open space that used to be farmland, as a swap for the Kenley Aerodrome that the RAF seconded during the second World War. We made a few wrong turns on Kenley Common and there were a few slightly useless fences. Passing through some woods and a field with gliders overhead, we "suddenly" found ourselves at the Wattenden Arms, a pub displaying much WWII memorabilia from the Kenley Aerodrome. The friendly staff served a decent pint, and after refreshing ourselves we continued the walk.
After climbing our first style we were overtaken by another LOOP walker as we passed by the Kenley Observatory and a friendly horse. For a bit we had to walk past a road without footpath or pavement.
After that we passed by a field with a sole postbox and then made our way to Happy Valley. With the Sun blazing and everything looking greener that it probably was we descended into the valley and back out on the other end. The signing of the LOOP was a bit confusing so I don't think we followed the route correctly, but we picked up the walk again just shy of the next common, Farthing Downs.
This part of the walk was over a hill crest with the skyline of London in the far background. The section ended with a slight downhill into Coulsdon were we stopped for some refreshments—most importantly cake—at the Poppy Cafe. Because the weather was so nice, we decided to continue with the following section as well, section 6.
Passing through South Coulsdon station we had a long climb up a residential road before we continued on a bridleway. With a long section through some woods and farmland around, a slight detour around a road without pavement, we came upon the Mayfield Lavender Fields. Sadly, we were too early to see it all in bloom, but there was most definitely already a hint of purple to be seen.
We then walked through Oak's Park, after which there was another long straight section on the edge of Surrey that took us past HMP Highdown. Luckily most of it was hidden by hedges and trees. The last part of this much shorter section took us to the Banstead Downs and over the Banstead Downs Golf Club to the end of the walk. From there it was a short link to Banstead, where we luckily only had to wait 20 minutes for the train—there is only a service every hour.
Where section 5 was mostly known for its up and downs, section 6 was the "horse" section. Lots of bridleways and horses around.
The weather was very good, with 16-18°C and no clouds to be seen. We took nearly four and a half hours for the two sections that together were 19.4km long.
The photos that I took on this section, as well as the photos of the other sections of the LOOP, are available as a Flickr set.
This was a long time coming! sabre/dav had always been hosted on google code, but as google started caring less and less about their code hosting property, it was time to look for a change.
Over time issues and source had already migrated to GitHub, but the biggest thing left was the wiki, which required porting of the google wiki markup.
We started work in October, and finally we finished enough stuff that we're comfortable releasing it.
Now I can go all out writing news stories there too. For the longest time this was my only blog, so I felt like I had to make sure I didn't over-broadcast sabre/dav related news, in order to not sound spammy and toot my own horn too much.
And yes, we also changed the branding from SabreDAV to sabre/dav. We've been with composer since the early days, and the typograpgy now matches the composer package name :).Flexible boxes
One nice thing was that since this is a website primarily targetted towards technologists, I've also felt a lot safer taking advantage of all the latest features, and ignoring pretty much any browser that's not the most recent.
Since a little while we now have an awesome new CSS layout feature:
Having worked with this a little bit (and many years ago too in XUL), I feel I can safely say, that within a few years, 90% of you will be using this feature, as opposed to CSS grid systems, absolute positioning, float, etc.
Your css source will be greatly reduced. You can automatically re-order DOM objects based on screen-size, you will need a lot less container divs and you can say goodbye to shitty css classes that frameworks such as bootstrap require.
If you've ever had to do any html layouts (and I'm sure you have, and will again), do yourself a favor and learn about it!
Everything was also writting from the ground up using
box-sizing: border-box, which makes the css math a lot easier as well.
We'd love to hear what you think. Any bugs? Let us know in the comments.
Edit: I recommend reading this article first and then watching the video afterwards. It will make more sense in this order.
I first viewed this enlightening lecture on creativity by John Cleese (Monty Python) a few years ago. Since then, I saw an incredible progress in my problem-solving skills and generated countless creative ideas.
John Cleese explains that creativity is not a talent. It is a way of operating. It is a facility of getting yourself into a particular mood. It is an ability to play with ideas, for no immediate practical applications. And it worked miracles for me.
So now imagine a meeting in a company which aims to solve a problem. It typically has a fixed agenda, includes as many people as could be gathered and the solution has to be taken by the end of the meeting. These mistakes hinder creativity.Agenda
The agenda forces you into accomplishing a list of tasks, which is associated with the closed mode, the one in which creativity cannot be achieved. It’s alright if you need an update or get everyone on the same page, but not when you want a creative solution. I recommend splitting the meeting into a few of them, preferably 60-90 minutes each. State the problem at hand and start exploring solutions (not seeking them).The wrong attitude
When solving problems, you need to bounce ideas back and forth. Having too many people or people who dismiss each other’s ideas is not helpful. When you’re exploring possibilities and someone tells you that it’s ridiculous, you’re no longer in a mood to play. I recommend only inviting a handful of people to the meeting (no more than 5). Tell them not to be afraid to throw ideas, because no idea is wrong at this point. Tell them not to mock other ideas, since bad ideas can lead to good ones in the creative process.Pressure for immediate solutions
Some problems are hard to solve and require additional pondering time. Pressuring for a decision leads to poor decisions. In the best case, you’ll be missing out on creative solutions because pressure always put people in a focused, closed mode. If the decision can be postponed without consequences, then give people some time to digest the ideas heard and reconvene another time. The meeting should remain an exploration until the time comes to actually making the decision.Conclusion
Achieving creativity takes practice. Listen to the video and try to remember to switch into open mode when devising any sort of strategy. I will post another article in the coming days to explain how I apply his 5-step guideline in the context of an IT project.
With HHVM 3.0 now released, it’s probably time to start talking about HHVM and the new Hack Language. It’s becoming hard to ignore some of the fantastical notions spreading on the grapevine about HHVM. There is talk of significant performance improvements, a multitude of new features courtesy of Hack, that PHP Internals is actually now outnumbered by HHVM contributors. There is even treasonous talk of PHP’s Zend Engine being put out to pasture.
Perhaps worse, HHVM 3.0 is following in 2.0′s steps: It is steadily eroding away at the notion that Facebook is going to abandon HHVM tomorrow (specifically at tea time once Mark has finished his crumpets) and it’s reinforcing the notion that Facebook actually wants people to adopt HHVM…as if running framework test suites and blogging about PHP parity every other day didn’t clue you in. Before 2.0, you’d swear the whole project was either top secret or had been disavowed.This Was Inevitable…
PHP is not the only language to have faced multiple implementations. Ruby MRI (Matz’s Ruby Interpreter) is the “original” Ruby. It now puts up with JRuby, Rubinius, IronRuby, MagLev and MacRuby (where would we be without an Objective-C option, right?). Python is also not alone. It has alternatives (a lot of them) but you’d most likely recognise IronPython, PyPy, and Jython.
PHP is merely doing what it does best – creeping up on other languages and stealthily “borrowing” the best of their advantages. This time it’s not actually PHP doing the creeping, however, and beating PHP at the catchup game is a big deal. Just in case you haven’t heard – even HHVM is hardly the only option for PHP either. You can use Zephir to write PHP-like code which compiles to a PHP extension. Recently, I heard about HippyVM which appears to be in its infancy though those kids can grow up very fast (and it’s association with PyPy means it can’t be dismissed out of hand). There’s also the penultimate “opt-out” options for converting PHP out to Java, for example. The ultimate option being to just maintain the output and dump PHP altogether. Never overestimate your PHP code’s permanence .
I haven’t really discussed HHVM anywhere because the equation Facebook presented us with just didn’t add up for my particular circumstances. Now it does. HHVM is becoming ever more compelling as the weeks roll by. The PHP parity quest, the Hack Language, the shift to FastCGI and, most importantly, HHVM’s rapid improvement over time are creating something extremely attractive. Yes, it performs really well, but that’s not always the most relevant factor to programmers on the ground churning out everyday applications.To PHP or not to PHP?
I’m seriously thinking about using the damn thing! This poses one small troubling question which keeps gnawing away at my poor brain: What is PHP?
PHP is a language without a specification to define all of its behaviour. It exists as one implem
Truncated by Planet PHP, read more at the original (another 6785 bytes)
Michael Dowling has announced the release of Guzzle 4.0.0 on his site today. Guzzle is one of the most widely used, popular HTTP clients in the PHP community today. Its used in both corporate and open source projects as a primary means for making HTTP requests and RESTful web service clients.Guzzle 4.0 has arrived! The new version of Guzzle is now simpler, faster, more flexible, and more powerful than ever. [...] Guzzle is a PHP HTTP client that makes it easy to work with HTTP/1.1 and takes the pain out of consuming web services.
He includes a quick example of it in use making a request to the GitHub API to fetch user information. He lists out some of the changes made in this release but points to this other post for the full list. He's also tagged other related projects to match this 4.0.0 release including Guzzle Streams and the Log Subscriber.Link: http://mtdowling.com/blog/2014/03/29/guzzle4/
Evert Pot has a new post sharing some of the changes in DateTime handling that he's updated in the latest release in the PHP 5.5.x series.PHP 5.5.10 got released a few weeks ago, and among other things, it added some new functionality related to timezone handling. In short, [subtracting from UTC] now works. Normally this would not be recommended, as you really should specify timezones based on their geographical location. This information is not always available though, so it's a welcome new feature.
Other changes include the removal of the automatic translation from "UTC" to "GMT" as well as errors being thrown when one of the "odd" timezones are used (he provides the list). Additionally, an update around timezone "guessing" has been added and the fallback that was in place has been removed.Link: http://evertpot.com/php-5-5-10-timezone-changes/
There's a good post over on the NetTuts.com site today talking about unit testing, the myths around code coverage and why it may not be as important as you think.Most cubicle workplaces disappeared and programmers started loving their craft. With the advent of Agile techniques and the Software Craftsmanship movement, many new tools emerged to help the programmer and the process. TDD is slowly becoming the de facto way of writing code and the secrets of SCRUM or Kanban were revealed even to the programmers in the darkest corners of the cubicle world. Automated testing and test driven development (TDD) are some of the essential techniques Agile provided to us programmers. And a tool that comes with those methodologies is used to produce test code coverage, which is the topic of this article.
The article starts with a brief definition of code coverage and gets right into an example class, PHPUnit test and the results of a code coverage generation. They show both output options, the text-only output and the full HTML output with clickable links and visualization of the covered lines of code. There's also an example of generating the coverage inside an IDE (PHPStorm). The post finishes with a look at the myths of code coverage including: "100% covered is bug free" and that "gaming the system" is pretty easy.Link: http://code.tutsplus.com/articles/test-code-coverage-from-myth-to-reality--cms-20442
Unless you’ve been living under a rock, today’s PHP isn’t your grandmother’s PHP; it’s an entirely different, much more elegant and mature language with countless improvements and additions.
I’m not going to go over how to use Composer, as it’s been covered so well here on SitePoint already; especially by this article, by Alexander Cogneau.
Instead, I’m approaching it from a different angle, taking you through the excellent Composer cheat sheet, which I came across recently.
Continue reading %Composer Cheatsheet%