Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Displaying stream progress in PHP
May 27, 2015 @ 08:39:26

Hannes Van De Vreken has posted a tutorial to his site showing users of the Symfony Console component how to show progress on a stream using the ProgressBar helper and a bit of code to inspect the stream itself.

With PHP you can, next to handling HTTP requests, invoke scripts from the command line. [...] The Symfony console component is a very useful tool to define and invoke these kind of CLI tasks. [...] What is actually printed on the console is very important for the issuer of the task. Think of it as the command’s usability. Too little runtime information, the less usable the task. [...] Enter the ProgressBar. The ProgressBar is an output helper that wraps the OutputInterface object.

He talks briefly about how the ProgressBar helper works in the console component's output and gives a simple example of the output. He then shows how to hook it into a bit of PHP using the stream_notification_callback optional parameter (defined in stream_context_create) to point to another class method that handles the progress bar updates. It performs a bit of introspection on the stream and updates the progress as its contents progress. He does point out a few caveats though, including that the transfer is not made asynchronous by this handling.

tagged: symfony console stream progress progressbar helper tutorial

Link: https://hannesvdvreken.com/2015/05/12/stream-progress/

JetBrains Blog:
Laravel Development using PhpStorm
Jan 21, 2015 @ 09:03:16

The JetBrains blog has posted about an update to their popular PHPStorm IDE tool. In this new post they talk about the next level of integration they've introduced for those developing Laravel-based applications.

Last summer, we introduced support for Blade, the template language used by Laravel. Support for artisan, the command line tool for Laravel developers, is baked into PhpStorm as well. Using the Laravel plugin and the Laravel IDE helper, we can further extend PhpStorm's support for Laravel applications.

They walk you through each of these two new updates, showing what kind of features they enable and some screenshots of the interface in use. For more information and to check out other features in this new plugin/helper setup, see this documentation page.

tagged: development phpstorm laravel plugin helper integrate

Link: http://blog.jetbrains.com/phpstorm/2015/01/laravel-development-using-phpstorm/

QaFoo.com:
Code Reuse By Inheritance
Jan 20, 2014 @ 10:55:18

On the Qafoo blog today Kore Nordmann has a new post talking about code reuse through inheritance. He talks about base classes, sharing code and abstraction.

To me, inheritance has two properties: Defining an is-a relationship [and] making it possible to share code between classes by extending from a common base class. The is-a relationship between classes is one thing I like to use inheritance for. [...] The other thing you can use inheritance for is to share code between multiple classes. [...] I personally think that the latter is one of the worst things you can do in object oriented design. Bear with me for a moment and let me try to explain why I think that.

His example of doing it the wrong way is using the Active Record design pattern and how it's usually implemented - storage logic in the base class and business/table logic in the extending class. He then gets into an example that's a bit "smaller" creating diff display functionality and how the "code reuse by inheritance" creeps in a lot in helper methods. He also briefly looks at testing (or not testing) private methods and and the "Depth of Inheritance Tree" metric's recommended value.

tagged: code reuse inheritance helper activerecord testing depth

Link: http://qafoo.com/blog/063_code_reuse_by_inheritance.html

Using Traits for Code Reuse in Zend Framework 2
Oct 02, 2013 @ 10:56:28

For those that might have heard of traits (made available in newer versions of PHP, 5.4+) but haven't seen much of a practical application, this new post from Matthew Setter could help.

Here’s the situation which prompted the use of them, in a nutshell. I had a custom view helper which performed some rather elementary date & time formatting, based purely on US standards. When I first wrote the ViewHelper, I wasn’t aware of any other use case I’d have for it. So it made sense for it to be self-contained. Such is life however, as later in development the need did arise to do more date/time formatting. But this time, far removed from the view layer in a model. [...] So I weighed up my options and chose to go with Traits. I’ll be honest, there was the new & cool factor to them as well – as well as an irresistible sense of simplicity in them.

He shares the actual trait code he implemented, making two simple methods - one for formatting date and another for formatting the time - for his views to use. He also includes examples of it in use. He also sought some feedback

tagged: zendframework2 traits reuse view helper

Link: http://www.maltblue.com/php/using-traits-for-code-reuse-in-zend-framework-2

Adam Culp:
Zend Framework 2 XML Sitemap
Sep 09, 2013 @ 11:15:09

In a new post to his site Adam Culp shares how he created an XML sitemap for his Zend Framework 2-based application as he made it (the SunshinePHP site) more SEO friendly.

I was pleasantly surprised to see the Navigation component of Zend Framework 2 includes a bunch of view helpers, including a Sitemap helper. So now I have an xml sitemap created by Zend Framework 2 that works hand in hand with the site navigation. However, the documentation was not complete as of this writing and caused me to do a bit of trial and error debugging to get it working. Below I will post how I got it working, in hopes it will help others.

The code to get it working is relatively simple - set it up in the module configuration, specify the navigation structure and add a route for the sitemap output. The view then accesses the navigation handling and calls a "sitemap" method to push the XML result out to the user.

