News Feed
Jobs Feed
Sections




News Archive
feed this:

Josh Adell's Blog:
Command Invoker Pattern with the Open/Closed Principle
January 16, 2012 @ 10:04:42

In a response to a recent post on DZone.com about the "Open/Closed Principle" Josh Adell has posted an example of a " flexible and extendable command invocation solution" implementing this SOLID idea.

Let's overcome some of these issues [with only being able to extend the invoker class and that the invoker needs to know how to create commands], and also make the code even more extensible. I'll use a simplified command invoker to demonstrate.

His code is included - the creation of a "Command" interface and two comments that implement it: "HelloCommand" and "PwdCommand", each with "register" and "execute" methods. His "Invoker" class then only needs to be told how to map these commands and the "register" is called as they're needed. You can find the full example code for this invocation example in this gist.

0 comments voice your opinion now!
command designpattern invoke open closed principle solid tutorial


DZone.com:
Open/Closed Principle on real world code
January 13, 2012 @ 09:05:53

In a new post to DZone.com Giorgio Sironi talks about the "open/closed principle" in software development and shows an example based on the design of the PHPUnit_Selenium project.

This article shows an example of how the application of the Open/Closed Principle improved the design of a real project, the open source library PHPUnit_Selenium. These design concepts apply to every object-oriented language, including Java, Ruby or even C++. The Open Closed Principle, part of SOLID set, states that software should be open for extension and at the same time closed for modification.

He starts with a little background on the project, pointing out that there's a Session object it uses for all of its testing with a magic "__call" method that handles any kind of method call to the object. This method has issues (dependencies, strict requirements for use) but can be refactored according to the Open/Closed idea to set up an array of anonymous functions that can be called as a "command". Examples of these types of classes are also included (one for the "click" action on a button and another for getting the current location).

0 comments voice your opinion now!
open closed principle solid design command phpunit selenium


PHPMaster.com:
Understanding the Command Design Pattern
January 03, 2012 @ 08:25:29

On PHPMaster.com today there's a new article introducing you to the Command design pattern and looking to help you understand its use a bit better.

The majority of [cell phone] users have opted to receive an email, but a significant number are now opting to receive the notifications via SMS. Here's the problem: How do you send a message via two different channels to both groups of users? The logical approach would be to split the users into 2 groups, email recipients and SMS recipients, which would involve running 2 different queries and sending the codeword to each group separately. Using the Command Pattern, which I will introduce you to in this article, you can send the message to both groups of users in a single process.

He uses the message queue he mentioned as an example - showing how you can can queue up different kinds of objects (actions) based on a common interface into the same process. He creates a "DailyAlertEmail" and "DailyAlertSMS" classes, both with a "send" method. The settings for these are then pulled from a database and the "execute" method on the "MessageQueue" class is called to loop through them, calling "send" to do that work.

0 comments voice your opinion now!
command designpattern tutorial message queue sms email


DevShed:
Sanitizing Input with PHP
December 13, 2011 @ 11:49:31

DevShed.com has a new tutorial posted today looking at how to sanitize data in your application, specifically data coming from the user, when calling shell commands.

Neglecting to sanitize user input that may subsequently be passed to system-level functions could allow attackers to do massive internal damage to your information store and operating system, deface or delete Web files, and otherwise gain unrestricted access to your server. And that's only the beginning.

He starts with a "real world" example of non-filtered data that could pass through a "rm" command and erase your entire drive. He offers two solutions for preventing this sort of hack using the escapeshellcmd and escapeshellarg functions.

0 comments voice your opinion now!
sanitize input shell command tutorial escapeshellcmd escapeshellarg


James Morris' Blog:
A Symfony2 Console Command and the Foursquare API Venuehistory
September 05, 2011 @ 09:54:40

In a new post to his blog James Morris has shared a custom Symfony2 console command he's written to pull in Foursquare data for his testing locally.

I've been playing with the Foursquare API recently, I'm attempting to get a new homepage built and want to display a map of where I hang out. I use Foursquare quite a bit so wanted to get the locations from their API then plot them on Google maps. There's a venuehistory endpoint that gives you a massive list of all the venues you've checked into with details such as the venue name, location including lat and lng coordinates, and the count of times you've checked in.

He includes a screenshot of the API's results, the code you'll need to recreate it and an example of it running.

0 comments voice your opinion now!
tutorial symfony2 api foursquare custom command


Gonzalo Ayuso's Blog:
My VIM configuration for PHP development
January 03, 2011 @ 13:50:35

In a search for his perfect development environment (note "his" not "the") Gonzalo Ayuso has taken another look at vim in a new post to his blog with some handy plugins and commands he's found so far.

Keeping on with my continuous search for the perfect IDE I've resumed my fight against VIM. As someone told me the learning of vim is a road of pain. It's something like going to the gym. We known that going to the gym is good and healthy but it's hard and painfully especially at the beginning. The learning curve of vim is hard. [...] VIM is not my default IDE yet. I hope to swap to VIM soon but I feel myself slower when I code comparing with Netbeans or ZendStudio, and slow means less productive but I also feel if invest more time vim can be really productive.

He points out these plugins and commands:

  • NerdTree
  • the "buffer explorer"
  • using Zen Coding
  • using the debugger (along with XDebug)
  • snipMate
  • using omni completion
  • supertab
  • and a few more various, useful commands...
1 comment voice your opinion now!
vim ide development opinion configuration plugin command


Web Builder Zone:
Real-life closures examples...for real
December 17, 2010 @ 08:19:07

On the Web Builder Zone (from DZone.com) Giorgio Sironi has a new post about closures with some real life examples...no really, real ones.

I wrote an article long time ago about array_map(), array_filter(), and they are very handy in some cases, but I discovered there is a catch: they do their best when you already have a defined function to pass them. [...] So here's my real real-life example for closures: in my opinion, they are not meant for substituting foreach(), but for example to pass a curried callback method around (an implementation of the Command pattern).

His implementation uses the Command design pattern to create both Car and Truck objects that can use the Pump object for their tirePressure.

0 comments voice your opinion now!
closure tutorial example command designpattern


ServerGrove.com:
Creating console commands with Symfony2
October 15, 2010 @ 08:53:19

On the ServerGrove.com blog today there's this new post showing you how to create console commands with your Symfony2 codebase in addition to the normal websites you might have generated.

Symfony 2 is mainly used to create web application, however, sometimes you need to extend your app and need a command line tool to help perform tasks around the application. With symfony 1.4.x these were called tasks and it was possible to create a skeleton by using the symfony generate:task task.

While there's not a tool for it, Symfony2 does offer something called "Commands" as a sort of replacement. A basic skeleton of one is included with the framework, there's just no auto-generation tool for them (yet). The basic one, TestCommand.php, shows you how to set up a command's name, arguments and some parameter mapping. The post includes this code example and how it looks when called from the command line.

0 comments voice your opinion now!
console command symfony2 taks commandtest tutorial


PHPBuilder.com:
Mitigate the Security Risks of PHP System Command Execution
January 29, 2010 @ 09:47:19

PHPBuilder.com has a new article from Jason Gilmore on security in command-line applications posted today and what you can do to help protect your scripts from unwanted system command access.

In this tutorial, I'll show you how to securely execute a variety of system-based commands via a PHP script, demonstrating how to build web applications that can tightly integrate with both the operating system and third-party software.

He mentions the proper filtering of input strings (user input), how it can protect your and your application as well as a few examples of using the PHP execution functions (like exec or passthru) and how to apply the shell escaping commands (like escapeshellarg) as a first layer of security.

0 comments voice your opinion now!
system command execution security escape filter


Solar Blog:
Solar CLI - Make-Model
March 11, 2009 @ 11:12:27

The Solar blog has been updated this a new post continuing on the look at the Solar CLI (started here) and its "make-model" command.

This entry is a continuation of the Solar CLI series--a series that aims to detail Solar CLI commands, available options, parameters, and usage examples. In this entry we take a look at make-model, a command that can generate models based on a SQL table.

The post goes through the available options and parameters that you can give the command to make things easier and includes an example of running the "make-model" on a table in a MySQL database (with the code to add to your Solar configuration file to match).

0 comments voice your opinion now!
solar framework command line makemodel model mysql tutorial



Community Events











Don't see your event here?
Let us know!


podcast application opinion interview language functional series community zendframework2 database composer phpunit development release testing code framework api introduction example

All content copyright, 2013 PHPDeveloper.org :: info@phpdeveloper.org - Powered by the Solar PHP Framework