2016-12-10 3 views
0

У меня есть следующий класс:PHPT избегает конструктора и целевые функций непосредственно

class Validator { 
public function __construct($file){     
    $errors = $this->errors($file_array[CSV]['errors']); 
    } 
public function errors_func($errors){ 
    if($errors != 0){ 
    throw new Exception('Error Uploading'); 
    } 
} 
} 

Я пытающийся целевой функция errors_func() непосредственно через мой тестовый скрипт без необходимости сначала вызывать конструктор. Тестовый скрипт PHPT можно увидеть ниже:

--TEST-- 
check_mime() function - A basic test to see if check mime works. :) 
--FILE-- 

    <?php 
    require_once('my/path'); 
    $valid = new Validation; 
    $re = $valid->errors_func('1); 
    var_dump($re); 
    ?> 
    --EXPECT-- 
    bool(true) 

Как и следовало ожидать, хотя тестовый скрипт не может becuase параметр, как ожидается, когда объект класса создается. Есть ли способ создать объект класса Validation без необходимости передавать аргумент классу __constructer?

+0

Перепишите свой класс, то –

+0

@u_mulder Приведенный выше пример является очень упрощенной версией класса, к сожалению, я не в состоянии реорганизовать класс –

+0

Тогда вы можете ничего не делай. –

ответ

0

Я нашел решение этого, используя ReflectionClass. Новый тестовый скрипт будет выглядеть следующим образом:

--TEST-- 
check_mime() function - A basic test to see if check mime works. :) 
--FILE-- 

    <?php 
    require_once('my/path'); 
    $valid = new ReflectionClass('Validator'); 
    $valid_direct = $valid->newInstanceWithoutConstructor(); 
    $re = $valid_direct->errors_func('1); 
    var_dump($re); 
    ?> 
    --EXPECT-- 
    bool(true) 
Смежные вопросы