Behavior.php in Drupal 7
File
misc/typo3/phar-stream-wrapper/src/Behavior.php
View source
<?php
namespace TYPO3\PharStreamWrapper;
class Behavior implements Assertable {
const COMMAND_DIR_OPENDIR = 'dir_opendir';
const COMMAND_MKDIR = 'mkdir';
const COMMAND_RENAME = 'rename';
const COMMAND_RMDIR = 'rmdir';
const COMMAND_STEAM_METADATA = 'stream_metadata';
const COMMAND_STREAM_OPEN = 'stream_open';
const COMMAND_UNLINK = 'unlink';
const COMMAND_URL_STAT = 'url_stat';
private $availableCommands = array(
self::COMMAND_DIR_OPENDIR,
self::COMMAND_MKDIR,
self::COMMAND_RENAME,
self::COMMAND_RMDIR,
self::COMMAND_STEAM_METADATA,
self::COMMAND_STREAM_OPEN,
self::COMMAND_UNLINK,
self::COMMAND_URL_STAT,
);
private $assertions;
public function withAssertion(Assertable $assertable) {
$commands = func_get_args();
array_shift($commands);
$this
->assertCommands($commands);
$commands = $commands ?: $this->availableCommands;
$target = clone $this;
foreach ($commands as $command) {
$target->assertions[$command] = $assertable;
}
return $target;
}
public function assert($path, $command) {
$this
->assertCommand($command);
$this
->assertAssertionCompleteness();
return $this->assertions[$command]
->assert($path, $command);
}
private function assertCommands(array $commands) {
$unknownCommands = array_diff($commands, $this->availableCommands);
if (empty($unknownCommands)) {
return;
}
throw new \LogicException(sprintf('Unknown commands: %s', implode(', ', $unknownCommands)), 1535189881);
}
private function assertCommand($command) {
if (in_array($command, $this->availableCommands, true)) {
return;
}
throw new \LogicException(sprintf('Unknown command "%s"', $command), 1535189882);
}
private function assertAssertionCompleteness() {
$undefinedAssertions = array_diff($this->availableCommands, array_keys($this->assertions));
if (empty($undefinedAssertions)) {
return;
}
throw new \LogicException(sprintf('Missing assertions for commands: %s', implode(', ', $undefinedAssertions)), 1535189883);
}
}