本文整理汇总了PHP中FileUtils::getChainedReader方法的典型用法代码示例。如果您正苦于以下问题:PHP FileUtils::getChainedReader方法的具体用法?PHP FileUtils::getChainedReader怎么用?PHP FileUtils::getChainedReader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileUtils
的用法示例。
在下文中一共展示了FileUtils::getChainedReader方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: runStatements
/**
* read in lines and execute them
* @param Reader $reader
* @param null $out
* @throws BuildException
*/
public function runStatements(Reader $reader, $out = null)
{
$sql = "";
$line = "";
$buffer = '';
if (is_array($this->filterChains) && !empty($this->filterChains)) {
$in = FileUtils::getChainedReader(new BufferedReader($reader), $this->filterChains, $this->getProject());
while (-1 !== ($read = $in->read())) {
// -1 indicates EOF
$buffer .= $read;
}
$lines = explode("\n", $buffer);
} else {
$in = new BufferedReader($reader);
while (($line = $in->readLine()) !== null) {
$lines[] = $line;
}
}
try {
foreach ($lines as $line) {
$line = trim($line);
$line = ProjectConfigurator::replaceProperties($this->project, $line, $this->project->getProperties());
if (StringHelper::startsWith("//", $line) || StringHelper::startsWith("--", $line) || StringHelper::startsWith("#", $line)) {
continue;
}
if (strlen($line) > 4 && strtoupper(substr($line, 0, 4)) == "REM ") {
continue;
}
$sql .= " " . $line;
$sql = trim($sql);
// SQL defines "--" as a comment to EOL
// and in Oracle it may contain a hint
// so we cannot just remove it, instead we must end it
if (strpos($line, "--") !== false) {
$sql .= "\n";
}
if ($this->delimiterType == self::DELIM_NORMAL && StringHelper::endsWith($this->delimiter, $sql) || $this->delimiterType == self::DELIM_ROW && $line == $this->delimiter) {
$this->log("SQL: " . $sql, Project::MSG_VERBOSE);
$this->execSQL(StringHelper::substring($sql, 0, strlen($sql) - strlen($this->delimiter)), $out);
$sql = "";
}
}
// Catch any statements not followed by ;
if ($sql !== "") {
$this->execSQL($sql, $out);
}
} catch (SQLException $e) {
throw new BuildException("Error running statements", $e);
}
}
示例2: main
/** Append the file(s). */
function main()
{
if ($this->file === null && empty($this->filesets)) {
throw new BuildException("You must specify a file or fileset(s) for the <reflexive> task.");
}
// compile a list of all files to modify, both file attrib and fileset elements
// can be used.
$files = array();
if ($this->file !== null) {
$files[] = $this->file;
}
if (!empty($this->filesets)) {
$filenames = array();
foreach ($this->filesets as $fs) {
try {
$ds = $fs->getDirectoryScanner($this->project);
$filenames = $ds->getIncludedFiles();
// get included filenames
$dir = $fs->getDir($this->project);
foreach ($filenames as $fname) {
$files[] = new PhingFile($dir, $fname);
}
} catch (BuildException $be) {
$this->log($be->getMessage(), Project::MSG_WARN);
}
}
}
$this->log("Applying reflexive processing to " . count($files) . " files.");
// These "slots" allow filters to retrieve information about the currently-being-process files
$slot = $this->getRegisterSlot("currentFile");
$basenameSlot = $this->getRegisterSlot("currentFile.basename");
foreach ($files as $file) {
// set the register slots
$slot->setValue($file->getPath());
$basenameSlot->setValue($file->getName());
// 1) read contents of file, pulling through any filters
$in = null;
try {
$contents = "";
$in = FileUtils::getChainedReader(new FileReader($file), $this->filterChains, $this->project);
while (-1 !== ($buffer = $in->read())) {
$contents .= $buffer;
}
$in->close();
} catch (Exception $e) {
if ($in) {
$in->close();
}
$this->log("Erorr reading file: " . $e->getMessage(), Project::MSG_WARN);
}
try {
// now create a FileWriter w/ the same file, and write to the file
$out = new FileWriter($file);
$out->write($contents);
$out->close();
$this->log("Applying reflexive processing to " . $file->getPath(), Project::MSG_VERBOSE);
} catch (Exception $e) {
if ($out) {
$out->close();
}
$this->log("Error writing file back: " . $e->getMessage(), Project::MSG_WARN);
}
}
}
示例3: addProperty
/**
* add a name value pair to the project property set
* @param string $name name of property
* @param string $value value to set
*/
protected function addProperty($name, $value)
{
if (count($this->filterChains) > 0) {
$in = FileUtils::getChainedReader(new StringReader($value), $this->filterChains, $this->project);
$value = $in->read();
}
if ($this->userProperty) {
if ($this->project->getUserProperty($name) === null || $this->override) {
$this->project->setInheritedProperty($name, $value);
} else {
$this->log("Override ignored for " . $name, Project::MSG_VERBOSE);
}
} else {
if ($this->override) {
$this->project->setProperty($name, $value);
} else {
$this->project->setNewProperty($name, $value);
}
}
}
示例4: appendFile
private function appendFile(FileWriter $writer, PhingFile $f)
{
$in = FileUtils::getChainedReader(new FileReader($f), $this->filterChains, $this->project);
while (-1 !== ($buffer = $in->read())) {
// -1 indicates EOF
$writer->write($buffer);
}
$this->log("Appending contents of " . $f->getPath() . " to " . $this->to->getPath());
}
示例5: main
/**
* Main method
*
* @return void
* @throws BuildException
*/
public function main()
{
if (empty($this->file)) {
throw new BuildException("Attribute 'file' required", $this->getLocation());
}
if (empty($this->property)) {
throw new BuildException("Attribute 'property' required", $this->getLocation());
}
// read file (through filterchains)
$contents = "";
$reader = FileUtils::getChainedReader(new FileReader($this->file), $this->filterChains, $this->project);
while (-1 !== ($buffer = $reader->read())) {
$contents .= $buffer;
}
$reader->close();
// publish as property
$this->project->setProperty($this->property, $contents);
}
示例6: main
/**
* Main method
*
* @return void
* @throws BuildException
*/
public function main()
{
if (empty($this->file)) {
throw new BuildException("Attribute 'file' required", $this->getLocation());
}
if (empty($this->property)) {
throw new BuildException("Attribute 'property' required", $this->getLocation());
}
if ($this->quiet && $this->failOnError) {
throw new BuildException("quiet and failonerror cannot both be set to true");
}
try {
if (is_string($this->file)) {
$this->file = new PhingFile($this->file);
}
if (!$this->file->exists()) {
$message = (string) $this->file . ' doesn\'t exist';
if ($this->failOnError) {
throw new BuildException($message);
} else {
$this->log($message, $this->quiet ? Project::MSG_WARN : Project::MSG_ERR);
return;
}
}
$this->log("loading " . (string) $this->file . " into property " . $this->property, Project::MSG_VERBOSE);
// read file (through filterchains)
$contents = "";
if ($this->file->length() > 0) {
$reader = FileUtils::getChainedReader(new FileReader($this->file), $this->filterChains, $this->project);
while (-1 !== ($buffer = $reader->read())) {
$contents .= $buffer;
}
$reader->close();
} else {
$this->log("Do not set property " . $this->property . " as its length is 0.", $this->quiet ? Project::MSG_VERBOSE : Project::MSG_INFO);
}
// publish as property
if ($contents !== '') {
$this->project->setNewProperty($this->property, $contents);
$this->log("loaded " . strlen($contents) . " characters", Project::MSG_VERBOSE);
$this->log($this->property . " := " . $contents, Project::MSG_DEBUG);
}
} catch (IOException $ioe) {
$message = "Unable to load resource: " . $ioe->getMessage();
if ($this->failOnError) {
throw new BuildException($message, $ioe, $this->getLocation());
} else {
$this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_ERR);
}
} catch (BuildException $be) {
if ($this->failOnError) {
throw $be;
} else {
$this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_ERR);
}
}
}
示例7: getFilteredReader
private function getFilteredReader(Reader $r)
{
$helper = FileUtils::getChainedReader($r, $this->filterChains, $this->getProject());
return $helper;
}