Сегодня мне понадобилось так отредактировать капчу Zend_Captcha, чтобы выводились только цифры. В документации и API ничего подходящего я не нашёл, пришлось изучать исходники. В итоге пришёл к следующей строке:
1 |
Под катом – некоторые разъяснения про внутреннее устройство Zend_Captcha.
На момент написания этой заметки компонент Zend_Captcha содержит пять адаптеров:
- Dumb
- Figlet
- Image
- ReCaptcha
- Word
Все они, за исключением ReCaptcha, являются подклассами Zend_Captcha_Word. Zend_Captcha_Word имеет следующие строки:
1 2 3 4 | static $V = array("a", "e", "i", "o", "u", "y"); static $VN = array("a", "e", "i", "o", "u", "y","2","3","4","5","6","7","8","9"); static $C = array("b","c","d","f","g","h","j","k","m","n","p","q","r","s","t","u","v","w","x","z"); static $CN = array("b","c","d","f","g","h","j","k","m","n","p","q","r","s","t","u","v","w","x","z","2","3","4","5","6","7","8","9"); |
Как мы видим, статичные свойства хранят в себе наборы символов, используемые для формирования текста капчи. Различаются они вот чем:
- $V
- Согласные буквы
- $VN
- Согласные буквы и цифры
- $C
- Гласные буквы
- $CN
- Гласные буквы и цифры
В случае, если использование цифр разрешено, применяются свойства $VN и $CN, иначе – $V и $C. Разрешено ли использование цифр, определяет protected-свойство $_useNumbers, которое установлено в true и не имеет методов для изменения значения. Поэтому мы не берём в расчёт $V и $C – они не используются.
Таким образом, меняя значения свойств $VN и $CN, мы заменяем стандартные наборы символов нужными нам, т.е. цифрами.
Дмитрий says:
Спасибо, пригодилось.
5 декабря 2008, 14:11Сергей Митрошин says:
Пожалуйста
6 декабря 2008, 11:14anderles says:
Спасибо, еще как пригодилось. Нашел просвет в конце тунеля
17 июля 2010, 10:09