Вход Регистрация
Файл: gapps/vendor/mockery/mockery/library/Mockery/Recorder.php
Строк: 92
<?php
/**
 * Mockery
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://github.com/padraic/mockery/blob/master/LICENSE
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to padraic@php.net so we can send you a copy immediately.
 *
 * @category   Mockery
 * @package    Mockery
 * @copyright  Copyright (c) 2010-2014 Pádraic Brady (http://blog.astrumfutura.com)
 * @license    http://github.com/padraic/mockery/blob/master/LICENSE New BSD License
 */

namespace Mockery;

class 
Recorder
{

    
/**
     * Mock object on which all recorded interactions will be set as
     * expectations
     *
     * @var object
     */
    
protected $_mock null;

    
/**
     * The subject object whose interactions are being recorded
     *
     * @var object
     */
    
protected $_subject null;

    
/**
     * Flag indicating whether the recording should maintain a strict adherence
     * to the recorded interactions, i.e. the usual Mockery flexibility is
     * suspended, ordering is enforced, and arguments received are set as
     * exact requirements.
     *
     * @var bool
     */
    
protected $_strict false;

    
/**
     * Construct accepting the mock object on which expectations are to be
     * recorded. The second parameter is the subject object, passed into
     * a Mockery::mock() call in the same way as a partial mock requires.
     *
     * @param MockeryMockInterface $mock
     * @param object $subject
     * @return void
     */
    
public function __construct(MockeryMockInterface $mock$subject)
    {
        
$this->_mock $mock;
        
$this->_subject $subject;
    }

    
/**
     * Sets the recorded into strict mode where method calls are more strictly
     * matched against the argument and call count and ordering is also
     * set as enforceable.
     *
     * @return void
     */
    
public function shouldBeStrict()
    {
        
$this->_strict true;
    }

    
/**
     * Intercept all calls on the subject, and use the call details to create
     * a new expectation. The actual return value is then returned after being
     * recorded.
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    
public function __call($method, array $args)
    {
        
$return call_user_func_array(array($this->_subject$method), $args);
        
$expectation $this->_mock->shouldReceive($method)->andReturn($return);
        if (
$this->_strict) {
            
$exactArgs = array();
            foreach (
$args as $arg) {
                
$exactArgs[] = Mockery::mustBe($arg);
            }
            
$expectation->once()->ordered();
            
call_user_func_array(array($expectation'with'), $exactArgs);
        } else {
            
call_user_func_array(array($expectation'with'), $args);
        }
        return 
$return;
    }
}
Онлайн: 1
Реклама