曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.かつては雑草やヨモギと共に雨や露を分かち合っていたが、今では松やヒノキと共に霜や雪に耐えている。曾与蒿藜同雨露,Once sharing rain and dew with weeds and wormwood, now enduring frost and snow with pines and cypresses.终随松柏到冰霜.曾与蒿藜同雨露한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.,终随松柏到冰霜.譖セ荳手珍阯懷酔髮ィ髴イ�檎サ磯囂譚セ譟丞芦蜀ー髴�曾与蒿藜同雨露,鏇句笌钂胯棞鍚岄洦闇诧紝缁堥殢鏉炬煆鍒板啺闇�终随松柏到冰霜.曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.曾与蒿藜同雨露,终随松柏到冰霜.
<?php
/**
* PEAR_Task_Common, base class for installer tasks
*
* PHP versions 4 and 5
*
* @category pear
* @package PEAR
* @author Greg Beaver <cellog@php.net>
* @copyright 1997-2009 The Authors
* @license http://opensource.org/licenses/bsd-license.php New BSD License
* @link http://pear.php.net/package/PEAR
* @since File available since Release 1.4.0a1
*/
/**#@+
* Error codes for task validation routines
*/
define('PEAR_TASK_ERROR_NOATTRIBS', 1);
define('PEAR_TASK_ERROR_MISSING_ATTRIB', 2);
define('PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE', 3);
define('PEAR_TASK_ERROR_INVALID', 4);
/**#@-*/
define('PEAR_TASK_PACKAGE', 1);
define('PEAR_TASK_INSTALL', 2);
define('PEAR_TASK_PACKAGEANDINSTALL', 3);
/**
* A task is an operation that manipulates the contents of a file.
*
* Simple tasks operate on 1 file. Multiple tasks are executed after all files have been
* processed and installed, and are designed to operate on all files containing the task.
* The Post-install script task simply takes advantage of the fact that it will be run
* after installation, replace is a simple task.
*
* Combining tasks is possible, but ordering is significant.
*
* <file name="test.php" role="php">
* <tasks:replace from="@data-dir@" to="data_dir" type="pear-config"/>
* <tasks:postinstallscript/>
* </file>
*
* This will first replace any instance of @data-dir@ in the test.php file
* with the path to the current data directory. Then, it will include the
* test.php file and run the script it contains to configure the package post-installation.
*
* @category pear
* @package PEAR
* @author Greg Beaver <cellog@php.net>
* @copyright 1997-2009 The Authors
* @license http://opensource.org/licenses/bsd-license.php New BSD License
* @version Release: 1.10.16
* @link http://pear.php.net/package/PEAR
* @since Class available since Release 1.4.0a1
* @abstract
*/
class PEAR_Task_Common
{
/**
* Valid types for this version are 'simple' and 'multiple'
*
* - simple tasks operate on the contents of a file and write out changes to disk
* - multiple tasks operate on the contents of many files and write out the
* changes directly to disk
*
* Child task classes must override this property.
*
* @access protected
*/
protected $type = 'simple';
/**
* Determines which install phase this task is executed under
*/
public $phase = PEAR_TASK_INSTALL;
/**
* @access protected
*/
protected $config;
/**
* @access protected
*/
protected $registry;
/**
* @access protected
*/
public $logger;
/**
* @access protected
*/
protected $installphase;
/**
* @param PEAR_Config
* @param PEAR_Common
*/
function __construct(&$config, &$logger, $phase)
{
$this->config = &$config;
$this->registry = &$config->getRegistry();
$this->logger = &$logger;
$this->installphase = $phase;
if ($this->type == 'multiple') {
$GLOBALS['_PEAR_TASK_POSTINSTANCES'][get_class($this)][] = &$this;
}
}
/**
* Validate the basic contents of a task tag.
*
* @param PEAR_PackageFile_v2
* @param array
* @param PEAR_Config
* @param array the entire parsed <file> tag
*
* @return true|array On error, return an array in format:
* array(PEAR_TASK_ERROR_???[, param1][, param2][, ...])
*
* For PEAR_TASK_ERROR_MISSING_ATTRIB, pass the attribute name in
* For PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, pass the attribute name and
* an array of legal values in
*
* @abstract
*/
public static function validateXml($pkg, $xml, $config, $fileXml)
{
}
/**
* Initialize a task instance with the parameters
*
* @param array raw, parsed xml
* @param array attributes from the <file> tag containing this task
* @param string|null last installed version of this package
* @abstract
*/
public function init($xml, $fileAttributes, $lastVersion)
{
}
/**
* Begin a task processing session. All multiple tasks will be processed
* after each file has been successfully installed, all simple tasks should
* perform their task here and return any errors using the custom
* throwError() method to allow forward compatibility
*
* This method MUST NOT write out any changes to disk
*
* @param PEAR_PackageFile_v2
* @param string file contents
* @param string the eventual final file location (informational only)
* @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail
* (use $this->throwError), otherwise return the new contents
* @abstract
*/
public function startSession($pkg, $contents, $dest)
{
}
/**
* This method is used to process each of the tasks for a particular
* multiple class type. Simple tasks need not implement this method.
*
* @param array an array of tasks
* @access protected
*/
public static function run($tasks)
{
}
/**
* @final
*/
public static function hasPostinstallTasks()
{
return isset($GLOBALS['_PEAR_TASK_POSTINSTANCES']);
}
/**
* @final
*/
public static function runPostinstallTasks()
{
foreach ($GLOBALS['_PEAR_TASK_POSTINSTANCES'] as $class => $tasks) {
$err = call_user_func(
array($class, 'run'),
$GLOBALS['_PEAR_TASK_POSTINSTANCES'][$class]
);
if ($err) {
return PEAR_Task_Common::throwError($err);
}
}
unset($GLOBALS['_PEAR_TASK_POSTINSTANCES']);
}
/**
* Determines whether a role is a script
* @return bool
*/
public function isScript()
{
return $this->type == 'script';
}
public function throwError($msg, $code = -1)
{
include_once 'PEAR.php';
return PEAR::raiseError($msg, $code);
}
}