Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Не работает замыкание в static массиве в классе
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56





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){

Если массив вынесу за пределы класса - все работает!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11933
Пользователь №: 23195
На форуме: 6 лет, 10 месяцев, 2 дня
Карма: 435

Трезвый :
7 лет, 9 месяцев, 1 день




--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1908
Пользователь №: 38654
На форуме: 3 года, 4 месяца, 23 дня
Карма: 43




объявление функций в свойствах? oh my god, why?


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3661
Пользователь №: 38635
На форуме: 3 года, 4 месяца, 29 дней
Карма: 194




Цитата (chee @ 26.10.2015 - 15:58)
объявление функций в свойствах? oh my god, why?

Потому что он может smile.gif


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56




AllesKlar
Кстати - аргумент
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56




chee
Какие у тебя с этим проблемы?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56




Invis1ble
про final понял! Но без него все-равно не работает. Нафига тогда замыкания то?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11933
Пользователь №: 23195
На форуме: 6 лет, 10 месяцев, 2 дня
Карма: 435

Трезвый :
7 лет, 9 месяцев, 1 день


Цитата (Zzepish @ 26.10.2015 - 23:41)
про final понял! Но без него все-равно не работает.

там вообще-то выше еще одна ссылочка у меня в посте


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1908
Пользователь №: 38654
На форуме: 3 года, 4 месяца, 23 дня
Карма: 43




Цитата (Zzepish @ 26.10.2015 - 22:09)

Какие у тебя с этим проблемы?

ну это у тебя с этим проблемы, я не объявляю в свойствах классов анонимные функции, потому что знаю что это приведет к фатальной ошибке. Если ты читал бы, то что тебе кинул Invis1ble, то увидел бы это
Цитата
Это описание может содержать инициализацию, но инициализация должна применяться для константных значений - то есть, переменные должны быть вычислены во время компиляции и не должны зависеть от информации программы во время выполнения для их вычисления.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56




Шикарное решение мне подсказал volter_9! за что ему огромная благодарность!
так-же спасибо Инфизу
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1908
Пользователь №: 38654
На форуме: 3 года, 4 месяца, 23 дня
Карма: 43




Zzepish, ну дак что за решение то?


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1281
Пользователь №: 41686
На форуме: 1 год, 9 месяцев, 17 дней
Карма: 23




да, решение в студию!

P.s. А ТС, однако, не ищет легких путей! )))


--------------------
5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56




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);
}
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 5 лет
Карма: 56




Ron
Это самый легкий путь) создать унифицированную систему) теперь можно тупо добавлять методы, и юзать их)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1784
Пользователь №: 20757
На форуме: 7 лет, 3 месяца, 24 дня
Карма: 186




Зачем $this
'name' => [$this, 'validateName'],

если
public static function validateName($data)

?
Вместо этого, что-то типа:
'name' => [static::class, 'validateName'],
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса