Merge branch 'master' into mongo
This commit is contained in:
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* @copyright NetMonsters <team@netmonsters.ru>
|
* @copyright NetMonsters <team@netmonsters.ru>
|
||||||
* @link
|
* @link
|
||||||
* @package Kuperauto
|
* @package Majestic
|
||||||
* @subpackage face
|
* @subpackage face
|
||||||
* @since
|
* @since
|
||||||
* @version SVN: $Id$
|
* @version SVN: $Id$
|
||||||
|
@ -13,7 +13,7 @@ class CliLogger extends Logger
|
|||||||
protected function concreteLog($message)
|
protected function concreteLog($message)
|
||||||
{
|
{
|
||||||
// Заменяем окончания строк на их символы
|
// Заменяем окончания строк на их символы
|
||||||
$message = str_replace(array("\r\n"), array(PHP_EOL), $message);
|
$message = str_replace(array("\r", "\n"), array('\r', '\n'), $message);
|
||||||
$out = microtime(true) . " \t: " . $this->pid . trim($message) . PHP_EOL;
|
$out = microtime(true) . " \t: " . $this->pid . trim($message) . PHP_EOL;
|
||||||
print($out);
|
print($out);
|
||||||
}
|
}
|
||||||
|
@ -12,24 +12,31 @@ abstract class Logger
|
|||||||
{
|
{
|
||||||
|
|
||||||
protected static $_instance = null;
|
protected static $_instance = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pid текущего процесса
|
* pid текущего процесса
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $pid = '';
|
protected $pid = '';
|
||||||
|
|
||||||
protected function __construct() {}
|
protected function __construct()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @static
|
||||||
|
* @return Logger
|
||||||
|
*/
|
||||||
public static function getInstance()
|
public static function getInstance()
|
||||||
{
|
{
|
||||||
if(static::$_instance === null) {
|
if (static::$_instance === null) {
|
||||||
//$class = get_called_class();
|
//$class = get_called_class();
|
||||||
$class = Config::get('Logger')->logger;
|
$class = Config::get('Logger')->logger;
|
||||||
static::$_instance = new $class();
|
static::$_instance = new $class();
|
||||||
}
|
}
|
||||||
return static::$_instance;
|
return static::$_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Вывод лога
|
* Вывод лога
|
||||||
* @param string $message Сообщение
|
* @param string $message Сообщение
|
||||||
@ -53,5 +60,4 @@ abstract class Logger
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract protected function concreteLog($message);
|
abstract protected function concreteLog($message);
|
||||||
|
|
||||||
}
|
}
|
@ -12,6 +12,8 @@ class MongoCommandBuilder
|
|||||||
|
|
||||||
const FIND = 'Find';
|
const FIND = 'Find';
|
||||||
|
|
||||||
|
const COUNT = 'Count';
|
||||||
|
|
||||||
const INSERT = 'Insert';
|
const INSERT = 'Insert';
|
||||||
|
|
||||||
const UPDATE = 'Update';
|
const UPDATE = 'Update';
|
||||||
@ -68,9 +70,9 @@ abstract class MongoDbCommand
|
|||||||
|
|
||||||
class FindMongoCommand extends MongoDbCommand
|
class FindMongoCommand extends MongoDbCommand
|
||||||
{
|
{
|
||||||
protected $condition;
|
protected $condition = array();
|
||||||
|
|
||||||
protected $fields;
|
protected $fields = array();
|
||||||
|
|
||||||
protected $multiple = true;
|
protected $multiple = true;
|
||||||
|
|
||||||
@ -95,11 +97,12 @@ class FindMongoCommand extends MongoDbCommand
|
|||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
if ($this->checkParams()) {
|
if ($this->checkParams()) {
|
||||||
$result = 'Collection: ' . $this->collection . PHP_EOL;
|
$result = PHP_EOL . 'Collection: ' . $this->collection . PHP_EOL;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->condition);
|
var_dump($this->condition);
|
||||||
$condition = ob_get_clean();
|
$condition = ob_get_clean();
|
||||||
$result .= 'Condition: ' . $condition . PHP_EOL;
|
$result .= 'Condition: ' . $condition;
|
||||||
|
$result .= 'Type: FIND' . PHP_EOL;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->fields);
|
var_dump($this->fields);
|
||||||
$fields = ob_get_clean();
|
$fields = ob_get_clean();
|
||||||
@ -113,6 +116,48 @@ class FindMongoCommand extends MongoDbCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CountMongoCommand extends MongoDbCommand
|
||||||
|
{
|
||||||
|
protected $condition = array();
|
||||||
|
|
||||||
|
protected $limit = 0;
|
||||||
|
|
||||||
|
protected $skip = 0;
|
||||||
|
|
||||||
|
protected $multiple = true;
|
||||||
|
|
||||||
|
protected function concreteExecute()
|
||||||
|
{
|
||||||
|
return $this->collection->count($this->condition, $this->limit, $this->skip);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function checkParams()
|
||||||
|
{
|
||||||
|
if (isset($this->collection) && isset($this->condition) && isset($this->limit) && isset($this->skip)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
if ($this->checkParams()) {
|
||||||
|
$result = PHP_EOL . 'Collection: ' . $this->collection . PHP_EOL;
|
||||||
|
$result .= 'Type: COUNT' . PHP_EOL;
|
||||||
|
ob_start();
|
||||||
|
var_dump($this->condition);
|
||||||
|
$condition = ob_get_clean();
|
||||||
|
$result .= 'Condition: ' . $condition;
|
||||||
|
$result .= 'Limit: ' . $this->limit . PHP_EOL;
|
||||||
|
$result .= 'Skip: ' . $this->skip . PHP_EOL;
|
||||||
|
return $result;
|
||||||
|
} else {
|
||||||
|
return 'Command properties not set';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class InsertMongoCommand extends MongoDbCommand
|
class InsertMongoCommand extends MongoDbCommand
|
||||||
{
|
{
|
||||||
protected $data;
|
protected $data;
|
||||||
@ -154,11 +199,12 @@ class InsertMongoCommand extends MongoDbCommand
|
|||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
if ($this->checkParams()) {
|
if ($this->checkParams()) {
|
||||||
$result = 'Collection: ' . $this->collection . PHP_EOL;
|
$result = PHP_EOL . 'Collection: ' . $this->collection . PHP_EOL;
|
||||||
|
$result .= 'Type: INSERT' . PHP_EOL;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->data);
|
var_dump($this->data);
|
||||||
$data = ob_get_clean();
|
$data = ob_get_clean();
|
||||||
$result .= 'Data: ' . $data . PHP_EOL;
|
$result .= 'Data: ' . $data;
|
||||||
$mult = $this->multiple ? 'TRUE' : 'FALSE';
|
$mult = $this->multiple ? 'TRUE' : 'FALSE';
|
||||||
$result .= 'Bulk insert: ' . $mult . PHP_EOL;
|
$result .= 'Bulk insert: ' . $mult . PHP_EOL;
|
||||||
$safe = $this->safe ? 'TRUE' : 'FALSE';
|
$safe = $this->safe ? 'TRUE' : 'FALSE';
|
||||||
@ -202,15 +248,16 @@ class UpdateMongoCommand extends MongoDbCommand
|
|||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
if ($this->checkParams()) {
|
if ($this->checkParams()) {
|
||||||
$result = 'Collection: ' . $this->collection . PHP_EOL;
|
$result = PHP_EOL . 'Collection: ' . $this->collection . PHP_EOL;
|
||||||
|
$result .= 'Type: UPDATE' . PHP_EOL;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->condition);
|
var_dump($this->condition);
|
||||||
$condition = ob_get_clean();
|
$condition = ob_get_clean();
|
||||||
$result .= 'Condition: ' . $condition . PHP_EOL;
|
$result .= 'Condition: ' . $condition;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->data);
|
var_dump($this->data);
|
||||||
$data = ob_get_clean();
|
$data = ob_get_clean();
|
||||||
$result .= 'Data: ' . $data . PHP_EOL;
|
$result .= 'Data: ' . $data;
|
||||||
$mult = $this->multiple ? 'TRUE' : 'FALSE';
|
$mult = $this->multiple ? 'TRUE' : 'FALSE';
|
||||||
$result .= 'Multiple fields: ' . $mult . PHP_EOL;
|
$result .= 'Multiple fields: ' . $mult . PHP_EOL;
|
||||||
$upsert = $this->upsert ? 'TRUE' : 'FALSE';
|
$upsert = $this->upsert ? 'TRUE' : 'FALSE';
|
||||||
@ -247,11 +294,12 @@ class RemoveMongoCommand extends MongoDbCommand
|
|||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
if ($this->checkParams()) {
|
if ($this->checkParams()) {
|
||||||
$result = 'Collection: ' . $this->collection . PHP_EOL;
|
$result = PHP_EOL . 'Collection: ' . $this->collection . PHP_EOL;
|
||||||
|
$result .= 'Type: REMOVE' . PHP_EOL;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->condition);
|
var_dump($this->condition);
|
||||||
$condition = ob_get_clean();
|
$condition = ob_get_clean();
|
||||||
$result .= 'Condition: ' . $condition . PHP_EOL;
|
$result .= 'Condition: ' . $condition;
|
||||||
$safe = $this->safe ? 'TRUE' : 'FALSE';
|
$safe = $this->safe ? 'TRUE' : 'FALSE';
|
||||||
$result .= 'Safe operation: ' . $safe . PHP_EOL;
|
$result .= 'Safe operation: ' . $safe . PHP_EOL;
|
||||||
return $result;
|
return $result;
|
||||||
@ -287,11 +335,12 @@ class CommandMongoCommand extends MongoDbCommand
|
|||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
if ($this->checkParams()) {
|
if ($this->checkParams()) {
|
||||||
$result = 'Collection: ' . $this->collection . PHP_EOL;
|
$result = PHP_EOL . 'Collection: ' . $this->collection . PHP_EOL;
|
||||||
|
$result .= 'Type: COMMAND' . PHP_EOL;
|
||||||
ob_start();
|
ob_start();
|
||||||
var_dump($this->command);
|
var_dump($this->command);
|
||||||
$command = ob_get_clean();
|
$command = ob_get_clean();
|
||||||
$result .= 'Command: ' . $command . PHP_EOL;
|
$result .= 'Command: ' . $command;
|
||||||
return $result;
|
return $result;
|
||||||
} else {
|
} else {
|
||||||
return 'Command properties not set';
|
return 'Command properties not set';
|
||||||
|
@ -28,7 +28,14 @@ class MongoDriver extends NoSqlDbDriver
|
|||||||
|
|
||||||
public function count($collection, $query = array(), $limit = 0, $skip = 0)
|
public function count($collection, $query = array(), $limit = 0, $skip = 0)
|
||||||
{
|
{
|
||||||
return $this->getCollection($collection)->count($query, $limit, $skip);
|
$command = MongoCommandBuilder::factory(MongoCommandBuilder::COUNT, $this->getCollection($collection));
|
||||||
|
$params = array(
|
||||||
|
'condition' => $query,
|
||||||
|
'limit' => $limit,
|
||||||
|
'skip' => $skip
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this->query($command, $params)->affectedRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function find($collection, $condition = array(), $fields = array())
|
public function find($collection, $condition = array(), $fields = array())
|
||||||
|
@ -25,12 +25,6 @@ class RedisDebug
|
|||||||
{
|
{
|
||||||
$command = $this->r_implode(', ', $arguments);
|
$command = $this->r_implode(', ', $arguments);
|
||||||
$profiler = Profiler::getInstance()->profilerCommand('Redis->' . $name, $command);
|
$profiler = Profiler::getInstance()->profilerCommand('Redis->' . $name, $command);
|
||||||
|
|
||||||
$search = array_search($name, get_class_methods($this->redis));
|
|
||||||
|
|
||||||
if (empty($search)) {
|
|
||||||
throw new GeneralException('undefined method:'.$name);
|
|
||||||
}
|
|
||||||
$data = call_user_func_array(array($this->redis, $name), $arguments);
|
$data = call_user_func_array(array($this->redis, $name), $arguments);
|
||||||
$profiler->end();
|
$profiler->end();
|
||||||
return $data;
|
return $data;
|
||||||
|
50
redis/redis.php
Normal file
50
redis/redis.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @copyright NetMonsters <team@netmonsters.ru>
|
||||||
|
* @link http://netmonsters.ru
|
||||||
|
* @package Majestic
|
||||||
|
* @subpackage Redis
|
||||||
|
* @since 2011-05-17
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redis stub for https://github.com/nicolasff/phpredis
|
||||||
|
* @author aterekhov
|
||||||
|
* @see https://github.com/nicolasff/phpredis
|
||||||
|
*
|
||||||
|
* @method bool connect() connect(string $host, int $port = 6379, float $timeout = 0) Connect to redis
|
||||||
|
* @method bool pconnect() connect(string $host, int $port = 6379, float $timeout = 0, string $persistent_id) Connect to redis with reusing connection
|
||||||
|
* @method void close() Close connection to redis
|
||||||
|
* @method bool setOption() setOption(mixed $name, mixed $value) Set client option
|
||||||
|
* @method mixed getOption() getOption(mixed $name) Get client option
|
||||||
|
* @method string ping() ping() Check the current connection status
|
||||||
|
* @method string|bool get() get(string $key) Get the value related to the specified key
|
||||||
|
* @method bool set() set(string $key, mixed $value, int $timeout = null) Set the string value in argument as value of the key
|
||||||
|
* @method bool setex() setex(string $key, int $ttl, mixed $value) Set the string value in argument as value of the key, with a time to live
|
||||||
|
* @method bool setnx() setnx(string $key, int $ttl) Set the string value in argument as value of the key if the key doesn't already exist in the database
|
||||||
|
* @method float delete() delete(mixed $key) Remove specified keys
|
||||||
|
* @method Redis multi() multi(mixed $mode = 1) Enter and exit transactional mode
|
||||||
|
* @method bool exec() exec() Enter and exit transactional mode
|
||||||
|
* @method void watch() watch(mixed $keys) Watches a key for modifications by another client
|
||||||
|
* @method void unwatch() unwatch(mixed $keys) Watches a key for modifications by another client
|
||||||
|
* @method void subscribe() subscribe(array $channels, mixed $callback) Subscribe to channels. Warning: this function will probably change in the future
|
||||||
|
* @method void publish() publish(string $channel, string $message) Publish messages to channels. Warning: this function will probably change in the future
|
||||||
|
* @method bool exists() exists(string $key) Verify if the specified key exists
|
||||||
|
* @method int incr() incr(string $key) Increment the number stored at key by one
|
||||||
|
* @method int incrBy() incrBy(string $key, int $value) Increment the number stored at key by $value
|
||||||
|
*
|
||||||
|
* @method bool expire() expire(string $key, int $ttl) Sets an expiration date (a timeout) on an item
|
||||||
|
*
|
||||||
|
* @method float zAdd() zAdd(string $key, float $score, string $value) Adds the specified member with a given score to the sorted set stored at key
|
||||||
|
* @method array zRange() zRange(string $key, float $start, float $end, bool $with_scores = false) Returns a range of elements from the ordered set stored at the specified key, with values in the range [start, end]
|
||||||
|
* @method array zRevRange() zRevRange(string $key, float $start, float $end, bool $with_scores = false) Returns a range of elements from the ordered set stored at the specified key, with values in the range [start, end]
|
||||||
|
* @method float zCard() zCard(string $key) Returns the cardinality of an ordered set
|
||||||
|
* @method float zUnionStore() zUnionStore(string $destination, array $keys, array $weights = array(), string $aggregate = 'sum') Creates an union of sorted sets given in second argument and store in in first argument
|
||||||
|
* @method float zInterStore() zInterStore(string $destination, array $keys, array $weights = array(), string $aggregate = 'sum') Creates an intersection of sorted sets given in second argument and store in in first argument
|
||||||
|
*/
|
||||||
|
class Redis
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
@ -42,6 +42,7 @@ class LoadTest extends PHPUnit_Framework_TestCase
|
|||||||
self::$autoload_array = array('Db' => '/lib/core/model/Db.php', 'DbDriver' => '/lib/core/model/DbDriver.php');
|
self::$autoload_array = array('Db' => '/lib/core/model/Db.php', 'DbDriver' => '/lib/core/model/DbDriver.php');
|
||||||
|
|
||||||
vfsStreamWrapper::register();
|
vfsStreamWrapper::register();
|
||||||
|
vfsStream::setup();
|
||||||
$this->root = vfsStream::create(
|
$this->root = vfsStream::create(
|
||||||
array(
|
array(
|
||||||
'lib' => array(
|
'lib' => array(
|
||||||
|
@ -30,6 +30,7 @@ class FileLoggerTest extends PHPUnit_Framework_TestCase
|
|||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
vfsStreamWrapper::register();
|
vfsStreamWrapper::register();
|
||||||
|
vfsStream::setup();
|
||||||
$root = vfsStream::create(array());
|
$root = vfsStream::create(array());
|
||||||
vfsStreamWrapper::setRoot($root);
|
vfsStreamWrapper::setRoot($root);
|
||||||
$this->conf = array('logger' => 'FileLogger', 'filepath' => vfsStream::url('root/log.txt'));
|
$this->conf = array('logger' => 'FileLogger', 'filepath' => vfsStream::url('root/log.txt'));
|
||||||
|
@ -99,12 +99,34 @@ class MongoDbCommandTest extends PHPUnit_Framework_TestCase
|
|||||||
/**
|
/**
|
||||||
* @group Mongo
|
* @group Mongo
|
||||||
*/
|
*/
|
||||||
public function testFindCommandNotAllParamsBinded()
|
public function testCountCommand()
|
||||||
{
|
{
|
||||||
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::FIND, $this->collection);
|
$count_cmd = MongoCommandBuilder::factory(MongoCommandBuilder::COUNT, $this->collection);
|
||||||
$cmd->bindParam('condition', array('name' => 'bread'));
|
$count_cmd->bindParam('condition', array('name' => 'bread'));
|
||||||
$this->setExpectedException('GeneralException', 'FindMongoCommand error. Bind all required params first');
|
$count_result = $count_cmd->execute();
|
||||||
|
$find_cmd = MongoCommandBuilder::factory(MongoCommandBuilder::FIND, $this->collection);
|
||||||
|
$find_cmd->bindParam('condition', array('name' => 'bread'))->bindParam('fields', array());
|
||||||
|
$find_result = $find_cmd->execute();
|
||||||
|
$this->assertEquals(0, $count_result);
|
||||||
|
$this->assertEquals($count_result, $find_result->count());
|
||||||
|
|
||||||
|
|
||||||
|
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::INSERT, $this->collection);
|
||||||
|
$cmd
|
||||||
|
->bindParam('data', array('name' => 'insert'))
|
||||||
|
->bindParam('safe', true);
|
||||||
$cmd->execute();
|
$cmd->execute();
|
||||||
|
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::INSERT, $this->collection);
|
||||||
|
$cmd
|
||||||
|
->bindParam('data', array('name' => 'insert'))
|
||||||
|
->bindParam('safe', true);
|
||||||
|
$cmd->execute();
|
||||||
|
|
||||||
|
$count_cmd->bindParam('condition', array('name' => 'insert'));
|
||||||
|
$this->assertEquals(2, $count_cmd->execute());
|
||||||
|
$find_cmd->bindParam('condition', array('name' => 'insert'));
|
||||||
|
$this->assertEquals($find_cmd->execute()->count(), $count_cmd->execute());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -305,6 +327,14 @@ class MongoDbCommandTest extends PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testToString()
|
public function testToString()
|
||||||
{
|
{
|
||||||
|
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::COUNT, new CollectionMock());
|
||||||
|
$cmd->bindParam('condition', array());
|
||||||
|
$this->assertStringStartsWith('Collection: CollectionMock', $cmd->__toString());
|
||||||
|
|
||||||
|
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::FIND, new CollectionMock());
|
||||||
|
$cmd->bindParam('condition', array());
|
||||||
|
$this->assertStringStartsWith('Collection: CollectionMock', $cmd->__toString());
|
||||||
|
|
||||||
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::COMMAND, new CollectionMock());
|
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::COMMAND, new CollectionMock());
|
||||||
$this->assertSame('Command properties not set', $cmd->__toString());
|
$this->assertSame('Command properties not set', $cmd->__toString());
|
||||||
$cmd->bindParam('command', array());
|
$cmd->bindParam('command', array());
|
||||||
@ -326,8 +356,6 @@ class MongoDbCommandTest extends PHPUnit_Framework_TestCase
|
|||||||
->bindParam('safe', true);
|
->bindParam('safe', true);
|
||||||
$this->assertContains('Bulk insert: TRUE', $cmd->__toString());
|
$this->assertContains('Bulk insert: TRUE', $cmd->__toString());
|
||||||
|
|
||||||
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::FIND, $this->collection);
|
|
||||||
$this->assertSame('Command properties not set', $cmd->__toString());
|
|
||||||
$cmd->bindParam('condition', array('name' => 'insert'))->bindParam('fields', array());
|
$cmd->bindParam('condition', array('name' => 'insert'))->bindParam('fields', array());
|
||||||
$this->assertStringStartsWith('Collection: ', $cmd->__toString());
|
$this->assertStringStartsWith('Collection: ', $cmd->__toString());
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class RedisDebugTest extends PHPUnit_Framework_TestCase
|
|||||||
$mock = $this->getMock('Redis', array('connect'));
|
$mock = $this->getMock('Redis', array('connect'));
|
||||||
$redisDebug = new RedisDebug($mock);
|
$redisDebug = new RedisDebug($mock);
|
||||||
|
|
||||||
$this->setExpectedException('GeneralException');
|
$this->setExpectedException('PHPUnit_Framework_Error', 'call_user_func_array() expects parameter 1 to be a valid callback, class \'Mock_Redis_');
|
||||||
|
|
||||||
$this->assertNull($redisDebug->nothing('localhost', 4322));
|
$this->assertNull($redisDebug->nothing('localhost', 4322));
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,7 @@ class AutoloadBuilderTest extends PHPUnit_Framework_TestCase
|
|||||||
$this->setConstants();
|
$this->setConstants();
|
||||||
$builder = new AutoloadBuilder(self::$file, array(self::$path . '/' . self::$app . '/src', self::$path . '/' . self::$app . '/cache', self::$path . '/lib'));
|
$builder = new AutoloadBuilder(self::$file, array(self::$path . '/' . self::$app . '/src', self::$path . '/' . self::$app . '/cache', self::$path . '/lib'));
|
||||||
|
|
||||||
|
$this->assertFileNotExists(self::$file);
|
||||||
$builder->build();
|
$builder->build();
|
||||||
|
|
||||||
$this->assertFileExists(self::$file);
|
$this->assertFileExists(self::$file);
|
||||||
@ -84,6 +85,8 @@ class AutoloadBuilderTest extends PHPUnit_Framework_TestCase
|
|||||||
$array = require self::$file;
|
$array = require self::$file;
|
||||||
$this->assertInternalType('array', $array);
|
$this->assertInternalType('array', $array);
|
||||||
$this->assertNotEmpty($array);
|
$this->assertNotEmpty($array);
|
||||||
|
$this->assertArrayHasKey('AutoloadBuilder', $array);
|
||||||
|
$this->assertArrayHasKey('Load', $array);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,7 +97,10 @@ class AutoloadBuilderTest extends PHPUnit_Framework_TestCase
|
|||||||
$this->setConstants();
|
$this->setConstants();
|
||||||
|
|
||||||
$this->setExpectedException('PHPUnit_Framework_Error');
|
$this->setExpectedException('PHPUnit_Framework_Error');
|
||||||
|
$this->assertFileNotExists(self::$file);
|
||||||
|
|
||||||
|
touch(self::$file);
|
||||||
|
$this->assertFileExists(self::$file);
|
||||||
chmod(self::$file, 0400);
|
chmod(self::$file, 0400);
|
||||||
$builder = new AutoloadBuilder(self::$file, array(self::$path . '/' . self::$app . '/src', self::$path . '/' . self::$app . '/cache', self::$path . '/lib'));
|
$builder = new AutoloadBuilder(self::$file, array(self::$path . '/' . self::$app . '/src', self::$path . '/' . self::$app . '/cache', self::$path . '/lib'));
|
||||||
|
|
||||||
@ -102,15 +108,6 @@ class AutoloadBuilderTest extends PHPUnit_Framework_TestCase
|
|||||||
chmod(self::$file, 0777);
|
chmod(self::$file, 0777);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown()
|
|
||||||
{
|
|
||||||
// if (defined('PATH')) {
|
|
||||||
// echo PHP_EOL . __CLASS__ . ' ' . PATH . PHP_EOL;
|
|
||||||
// } else {
|
|
||||||
// echo PHP_EOL . __CLASS__ . ' ' . 'PATH NOT DEFINED' . PHP_EOL;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function tearDownAfterClass()
|
public static function tearDownAfterClass()
|
||||||
{
|
{
|
||||||
if (file_exists(self::$file)) {
|
if (file_exists(self::$file)) {
|
||||||
|
@ -28,6 +28,7 @@ class PHPViewTest extends PHPUnit_Framework_TestCase
|
|||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
vfsStreamWrapper::register();
|
vfsStreamWrapper::register();
|
||||||
|
vfsStream::setup();
|
||||||
$root = vfsStream::create(array());
|
$root = vfsStream::create(array());
|
||||||
vfsStreamWrapper::setRoot($root);
|
vfsStreamWrapper::setRoot($root);
|
||||||
$views_dir = vfsStream::newDirectory('views');
|
$views_dir = vfsStream::newDirectory('views');
|
||||||
|
@ -35,7 +35,7 @@ class AutoloadBuilder
|
|||||||
|
|
||||||
public function build()
|
public function build()
|
||||||
{
|
{
|
||||||
$this->openAutoload();
|
$array_string = "<?php\n// This file is autogenerated by \n// " . __FILE__ . " script.\nreturn array(\n";
|
||||||
// for dublicates check
|
// for dublicates check
|
||||||
$classes = array();
|
$classes = array();
|
||||||
foreach ($this->dirs as $dir) {
|
foreach ($this->dirs as $dir) {
|
||||||
@ -65,14 +65,29 @@ class AutoloadBuilder
|
|||||||
if (array_key_exists($match[2], $classes)) {
|
if (array_key_exists($match[2], $classes)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$string = "'{$match[2]}'=>'" . $relative_path . "',\n";
|
$array_string .= "'{$match[2]}'=>'" . $relative_path . "',\n";
|
||||||
$this->write($string);
|
|
||||||
$classes[$match[2]] = $file->getRealPath();
|
$classes[$match[2]] = $file->getRealPath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->closeAutoload();
|
$array_string .= ');';
|
||||||
|
$this->writeAutoload($array_string);
|
||||||
|
$this->isFileConsistent();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function writeAutoload($string)
|
||||||
|
{
|
||||||
|
file_put_contents($this->autoload, $string);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function isFileConsistent()
|
||||||
|
{
|
||||||
|
$autoload_array = include($this->autoload);
|
||||||
|
if(!is_array($autoload_array)) {
|
||||||
|
unlink($this->autoload);
|
||||||
|
trigger_error("Error while generating autoload file.", E_USER_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function isExcluded($file)
|
protected function isExcluded($file)
|
||||||
@ -85,29 +100,6 @@ class AutoloadBuilder
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected function openAutoload()
|
|
||||||
{
|
|
||||||
$this->write("<?php\n// This file is autogenerated by \n// " . __FILE__ . " script.\nreturn array(\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function closeAutoload()
|
|
||||||
{
|
|
||||||
if ($this->write(');')) {
|
|
||||||
fclose($this->handler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function write($string)
|
|
||||||
{
|
|
||||||
if (!$this->handler) {
|
|
||||||
if (!$this->handler = fopen($this->autoload, 'w')) {
|
|
||||||
trigger_error("{$this->autoload} is not writable", E_USER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (bool) fwrite($this->handler, $string);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function rightSubstr($string, $nchars)
|
protected function rightSubstr($string, $nchars)
|
||||||
{
|
{
|
||||||
$right = substr($string, strlen($string) - $nchars, $nchars);
|
$right = substr($string, strlen($string) - $nchars, $nchars);
|
||||||
|
Reference in New Issue
Block a user