Zzepish
26.10.2015 - 16:26
class Validator
{
public static $validation = [
'register' => [
'name' => function($data){
return self::validateName($data);
},
'fio' => function($data){
return self::validateName($data);
}
],
'authorize' =>[
'login' => function($data){
},
]
];
Выдает ошибку
Parse error: syntax error, unexpected 'function' (T_FUNCTION) in C:\Users\Zzepish\Desktop\OpenServer\domains\CMS-for-phone\class\ready\universalValidator.class.php on line 6
т.е. тут: 'name' => function($data){
Если массив вынесу за пределы класса - все работает!
Invis1ble
26.10.2015 - 16:50
объявление функций в свойствах? oh my god, why?
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
AllesKlar
26.10.2015 - 21:03
Цитата (chee @ 26.10.2015 - 15:58) |
объявление функций в свойствах? oh my god, why? |
Потому что он может
_____________
[продано копирайтерам]
Zzepish
26.10.2015 - 22:08
AllesKlar
Кстати - аргумент
Zzepish
26.10.2015 - 22:09
chee
Какие у тебя с этим проблемы?
Zzepish
26.10.2015 - 23:41
Invis1ble
про final понял! Но без него все-равно не работает. Нафига тогда замыкания то?
Invis1ble
26.10.2015 - 23:45
Цитата (Zzepish @ 26.10.2015 - 23:41) |
про final понял! Но без него все-равно не работает. |
там вообще-то выше еще одна ссылочка у меня в посте
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Цитата (Zzepish @ 26.10.2015 - 22:09) |
Какие у тебя с этим проблемы? |
ну это у тебя с этим проблемы, я не объявляю в свойствах классов анонимные функции, потому что знаю что это приведет к фатальной ошибке. Если ты читал бы, то что тебе кинул Invis1ble, то увидел бы это
Цитата |
Это описание может содержать инициализацию, но инициализация должна применяться для константных значений - то есть, переменные должны быть вычислены во время компиляции и не должны зависеть от информации программы во время выполнения для их вычисления. |
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Zzepish
27.10.2015 - 04:29
Шикарное решение мне подсказал volter_9! за что ему огромная благодарность!
так-же спасибо Инфизу
Zzepish, ну дак что за решение то?
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
да, решение в студию!
P.s. А ТС, однако, не ищет легких путей! )))
Zzepish
27.10.2015 - 12:54
cheeСоздать через конструктор объекта переменную с замыканием.
Вот так
<?php
class Validator{
private $validationArray;
public function __construct(){
$this->createValidationArray();
}
private function createValidationArray(){
$this->validationArray = [
'register' => [
'name' => [$this, 'validateName'],
'fio' => [$this, 'validateName'],
'phone' => [$this, 'validatePhone']
]
];
}
public function arrayValidator($data, $compareArrayType = null){
if(count($data)!= count($this->validationArray[$compareArrayType]))
return false;
foreach($data as $key => $value)
if(
!isset($this->validationArray[$compareArrayType]) ||
!$this->validationArray[$compareArrayType][$key]($value)
)
return false;
return true;
}
public static function validateName($data){
return is_string($data);
}
public static function validatePhone($data){
return is_string($data) and preg_match('#^\+[0-9]{2}\([0-9]{3}\)[0-9]{7}$#',$data);
}
}
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.