tagged: xml sitemap sunshinephp zendframework2 navigation helper

Link: http://www.geekyboy.com/archives/770

Google Developer Blog:
Getting started with Twilio on Google App Engine for PHP
Aug 06, 2013 @ 11:55:51

On the Google Developers Blog there's a new post from Keith Casey showing you how to get started with Twilio on a Google App engine, PHP-based application. It requires the use of the latest Twilio helper library, so be sure to upgrade.

I’ve wanted to explore Google App Engine for years. Between its SLA, automatic scaling, and queuing system, it has always been compelling. Unfortunately, since my Python skills are somewhere between “Hello World” and “OMG What did I just do!?” I decided to save myself the embarrassment. When Google announced PHP support for App Engine, I was both ecstatic and intrigued about what might be possible. To get something running in just a few minutes, I decided to use our Twilio PHP helper.

He walks you through the full process - setting up an App Engine account and instance, using the a href="http://www.twilio.com/docs/libraries">helper library and how you'll need to configure your routing for the files in your application.

tagged: google appengine twilio helper tutorial routing

Link: http://googledevelopers.blogspot.com/2013/08/getting-started-with-twilio-on-google.html

Rob Allen:
Configuring a ZF2 view helper before rendering
Jul 31, 2013 @ 09:57:52

Rob Allen has a quick new post with details about configuring a view helper for a Zend Framework 2 application prior to its results being rendered.

When I was reading the documentation for the currencyFormat view helper, I discovered that you could configure the currency code and locale once rather than in every call. [...] This is obviously useful, but even more useful would be if we could set it once by default and then override if we need to in a specific call. The easiest way to do this is to use an event listener on the renderer.post View event within a modules's onBootstrap method.

He includes code to illustrate the process, configuring the renderer in the bootstrap of the application to use the GBP currency code and the "en_GB" locale for formatting its output. You can find out more about what the currencyFormatter can do in Rob's previous post.

tagged: view helper zendframework2 configuration bootstrap

Link: http://akrabat.com/zend-framework-2/configuring-a-zf2-view-helper-before-rendering

NetTuts.com:
Testing Laravel Controllers
Apr 24, 2013 @ 09:24:06

NetTuts.com has posted a new article for the Laravel users out there - a tutorial showing how to test Laravel controllers via PHPUnit tests.

Testing controllers isn’t the easiest thing in the world. Well, let me rephrase that: testing them is a cinch; what’s difficult, at least at first, is determining what to test. Should a controller test verify text on the page? Should it touch the database? Should it ensure that variables exist in the view? If this is your first hay-ride, these things can be confusing! Let me help.

They break up the testing process into three main chunks - isolation of the tests (mocking where need be), calling the controller method and running the checks (assertions) to be sure the result is valid. They start with a basic controller test that runs a GET request on the "posts" method. They also mention the assertion helper methods included with Laravel controller testing, things like "assertRedirectedTo" and "assertSessionHas". The article then gets into moreo practical examples showing a TDD approach to testing some simple controller calls, mocking data connections, handling redirects and repositories.

tagged: laravel controller testing tutorial helper

Link: http://net.tutsplus.com/tutorials/php/testing-laravel-controllers

Dave Marshall:
Silex Route Helpers for a Cleaner Architecture
Nov 27, 2012 @ 10:57:16

In a previous post of his Dave Marshall talked about using controllers as "services" in a Silex-based application. In this new post he takes it a step further and shows you how to use route helpers to make working with those controllers even simpler.

Supposing we want to render some HTML, do we want to inject the template engine in to the controller? Should the controller be responsible for knowing how to render the template? I’m not sure, but if I can have it not do it with minimal fuss, I think I’d rather it not. The full stack framework has the @Template annotation, which allows developers to assign a template to a controller and then simply return an array. If they can do it in the full stack framework, we can do it in Silex.

He includes the code for an example of a 404 handling page that uses the "convert" method to configure a route (path to a controller) for the currently matched route. He also shows the creation of a simple "CustomRoute" class and a "TemplateRenderingListener" to make it simpler to customize the handling and output of the request, all injected into the application's DI for later use.

tagged: silex microframework controller route helper architecture tutorial

Link:

Robert Basic:
Working with custom view helpers in Zend Framework 2
Sep 12, 2012 @ 09:27:08

In his latest post Robert Basic looks at working with custom view helpers in your Zend Framework 2 application and shows how to implement a simple one to display a simple greeting.

I took the skeleton [Zend Framework 2] application, made it even skinnier by throwing out some (for me) unneeded parts and just put it all besides my old ZF1 code. [...] The first problem I ran into was using custom view helpers, especially view helpers that are more general and don't fit into one specific module. Where to put the code? How to access them in views? The second problem was how to access the service manager from a view helper? And the third problem was how to tell the helper to use a specific value when inside a specific module?

He includes a simple example - the greeting helper - and shows where to place it in the application structure, how to work with the service locator inside it and how to set up some module-specific views inside.

tagged: zendframework2 view helper custom tutorial

Link: