strategy pattern in php