I wasn't idle since the release of PEAR 1.9.5 but did a bit of work on my PEAR packages.
Net_WebFinger version 0.4.0 now supports the final WebFinger RFC 7033. On pfefferle's request I made both Net_WebFinger and its dependency XML_XRD available on packagist and thus installable via composer: pear/net_webfinger and pear/xml_xrd
Zend Technologies is the company which funds the development of the Zend Engine (the engine PHP is based on), as well as Zend Framework and some other projects like Apigility. They also build proprietary software of high professional caliber, designed for high intensity PHP work in large companies - software like Zend Studio and Zend Server - though both are excellent tools for solo devs as well. In this post, we’ll be taking a look at the latter.
What is Zend Server?
Zend Server is, essentially, a locally-run web application which helps you run, deploy, debug and production-prepare other applications you write. It’s more than a developer helper, though - you can install it on your production servers and have it take care of hosting, clustering, file distribution and more.
It automatically installs Zend Framework (both version 1 and 2 for some reason) and Symfony 2, and supports GUI-based management of other libraries and projects for total ease of use. All operating systems and platforms are supported, and you can install it alongside Apache or Nginx - your choice. You can have it pull in PHP version 5.4 or 5.5, and it will do the rest on its own once you run the installation script.
The latest version of ZS, version 7, comes in several licenses and flavors, so give those a read if you’d like to know about the differences.
The concept of Zend Server might be a bit too abstract to grasp right now if you’ve never encountered it before, so let’s just walk through it instead.
Continue reading %Getting to Know Zend Server 7%
Back at the end of June, TopTal, the freelance marketplace, published a post about 10 Most Common Mistakes PHP Programmers Make. The list wasn’t exhaustive, but it was well written and pointed out some very interesting pitfalls one should be vary of - even if I wouldn’t personally list the mistakes as very common.
I encourage you to give it a thorough read - it has some truly valuable information you should be aware of - especially the first eight points. A couple days back, Anna Filina expanded on the list with seven new entries. While less specific and common, her points still carry weight and should be considered when developing.
X More Mistakes PHP Developers Often Make
I was asked by someone from TopTal to take a look at their list and potentially contribute, and some of our followers on social networks expressed an interest in seeing the list continued, too, so I’d like to take this opportunity to add some of my own entries to this list that I repeatedly need to warn my team members or followers about.
Continue reading %7 More Mistakes Commonly Made by PHP Developers%
It really annoys me when people say that discussing ethics on social media doesn’t change the world. That is just cynical and pathetic, and these people want to drag others into inaction. Discussing allows you to question your morals and refine your opinions. You eventually act on those values and change the world.
A single person can’t change the world? That’s where you are wrong. You can write a blog post to influence hundreds, who in turn will influence thousands. You can buy shoes for one homeless and start a trend of altruism. You can organize a conference and change a city forever.
Perhaps these cynics think that you should either fix EVERYTHING wrong with the world immediately or go home. They are jealous cowards who can only feel adequate if they can convince you that you can’t achieve anything either.
I’m an optimist, but many confuse me with an idealist. I know that perfection doesn’t exist, but many people create imaginary limitations. They consider something unrealistic or impractical, until I push the limit and prove them wrong.
P.S.: the image above is the one I took of NASCAR’s Kyle Busch who duct taped his car to stay in the race. He did a great job that day.
In the first part of this article, we showed you how to create a Vagrant base box, installing the latest Ubuntu 14.04 LTS in the virtual machine to use it as the guest operating system.
In this part you will learn how to setup a development environment using Vagrant, which you can use and reuse in your development. Note that while you can use the box we created in the previous part for the remainder of this post, you don’t have to - this will all work on any Ubuntu based Vagrant box.
The primary configuration location for any Vagrant development environment is a file called Vagrantfile which you need to place in your project’s folder.
The configuration syntax of this Vagrantfile is Ruby, but you do not need to be a Ruby programmer or have any knowledge of the programming language to write this configuration file. You’ll mostly do basic variable assignment in the configuration.
Every configuration option you will need you can place inside this file.
Let’s go ahead and create a test folder called vagrant-tutorial and inside this folder create the file named Vagrantfile so your folder structure looks like this:
The primary purpose of Vagrant is to have a base virtual machine and to give you the framework for creating automatic software installations and configurations in the virtual machine.
By letting Vagrant handle the provisioning of software, it also gives you the flexibility in configuration and more importantly, makes this process repeatable and automatic.
Vagrant doesn’t care how you provision the virtual machine, it offers multiple options ranging from basic shell scripts to software automation managers such as Puppet, Chef or Ansible. You can even configure it to use multiple provisioners at the same time.
Ofcourse there’s always the possibility to vagrant ssh into the base virtual machine and install your required software manually, but that defeats the purpose of Vagrant and all the flexibility it offers when provisioning a box.
Before we can start provisioning the base box, we need to set a few required options in our configuration file.
Vagrant API version
Vagrant uses API versions for its configuration file, this is how it can stay backwards compatible. So in every Vagrantfile we need to specify which version to use. The current one is version 2 which works with Vagrant 1.1 and up. Let’s write this block in our Vagrantfile.
Continue reading %Vagrantfile Explained: Setting Up and Provisioning with Shell%
In the previous parts of this series, we created our initial interfaces, set up our Google+ login functionality and talked about how we can merge our accounts together. In this article, we will integrate Twitter and Facebook within our application. You will see a lot of similarities with the Google+ article, so if you could follow that one easily, you won’t have much trouble with this one. If you haven’t read that article yet, I suggest you read it first before continuing this article.
You can view the code for all the articles on this Github page.
Once again, we start off by creating the following directory:
src/SitePoint/SocialLogin/Twitter. Within this directory, we create the
TwitterLoginclass. This class implements the
SocialLoginInterfaceinterface which we created in the first article. Make sure a property called
serviceis available to store our service in.
Like Google+, Twitter has some specific needs to make sure we can log in. So make sure we have the following 3 properties present in the class:
- Client id
- callback URL
Since all 3 properties are required for our application to work, our constructor will receive these 3 variables as parameters and set the properties.
Up until now, your code should look the same as the first example in the Google+ article.
Our next step is to create our Twitter service. We will be using the same OAuth library and will set up a connection within the init method.
Before we can start, we have to add some use statements to the top of our class.
Continue reading %Social Network Authentication: Twitter and Facebook%