1<?php 2/** 3 * CakePHP(tm) : Rapid Development Framework (https://cakephp.org) 4 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) 5 * 6 * Licensed under The MIT License 7 * For full copyright and license information, please see the LICENSE.txt 8 * Redistributions of files must retain the above copyright notice. 9 * 10 * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org) 11 * @link https://cakephp.org CakePHP(tm) Project 12 * @since 2.8 13 * @license https://opensource.org/licenses/mit-license.php MIT License 14 */ 15 16abstract class BaseShellHelper { 17 18/** 19 * Default config for this helper. 20 * 21 * @var array 22 */ 23 protected $_defaultConfig = array(); 24 25/** 26 * ConsoleOutput instance. 27 * 28 * @var ConsoleOutput 29 */ 30 protected $_consoleOutput; 31 32/** 33 * Runtime config 34 * 35 * @var array 36 */ 37 protected $_config = array(); 38 39/** 40 * Whether the config property has already been configured with defaults 41 * 42 * @var bool 43 */ 44 protected $_configInitialized = false; 45 46/** 47 * Constructor. 48 * 49 * @param ConsoleOutput $consoleOutput The ConsoleOutput instance to use. 50 * @param array $config The settings for this helper. 51 */ 52 public function __construct(ConsoleOutput $consoleOutput, array $config = array()) { 53 $this->_consoleOutput = $consoleOutput; 54 $this->config($config); 55 } 56 57/** 58 * Initialize config & store config values 59 * 60 * @param null $config Config values to set 61 * @return array|void 62 */ 63 public function config($config = null) { 64 if ($config === null) { 65 return $this->_config; 66 } 67 if (!$this->_configInitialized) { 68 $this->_config = array_merge($this->_defaultConfig, $config); 69 $this->_configInitialized = true; 70 } else { 71 $this->_config = array_merge($this->_config, $config); 72 } 73 } 74 75/** 76 * This method should output content using `$this->_consoleOutput`. 77 * 78 * @param array $args The arguments for the helper. 79 * @return void 80 */ 81 abstract public function output($args); 82}